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の設計と構築 in Playframework ...
Search
Yusuke Wada
September 29, 2016
Programming
0
620
複数のマイクロサービスと連携したWeb APIの設計と構築 in Playframework Scala / play-scala with services
https://eventdots.jp/event/599919
にて発表したスライドです。
Yusuke Wada
September 29, 2016
Tweet
Share
More Decks by Yusuke Wada
See All by Yusuke Wada
ZennにCloudflare WAFを導入してDDoSを防いだ例 / zenn-cloudflare-waf-blocked-ddos
wadayusuke
1
240
Google Cloud でシンプルなブログサイト Xenn をつくろう / xenn-google-cloud-handson
wadayusuke
3
100
Google Cloud で プロダクト開発 事業として成長させるZennの例 / grows-zenn-with-google-cloud
wadayusuke
3
520
ZennにみるCloudRunとBigQueryによるアプリケーション構築 / zenn-cloudrun-bigquery-serverless
wadayusuke
15
6.4k
Zennを支える Google Cloud の技術
wadayusuke
5
990
個人ブログサイトを構築して学ぶGraphQL NestJSとNext.js使うよ! / graphql nestjs nextjs bootcamp
wadayusuke
6
3.7k
Step Functions と Lambda Function で組む Athena によるファイル処理 / serverless lightweight etl
wadayusuke
3
3.8k
Deploy production with AWS CDK / 実践プロダクションサーバーレス
wadayusuke
1
4.6k
TypeScriptとJestではじめる AWS製サーバーレス REST API のユニットテスト・E2Eテスト #serverlessfukuoka #serverlessdays / Serverless testing using TypeScript and Jest
wadayusuke
3
10k
Other Decks in Programming
See All in Programming
103 Early Hints
sugi_0000
1
220
CSC305 Lecture 25
javiergs
PRO
0
130
Recoilを剥がしている話
kirik
5
6.6k
Symfony Mapper Component
soyuka
2
730
useSyncExternalStoreを使いまくる
ssssota
6
1k
Scalaから始めるOpenFeature入門 / Scalaわいわい勉強会 #4
arthur1
1
300
As an Engineers, let's build the CRM system via LINE Official Account 2.0
clonn
1
670
ブラウザ単体でmp4書き出すまで - muddy-web - 2024-12
yue4u
2
460
バグを見つけた?それAppleに直してもらおう!
uetyo
0
180
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
n3xem
2
170
Go の GC の不得意な部分を克服したい
taiyow
2
770
テストケースの名前はどうつけるべきか?
orgachem
PRO
0
130
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
45
7k
Faster Mobile Websites
deanohume
305
30k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
5
440
Typedesign – Prime Four
hannesfritz
40
2.4k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Agile that works and the tools we love
rasmusluckow
328
21k
Transcript
8FC"1*ͷ ઃܭͱߏங JO1MBZGSBNFXPSL4DBMB Ϋϥεϝιουגࣜձࣾɹా༞հ #dots_meetup
• ձࣾ֓ཁ • Ϋϥεϝιουגࣜձࣾ • ʮͯ͢ͷਓʑͷ׆ಈʹߩݙ͠ଓ͚Δʯ • ࣄۀ༰ • "84ίϯαϧςΟϯά
• ϞόΠϧΞϓϦ։ൃ • Ϗοάσʔλੳ • %FWFMPQFST*0ͷϒϩά 2 ձࣾհ
• ໊લɿా༞հ • ܦྺ • ݄ɿभେֶେֶӃଔ • ݄ɿෆಈ࢈͚ΫϥυαʔϏεͷ։ൃձࣾೖࣾ • 8JDLU
+BWB Ͱ8FCΞϓϦͷ։ൃɾอकӡ༻ • ݄ɿΫϥεϝιουגࣜձࣾೖࣾ • ϞόΠϧΞϓϦͷ"1*։ൃΛ୲ 3 ࣗݾհ
ࠓɺϞόΠϧΞϓϦͷόοΫΤϯυ8FC"1*։ൃ ͷɺ͓Ͱ͢
ͳͥࢲͨͪ৽͍ٕ͠ज़ΛٻΊΔͷ͔ • αʔϏεͷ࣭Λ্͍͛ͨ • αʔϏε๊͕͑ΔΛղܾ͍ͨ͠ • ։ൃޮΛ্͍͛ͨ • ୯७ʹָ͍͠ •
นʹͿͪ͋ͨͬͯղܾͨ͠ͱ͖ͷخ͠͞ΛͱΊͯ • ϒϥϯσΟϯάʢձࣾͱͯ͠PSݸਓͱͯ͠ʣ 5
৽ٕज़ͷ࠾༻৽͍͠खஈͷ֫ಘࢿ
ࠓ͢͜ͱ • ͳͥ1MBZGSBNFXPSL4DBMB͔ • ͳʹ͕ͭ͘ΕΔ͔ • ࢿ͢ΔՁ͕͋Δ͔ 7
ͳͥ1MBZ4DBMB͔
4DBMBʁ • 0CKFDU0SJFOUFE.FFUT'VODUJPOBM • 53"*54 • $PNCJOFUIFqFYJCJMJUZPG +BWBTUZMFJOUFSGBDFT XJUIUIFQPXFSPGDMBTTFT 5IJOLQSJODJQMFENVMUJQMFJOIFSJUBODF
• 1"55&3/."5$)*/( • 5IJOLlTXJUDIzPOTUFSPJET .BUDIBHBJOTUDMBTTIJFSBSDIJFT TFRVFODFT BOENPSF 9 The Scala Programming Language http://www.scala-lang.org/
1MBZGSBNFXPSLʁ • %FWFMPQFSGSJFOEMZ • 5ZQFTBGFUZ • #VJMUJOUFTUJOHUPPMT • 4DBMFQSFEJDUBCMZ •
/POCMPDLJOH*0 • #VJMUPO"LLB • .PEFSOXFCNPCJMF • 3&45GVMCZEFGBVMU • +40/JTBpSTUDMBTTDJUJ[FO 10 Play Framework - Build Modern & Scalable Web Apps with Java and Scala https://www.playframework.com/
ฐࣾʹͯ8&#"1*ͷ։ൃͰར༻ • ϞόΠϧόοΫΤϯυͱͯ͠ͷ8FC"1*Λ։ൃ͍ͯ͠·͢ • աڈʹOPEFKTSVCZͰ • ݱࡏ1MBZGSBNFXPSL4DBMB͕ϝΠϯ 11 O’Reilly Japan
- ϚΠΫϩαʔϏεΞʔΩςΫνϟ https://www.oreilly.co.jp/books/9784873117607/
ٕज़ͷબఆͲͷΑ͏ʹߦͬͨͷ͔ • ։ൃ͢ΔγεςϜ͕େنʹͳ͍ͬͯ͘ɺՃ։ൃ͕͋Δͱ ͍͏લఏʹཱͬͯߟ͑ͨ • ύϑΥʔϚϯε • 1MBZ4DBMBWTOPEFKTWT3VCZPO3BJMT • ࣾϕϯνϚʔΫͰ1MBZ4DBMBͷਓউͪ
• େنͳίʔυͷॻ͖͢͞ɾݟ͢͞ • ΦϒδΣΫτࢦͱؔܕͷ͍͍ͱ͜औΓ • Ճɾमਖ਼ͷετϨεܰݮ 12
ͳͥ1MBZGSBNFXPSL4DBMB͔ • ։ൃ໘ • େنɾՃ։ൃͷલఏʹͨͬͨͱ͖ͷϝϯςφϯεੑ • -JOLFE*OΛ͡Ίͱͨ͠େنγεςϜͰͷ࠾༻ࣄྫ͋Γ • ӡ༻໘
• +7. "LLBɻੑೳ͕ظͰ͖Δ • +BWBͰͷӡ༻ݟɾӡ༻πʔϧ͕ྲྀ༻Ͱ͖Δ 13 [*] The Play Framework at LinkedIn | LinkedIn Engineering https://engineering.linkedin.com/play/play- framework-linkedin
ͳʹ͕ͭ͘ΕΔ͔
ঢ়گઃఆ • ϞόΠϧΞϓϦ։ൃҊ݅Λडͨ͠ɻ͓٬༷Ϣʔβاۀ • ཁٻͦͷͷϞόΠϧΞϓϦͱͦͷ$.4ͷ։ൃͰɺ8FC "1*Ұॹʹ։ൃ͢Δ • ͢Ͱʹళฮͷ104ϨδϙʔλϧαΠτ͚ʹՔಇ͍ͯ͠Δ ଞϕϯμͷαʔϏε͕͋Δ •
Ծ௨՟αʔϏεʢίΠϯͷݮࢉɺՃࢉʹରԠʣ • ܠαʔϏεʢܠͷ༩ػೳ͕͋Δʣ 15
ঢ়گઃఆ 16
ͷ͢͢Ίํ • ϞόΠϧόοΫΤϯυͷཁٻʹରͯ͠ɺ1MBZ 4DBMB "84 ΛͬͯͲͷΑ͏ʹઃܭɾ։ൃ͔ͨ͠Λ࣮୲ͷࢹ͔Β ͠·͢ • Ϣʔβొॲཧ •
ଞͷαʔϏεͱ࿈ܞͨ͠ॲཧ • ςετʹΑΔ࣭ͷ্ 17
ͷ͢͢Ίํ • ϞόΠϧόοΫΤϯυͷཁٻʹରͯ͠ɺ1MBZ 4DBMB "84 ΛͬͯͲͷΑ͏ʹઃܭɾ։ൃ͔ͨ͠Λ࣮୲ͷࢹ͔Β ͠·͢ • Ϣʔβొॲཧ •
ଞͷαʔϏεͱ࿈ܞͨ͠ॲཧʢࠓ͜Εʣ • ςετʹΑΔ࣭ͷ্ 18
ίΠϯͱܠΛ ަͰ͖ΔΑ͏ʹͯ͠ɻ
՝ • ୯७ʹίΠϯΛݮΒͯ͠ܠΛ͚ͭΔ͚ͩͰෆे • ͭͷαʔϏεͷؒͰτϥϯβΫγϣϯΛΕͳ͍͜ͱ͕࠷ େͷ՝ 20
ํ • ͍ͪΜආ͚͍ͨঢ়گɺ ίΠϯ͕ݮͬͯɺܠ͕༩Ͱ͖ͳ͍͜ͱɻ ࢭ͢ΔͨΊʹɺ • ίΠϯΛݮΒ͢લʹϩοΫ • ܠ༩ʹࣦഊͨ͠ΒɺϦτϥΠΛ͔͚Δ •
։࢝ɾऴྃϩάΛग़͢ 21
࣮ 22
ॲཧͷϩοΫ • ͍࣌ؒ͘͝ʹɺҙਤͤͣ࿈ଓͯ͠ొϦΫΤετ͕ඈΜͰ ͖ͨ߹ɺσʔλෆ߹͕ൃੜ͢Δ͔͠Εͳ͍ • ϞόΠϧΞϓϦ͚ͩʹ੍ޚΛٻΊΔͷࠅ • ႈੑΛ୲อͰ͖ͳ͍1651045ϦΫΤετΛอޢ͍ͨ͠ • 3FEJTͷTFUOYͷੑ࣭Λར༻ͯ͠ϩοΫΛ࣮ݱ͢Δ
• &MBTUJDBDIFΛར༻͢Δ͜ͱͰϚϧναʔόڥͰͷϩοΫ ػߏ͕࣮ݱͰ͖Δ 23
ϦτϥΠॲཧͷྫ • 424ͰϦτϥΠϝοηʔδΛཧ • ϝοηʔδͷडऔਓͱͳΔϫʔΧʔΛ 1MBZGSBNFXPSLʹಉࠝ͞Ε͍ͯΔ"LLB"DUPSͰ࣮͢Δ • "DUPSࢄγεςϜʹΑΔߴ͍ॲཧੑೳΛތΔ͕ɺࠓճͷέʔ εͰ4VQFSWJTPS4USBUFHZʹΑΔϑΥʔϧττϨϥϯεͷଆ ໘Λॏࢹ
24 Fault Tolerance — Akka Documentation http://doc.akka.io/docs/akka/snapshot/scala/fault-tolerance.html
։࢝ɾऴྃϩάͷྫ • <*/'0>GSPNUSBOTBDUJPOJO5SBOTBDUJPO"DUPS-PHHFSBLLBBDUPSEFGBVMU EJTQBUDIFS USBOTBDUJPOUZQF$PJO&YDIBOHFUSBOTBDUJPOUBH$PJO&YDIBOHF4UBSU USBOTBDUJPOUSBOTBDUJPO)BTI,FZGDEGCCFGC USBOTBDUJPOKTU5SBOTBDUJPO%BUF5JNF5 • <*/'0>GSPNUSBOTBDUJPOJO5SBOTBDUJPO"DUPS-PHHFSBLLBBDUPSEFGBVMU EJTQBUDIFS
USBOTBDUJPOUZQF$PJO&YDIBOHFUSBOTBDUJPOUBH$PJO&YDIBOHF'JOJTI USBOTBDUJPOUSBOTBDUJPO)BTI,FZGDEGCCFGC USBOTBDUJPOQSFTFOU*E& USBOTBDUJPOKTU5SBOTBDUJPO%BUF5JNF5 USBOTBDUJPOSFTVMU4VDDFTTUSBOTBDUJPOOPUF$PJOFYDIBOHFDPNQMFUFEz • "DUPS-PHHJOHͰຊॲཧͷύϑΥʔϚϯεΛམͱͣ͞ඇಉظϩάग़ྗ͕Մೳ 25 Logging (Scala) — Akka Documentation http://doc.akka.io/docs/akka/2.0/scala/logging.html
ͳʹ͕ͭ͘ΕΔ͔ʁ • ෳͷϚΠΫϩαʔϏεͱ࿈ܞͨ͠όοΫΤϯυ • %ZOBNP%#424ҰछͷϚΠΫϩαʔϏε • ඇಉظʹΞΫηεɺཉ͍͠෦Λ౷߹ͯ͠ΫϥΠΞϯτฦ͢ • େنͳ8FC"1* •
σβΠϯύλʔϯ͕ద༻Ͱ͖ΔΫϥεߏ • ؔܕͷ؆͕ܿ͞ద༻Ͱ͖ΔϩδοΫ • ߴՄ༻ΞϓϦέʔγϣϯ • +BWBͷڧྗͳΤίγεςϜͷԸܙʹ͔͋ͣΕΔ • l+7.্Ͱಈ͔͠ଓ͚Δʹzݟ͕ྲྀ༻Մೳ 26
ΞϦ͔ʁφγ͔ʁ
1MBZ4DBMBࢿ͢ΔՁ͕͋Δ͔ʁ • ΞϦʂ • େنʢΤϯυϙΠϯτ͕Ҏ্ʣ • όοΫΤϯυͱͯ͠ͷ"1*։ൃ • +BWB3VCZΤϯδχΞ͕ͦΘͦΘ͍ͯ͠Δ •
ҙʂ • ͪΐͬͱͨ͠αʔϏεΛ࡞ΔఔͰԸܙΛײ͡ͳ͍͔͠Ε·ͤ ΜɻΔͳΒҊ݅ϨϕϧͰɻ৽αʔϏεɺϑϧϦχϡʔΞϧ • ڭҭίετɻΤίγεςϜؚΊ͍ͯ͜ͳͤΔΑ͏ʹͳΔ ఔඞཁɻͰ͖Εઌಋͯ͘͠ΕΔϝϯόʔ͕ډΔͱޮྑ͍ɻ 28
ฐࣾͰ͜ΜͳਓࡐΛืू͍ͯ͠·͢ • ࠷৽ͷٕज़Λ࣮Ҋ݅ੵۃతʹೖ͍ͨ͠ʂ • "84ɺαʔόʔαΠυɺϞόΠϧΞϓϦؔ͢ΔઐతͳΤ ϯδχΞͱҰॹʹಇ͖͍ͨʂ • %FWFMPQFST*0Ͱϒϩάॻ͖͍ͨʂ • εΩϧ
• J04"OESPJE • +BWB4DBMB3VCZ • "84 29
νʔϜମ੍ • J04։ൃਓ • "OESPJE։ൃਓ • ϞόΠϧόοΫΤϯυ։ൃʢ8FC"1* $.4ʣਓ • Ϛωʔδϝϯτɺਐཧਓ
30
ར༻πʔϧ • 4MBDL • ϝϯόʔಉ࢜ͷίϛϡχέʔγϣϯɺ$*௨ɺϩάࢹ௨ • (JU)VC 5SBWJT$* • "OTJCMF
$MPVE'PSNBUJPO • -PHFOUSJFT • %BUBEPH • ;VCF ;FO)VC 31
'"2 • ೖࣾͨ͠Βͦͷٕज़͔Γʁ • ͍͍͑ɺͬͺΓϞόΠϧΞϓϦ࡞Γ͍ͨɺαʔόαΠυ͕Γ ͍ͨɺΞϦͰ͢ɻ࣮ࡍʹҠͬͨΤϯδχΞͨ͘͞Μ͍·͢ • ٕज़ྗߴͦ͏ͳਓ͔ΓͳΠϝʔδʁ • ֤ʑಘखෆಘख͋Γ·͢ɻʮ͜ΕͩͬͨΒ͍͚ͬͯΔ͔ʯͱ
ձࣾઆ໌ձࢀՃͳͬͨ͞ํʑͷײ • ϒϩάͬͯઈରॻ͔ͳ͍ͱ͍͚ͳ͍ͷʁ • ͦΜͳ͜ͱͳ͍Ͱ͢ɻͨͩॻ͖ͨ͘ͳΔෆࢥٞͳνΧϥ͕͜ͷ ձࣾʹ͋Δ 32