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
300
Google Cloud でシンプルなブログサイト Xenn をつくろう / xenn-google-cloud-handson
wadayusuke
3
110
Google Cloud で プロダクト開発 事業として成長させるZennの例 / grows-zenn-with-google-cloud
wadayusuke
3
550
ZennにみるCloudRunとBigQueryによるアプリケーション構築 / zenn-cloudrun-bigquery-serverless
wadayusuke
16
6.5k
Zennを支える Google Cloud の技術
wadayusuke
5
1k
個人ブログサイトを構築して学ぶGraphQL NestJSとNext.js使うよ! / graphql nestjs nextjs bootcamp
wadayusuke
6
3.8k
Step Functions と Lambda Function で組む Athena によるファイル処理 / serverless lightweight etl
wadayusuke
3
3.9k
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
歴史と現在から考えるスケーラブルなソフトウェア開発のプラクティス
i10416
0
300
ドメインイベント増えすぎ問題
h0r15h0
2
570
見えないメモリを観測する: PHP 8.4 `pg_result_memory_size()` とSQL結果のメモリ管理
kentaroutakeda
0
940
『改訂新版 良いコード/悪いコードで学ぶ設計入門』活用方法−爆速でスキルアップする!効果的な学習アプローチ / effective-learning-of-good-code
minodriven
28
4.2k
PHPで作るWebSocketサーバー ~リアクティブなアプリケーションを知るために~ / WebSocket Server in PHP - To know reactive applications
seike460
PRO
2
770
Scaling your build logic
antalmonori
1
100
.NETでOBS Studio操作してみたけど…… / Operating OBS Studio by .NET
skasweb
0
120
PSR-15 はあなたのための ものではない? - phpcon2024
myamagishi
0
400
良いユニットテストを書こう
mototakatsu
11
3.6k
知られざるDMMデータエンジニアの生態 〜かつてツチノコと呼ばれし者〜
takaha4k
1
440
선언형 UI에서의 상태관리
l2hyunwoo
0
270
Flatt Security XSS Challenge 解答・解説
flatt_security
0
730
Featured
See All Featured
The Invisible Side of Design
smashingmag
299
50k
Designing on Purpose - Digital PM Summit 2013
jponch
116
7.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
How to Ace a Technical Interview
jacobian
276
23k
Statistics for Hackers
jakevdp
797
220k
4 Signs Your Business is Dying
shpigford
182
22k
Practical Orchestrator
shlominoach
186
10k
We Have a Design System, Now What?
morganepeng
51
7.3k
The Language of Interfaces
destraynor
155
24k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
How to Think Like a Performance Engineer
csswizardry
22
1.3k
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