Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
クラウドサービスの Web API とそのユースケース #apijp
Search
Naoya Ito
August 29, 2014
Technology
64
31k
クラウドサービスの Web API とそのユースケース #apijp
Naoya Ito
August 29, 2014
Tweet
Share
More Decks by Naoya Ito
See All by Naoya Ito
Functional TypeScript
naoya
12
5.4k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
60
27k
シェルの履歴とイクンリメンタル検索を使う
naoya
7
3k
20230227-engineer-type-talk.pdf
naoya
83
40k
関数型プログラミングと型システムのメンタルモデル
naoya
59
73k
TypeScript による GraphQL バックエンド開発
naoya
27
29k
フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発
naoya
66
23k
「問題から目を背けず取り組む」 一休の開発チームが6年間で学んだこと
naoya
143
58k
一休の現在と、ここまでの道のり
naoya
89
40k
Other Decks in Technology
See All in Technology
透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition
linyows
2
210
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
12k
Terraform Stacks入門 #HashiTalks
msato
0
350
AGIについてChatGPTに聞いてみた
blueb
0
130
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
240
AIチャットボット開発への生成AI活用
ryomrt
0
170
Evangelismo técnico: ¿qué, cómo y por qué?
trishagee
0
360
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.1k
信頼性に挑む中で拡張できる・得られる1人のスキルセットとは?
ken5scal
2
530
障害対応指揮の意思決定と情報共有における価値観 / Waroom Meetup #2
arthur1
5
470
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
3
190
テストコード品質を高めるためにMutation Testingライブラリ・Strykerを実戦導入してみた話
ysknsid25
7
2.6k
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
Scaling GitHub
holman
458
140k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
Transcript
ΫϥυαʔϏεͷ8FC "1*ͱͦͷϢʔεέʔε /BPZB*UP ,"*;&/QMBUGPSN*OD "1*.FFUVQ5PLZP
͓͢Δ༰ • <աڈ>ࢲ͕ݟ͖ͯͨ8FC"1*ͷมભ – ؼணͷͻͱͭŋŋŋ BTB4FSWJDF • <ݱࡏ>ͦΕΛ͏Ϣʔεέʔε • <ະདྷ>8FCγεςϜͷΞʔΩςΫνϟτ Ϩϯυͱ1SPHSBNBCMF8FC
ࢲ͕ݟ͖ͯͨ8FC"1*ͷมભ
8IZͳΜͰͦΜͳ͢Δͷ • ࡢࠓͷ BTB4FSWJDFલʹඳ͍͍ͯͨ ཧతͳϢʔεέʔεͷҰͭ – ʮ͋ʔɺͦ͏ͦ͏ɺ͜Ε͕͔ͨͬͨ͠Μͩʯ – ͦΕΛࢧ͑Δ8FC"1*
• ͜͜ʹࢸΔ·ͰɺͲ͏͍͏มભ͕͔͋ͬͨ – NZQPJOUPGWJFX
ࢲ͕ݟ͖ͯͨ • ͳͷͰɺ#$8FCۀքʹ͕ภͬͯ·͢ɻ ྃ͝ঝ͍ͩ͘͞
͡Ίͯͷ"1* ͜ͷղ૾͔ͬ͠ ͯͳ͍ͬΆ͔ͬͨ͆ ͷࡶࢽ
࣌ͷঢ়گ • ্࢘ʮҏ౻܅ʂ9.-8FCαʔϏεͬͯ ͬͯΔ͔ʁʯ – ଞʹʮҏ౻܅+&&ͬͯʯʮҏ౻܅ϒϩ άͬͯʯͳͲͷύλʔϯ͋Γ ˞͓͔͛Ͱϒϩά։ൃ୲ʹ ͳΕͨͷͰɺΑ্͍࢘Ͱͨ͠
9.-8FCαʔϏε • ۀϩδοΫΛެ։αʔϏεͱͯ͠ɺͦΕΒͷ αʔϏεΛΈ߹ΘͤͯҰͭͷۀΛ࣮ݱ͢ Δŋŋŋ – ྫཱྀߦ༧ϗςϧ ߤۭձࣾ ݸਓܾࡁ –
·ͩ40"ͱ͍͏ݴ༿ฉ͔ͳ͔ͬͨΑ͏ʹهԱ͠ ͍ͯΔ • 40"16%%*84%-ŋŋŋ
ΤϯλʔϓϥΠζ
࣌ࠔͬͨ͜ͱ • 9.-8FCαʔϏε͕όζͬͯΔΒ͍͠ ͚Ͳɺ࣮ྫ͕ݟͨΒͳ͍ – اۀɺۀγεςϜͷόοΫΤϯυͰ ಈ͍͍͔ͯͨ͠Εͳ͍͕Ұൠফඅऀ͔Β ͳ͔ͳ͔ͦΕ͕ݟ͑ͳ͔ͬͨ ࣌ͷࣗʮ40"1ͱ͔ ݬͷٕज़ͳΜͰŋŋŋ ʯ
ࠒ • ্࢘ʮҏ౻܅ʂϒϩάͬͯͬͯΔ͔ʁʯ OBPZBʮʯ
ΊͬͪΌΘΕͯΔΜ ͷ4IJCVZBQNͰͷൃදࢿྉΑΓ
#MPHͷഎޙʹ͋ͬͨ8FC"1* • ʮܰྔͳ8FCαʔϏεʯ – 344ɺ"UPNɺXFCMPH6QEBUFTQJOH • ͻͱ͖ΘΛҾ͍ͨͷ9.-31$ – 40"1ͷॳظͷυϥϑτ͔ΒΠϯεύΠΞ –
40"1ͷΤϯϕϩʔϓϔομͳͲΛऔͬͬͨ ༷ ඪ४ԽWTσϑΝΫτ ࣮ફతͳ8FCαʔϏε
݁Ռɺ8FCۀքͰىͬͨ͜͜ͱ • 8FC ɺ͋ͨΓ – "1*Λެ։͢Δͱ͔͍͍ͬ͜ தೋප
• ͯ͞ɺۀϩδοΫΛެ։͠Α͏ͥͱ͍ͬͯ – 8FCۀքʮۀϩδοΫʯͬͯԿͩ • ଟ͘എޙʹͦΕ΄Ͳ\େ͖͍ ॏཁ^ͳۀΛ͍࣋ͬͯͳ͔ͬͨ • 㱤ϩδοΫͰͳ͘σʔλΛެ։͢Δͱ͍͏ํʹྲྀΕͨ – 8FCۀքʹϝσΟΞاۀ͕ଟ͔ͬͨ͠ – #MPHχϡʔεͷ344ϑΟʔυɺ"NB[PO1SPEVDU "EWFSUJTFNFOU"1*Θ͔Γ͍͢ઌߦࣄྫ
3&45 • લճͷZPIFJ͞Μͷ • ࣌ – ࣮ਥʮ40"1ͱ͔9.-31$ͱ͔ݴ͏͚Ͳɺ݁ ہ9.-Λ)551(&5ͰΑ͘Ͷ ʯ –
ΞʔΩਥʮͦͦͦΕ3FQSFTFOUBUJPOBM TUBUFUSBOTGFSͱݴͬͯͩͳʯ গͳ͘ͱࣗͷपғͰ 3&4540"1ͳͲͱͷ ରൺͷจ຺ͰޠΒΕ࢝Ίͨ
ͦ͏͜͏ͯ͠Δ͏ͪʹ"KBY ʹ##8BUDIʹدߘͨ͠هࣄΑΓ IUUQCCXBUDIJNQSFTTDPKQDEBBMQIBHFFLIUNM
8FC"1*ͷ͜Ε·Ͱͱ͜Ε͔Β "1*NFFUVQ IUUQXXXTMJEFTIBSFOFUZPIFJXFCBQJ
8FC"1*Խ͕ਐΜͩɺ͕ • ʮ 9.- 8FCαʔϏεʯˠʮ8FC"1*ʯ – ͍ͭͷؒʹ͔ϥϕϧมΘͬͯͨ – ʙ͘Β͍
• ʮϚογϡΞοϓʯ – Ͱɺଟ͘ͷྫ˓˓ͱ˚˚ΛҰॹʹදࣔͯ͠Έ·ͨ͠ • શମͱͯ͠σʔλͷެ։ʹ͕͍͔ͬͯͨΒ • ʮۀΛߏங͢Δʯͱ͍͏ΑΓʮσʔλΛΈ߹Θͤͨʯ͚ͩ
αʔϏεͷΈ߹ΘͤͰ ۀΛߏங͢Δ • ʮ9.-8FCαʔϏεʯͷจ຺ͰޠΒΕ͍ͯͨʮ8FC αʔϏεͱ8FCαʔϏεΛΈ߹ΘͤͯۀΛ͙ʯ ͱ͍͏ߟ͑ํؒҧͬͯͳ͍ • 8FCͷ8FC"1*ͳ͔ͳ͔ͦ͜·Ͱ౸ୡͰ͖ͯ ͳ͔ͬͨ
– 5XJUUFS'BDFCPPLͳͲ8FCαʔϏε͕୲ͬͨͷ ίϯςϯπαʔϏεͰ͋Γʮۀͷ෦ʯͱҧͬͨ͠
40"Ͱ࡞ͬͨࣾαʔϏ εɺެ։ͨ͠Α SFG4UFWFZT(PPHMF1MBUGPSNT3BOU IUUQTQMVTHPPHMFDPN 3JQ3PXBOQPTUTF7FPVFTWB79 ͜͜Ͱಥવͷ
αʔϏεͱαʔϏεΛ Έ߹Θͤͯ • ετϨʔδͷ"NB[PO4ͱ˓˓ΛΈ ߹Θͤͯ – ͦΕΒ͕ϓϩάϥϚϒϧ "1*Ͱ ʹૢ࡞Ͱ ͖Δ ʮ8FCΞϓϦέʔγϣ
ϯʯͷ"1*Ͱͳ͍͕ɺ ฆΕͳ͘8FC"1*ʹΑ ΔαʔϏεͰ͋ͬͨ
"84ͱ8FC"1* • "84ͷ֤ίϯϙʔωϯτʮޙ͚Ͱ"1*Խ͞ ΕͨαʔϏεʯͰͳ͘ʮ"1*ͰαʔϏε͢ Δʯ͜ͱΛલఏʹ͞Εͨͷ – 1SPHSBNNBCMFͭʮधཁʯ͕ઌʹ͋ͬͨ – ͦ͏ͦ͏"1*ͬͯ͜Εͷ͜ͱ 8FCαΠτʹޙ͔Β෦తʹ
"1*Λੜ͢ɺͷͰͳ͘จ ࣈ௨Γ"QQMJDBUJPO 1SPHSBNNJOH*OUFSGBDF
ͦͯ͠Ϋϥυͷ࣌ŋŋŋ ˞్தɺ+40/ͱ͔ϞόΠϧͱ͔ιʔγϟϧήʔϜ 0QFO4PDJBM ͱ͔͍Ζ ͍Ζ͋Δ͚ͲׂѪ
BTB4FSWJDF $JSDMF$* $*BTB4FSWJDF
1BSTFDPN NPCJMF#BDLFOEBT B4FSWJDF
4USJQF 1BZNFOU1MBUGPSN BTB4FSWJDF
(PPHMF#JH2VFSZ #JH%BUBBTB4FSWJDF
BTB4FSWJDFͱ8FC"1* • ࡢࠓͷ BTB4FSWJDFͷଟ͘8FC )551 Λհͯ͠αʔϏεΛఏڙ͢Δ • ϓϩάϥϜͷͨΊͷ෦Ͱ͋Δͱ͍͏ੑ্֨ "1*Λ༗͢Δ
BTB4FSWJDFΛۦͯ͠ ۀΛߏங͢Δ ΠϚίί • ྫ1BSTFDPNͰϞόΠϧόοΫΤϯυΛ͍ #JH2VFSZͰϩάղੳͯ͠4USJQFͰ՝ۚ͢Δ • ΫϥυαʔϏεͷ಄ͱ͍͏ܗͰɺ͔ͭͯʮ9.- 8FCαʔϏεʯ͕ࢦ͍ͯͨ͠ੈք͕ݱ࣮ʹͳͬͨ
– 40"16%%*84%-తͳखஈͰͳ͔͕ͬͨɺͦΕΛܨ͍ͩͷ ͕8FC"1* – ˞3&45ɺͱݴͬͯͳ͍ɻ೦ͷͨΊɻ
·͞ʹ͜͜ͷ
ͲΜͳ෩ʹ͍ͬͯΔ͔ Ϣʔεέʔε
NFSHF͞ΕΔͱ ͦΕΛݕͯ͠ɺ ίʔυΛ(JU)VC͔ Βऔಘ มߋ͕ө͞Ε Δ ΠϯϑϥߏͷܧଓతσϦόϦʔ &$ʹରͯ͠ $JSDMF$*͔Β$IFG ద༻
σϦόϦ༻1VMM 3FRVFTU͕࡞͞ ΕΔ νϟοτͰΠϯϑ ϥͷ$IFGίʔυͷ ద༻Λࢦࣔ
νϟοτͰࢦࣔ
σϦόϦʔ༻ 1VMM3FRFTU͕࡞ΒΕΔ σϦόϦʔ༻ϒϥϯ νʹϝΠϯϒϥϯν ΛNFSHF͢Δ
$JSDMF$*͕ݕ࣮ͯ͠ߦ
ؒΛͭͳ͙8FC"1* • 4MBDL"1* – )VCPU͕4MBDL"1*ܦ༝Ͱνϟοτʹৗற • (JU)VC"1* – )VCPU͔Β(JU)VC"1*Ͱ1VMM3FRVFTU࡞ •
$JSDMF$*"1* – (JU)VCͷ8FC)PPLͰ$JSDMF$*௨ • "84 – ߹ʹΑͬͯ "84ͷ"1*ͰߏΛௐ
΄͔ʹ͜Μͳͷ • #VH4OBHŋŋŋ3BJMT+4ͷྫ֎ݕ • 4USJQFŋŋŋܾࡁ • 1BHFS%VUZŋŋŋΠϯϑϥͷΞϥʔτ • 1JOHEPNŋŋŋࢹ •
.BDLFSFMŋŋŋϦιʔεϞχλϦϯά • .BOESJMM.BJM$IJNQŋŋŋϝʔϧ • (PPHMF#JH2VFSZŋŋŋϩάղੳɺ%8) • #SPXTFS4UBDLŋŋŋΫϩεϒϥβςετ • ΄͔ʹŋŋŋ%.1 %BUB.BOBHFNFOU1MBUGPSN ͱ͔ αʔόʔαΠυͷ 3BJMTΞϓϦ͕άϧ ʔ HMVF ʹͳͬͯɺ ۀΛ͙
ൃͷస • ͔ͭͯ – Կ͔ࣗಈԽ͠Α͏͔ͳ – ख࣋ͪͷϥΠϒϥϦɺ044ͳͲΛબࢶʹҊΛ࿅Δ – Α͠ɺίʔυॻ͜͏ •
͍· – Կ͔ࣗಈԽ͠Α͏͔ͳ – ΫϥυαʔϏε୳͢ – ͋ͷαʔϏεͱ͜ͷαʔϏεΛΈ߹Θͤͯŋŋŋ – Α͠ɺίʔυΛॻ͜͏ ʮίϯςϯπͷϚογϡ ΞοϓʯͷΑ͏ͳݶΒΕͨ ঢ়گͰͷࢥߟϓϩηεͩͬ ͨͷ͕ɺͦ͏Ͱͳ͍ঢ়گͰ
8FCγεςϜͷΞʔΩςΫνϟτϨϯ υͱ1SPHSBNNBCMF8FC ͔͜͜Βໝ
ࣗతͳ Ωʔϫʔυ • NJDSPTFSWJDFT • *NNVUBCMF*OGSBTUSVDUVSF "KBY BTB4FSWJDF͕ 8FC"1*ͷൃలΛ֦େͤ͞ ͨΑ͏ʹɺ͜ΕΒͷΩʔ
ϫʔυͦΕΛޙԡ͢͠Δ ༧ײ
NJDSPTFSWJDFT h"p://mar)nfowler.com/ar)cles/microservices.html
NJDSPTFSWJDFT • ϞϊϦγοΫͳ8FCΞϓϦέʔγϣϯ͕Ͱ͔͘ͳΔͱ ϝϯςφϏϦςΟ͕མͪΔ • దͳׂͰ͘͘Γͩͯ͠8FC"1* ͳͲ Ͱܨ͛· ͠ΐ͏ •
ΤϯλʔϓϥΠζग़ͷ40"ʹରͯ͠1SBDUJDBMͳ NJDSPTFSWJDFT – 9.-8FCαʔϏεͱ8FC"1*ʹࣅͯΔ
*NNVUBCMF*OGSBTUSVDUVSF • BLB%JTQPTBCMF$PNQPOFOU – ҰՔಇͤͨ͞αʔόʔೋͱมߋ͠ͳ͍ – ඞཁʹͳͬͨΒ৽͍͠ͷ࡞ͬͯݹ͍ͷࣺͯΔ • ྫ)FSPLVͷίϯςφ
*NNVUBCMF*OGSBTUSVDUVSFͱ8FC ΞϓϦέʔγϣϯͷަՄೳੑ • *NNVUBCMFͦͷ্Ͱಈ͘8FCΞϓϦ࠶ݱՄೳͰ ͳ͚ΕͳΒͳ͍ – ͍ࣺͭͯΒΕͯɺશ͘ಉ͡ߏͰσϓϩΠՄೳʹͳΔͱ͍͏ ͜ͱ – Ωʔ(FNpMFɺ1SPDpMFɺ4IBSFE/PUIJOH
• ࠶ݱՄೳঢ়ଶΛ࣋ͨͳ͍ εςʔτϨε ਓʹͤ Δ
)FSPLV#VUUPO
)FSPLV#VUUPOͷΈ • IFSPLVDPNEFQMPZʹϦϯΫͯ͠Δ • IFSPLVDPNEFQMPZΛ)551(&5͢Δͱɺ ϦϑΝϥ͔Β(JU)VCϨϙδτϦΛಛఆ • BQQKTPOΛಡΈऔΓɺͦΕʹै͍ηογϣϯ ओͷ)FSPLVΞΧϯτʹσϓϩΠ
)FSPLV#VUUPOΛ͋Δ ࢹͰΈΔͱ • 63*Ͱ8FCΞϓϦέʔγϣϯަ – )551(&5ͱ͍͏౷ҰΠϯλϑΣʔεͰΞϓϦέʔ γϣϯͱ͍͏ϦιʔεΛަ͍ͯ͠Δ – *NNVUBCMF*OGSBTUSVDUVSFˠ4UBUFMFTTˠ63* ͕͋ΕɺަͰ͖Δ
1SPHSBNNBCMF8FC ͱͷަ͕ࠩͳΜͱͳ ͘ݟ͖͑ͯ·͢ΑͶ
·ͱΊ • 8FC"1*ɺσʔλΛެ։͢ΔͨΊͷͷ͔Βɺຊདྷ ͷҙຯͷ"1*ʹ • ͔ͭͯʮ9.-8FCαʔϏεʯ͕ࢦ͍ͯͨ͠ੈք͕ ࣮ݱ͞Εͨ ͍ۙͮͨ –
BTB4FSWJDF • 8FCγεςϜͷΞʔΩςΫνϟͷਐԽ͕ࠓޙ͞Βʹͦ ΕΛޙԡ͢͠Δ – NJDSPTFSWJDFT*NNVUBCMF*OGSBTUSVDUVSF
5IBOLT ֆCZ͋ΘΏ͖