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
1k
個人ブログサイトを構築して学ぶ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
DevFest Tokyo 2025 - Flutter のアプリアーキテクチャ現在地点
wasabeef
5
910
htmxって知っていますか?次世代のHTML
hiro_ghap1
0
330
創造的活動から切り拓く新たなキャリア 好きから始めてみる夜勤オペレーターからSREへの転身
yjszk
1
130
PHPで学ぶプログラミングの教訓 / Lessons in Programming Learned through PHP
nrslib
2
230
Итераторы в Go 1.23: зачем они нужны, как использовать, и насколько они быстрые?
lamodatech
0
770
暇に任せてProxmoxコンソール 作ってみました
karugamo
2
720
17年周年のWebアプリケーションにTanStack Queryを導入する / Implementing TanStack Query in a 17th Anniversary Web Application
saitolume
0
250
The Efficiency Paradox and How to Save Yourself and the World
hollycummins
1
440
命名をリントする
chiroruxx
1
410
Keeping it Ruby: Why Your Product Needs a Ruby SDK - RubyWorld 2024
envek
0
190
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
3
280
talk-with-local-llm-with-web-streams-api
kbaba1001
0
180
Featured
See All Featured
Embracing the Ebb and Flow
colly
84
4.5k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Side Projects
sachag
452
42k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
A Tale of Four Properties
chriscoyier
157
23k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Documentation Writing (for coders)
carmenintech
66
4.5k
Automating Front-end Workflow
addyosmani
1366
200k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
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