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 Scala / play-scala with services
Search
Yusuke Wada
September 29, 2016
Programming
0
590
複数のマイクロサービスと連携した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にみるCloudRunとBigQueryによるアプリケーション構築 / zenn-cloudrun-bigquery-serverless
wadayusuke
14
5.6k
Zennを支える Google Cloud の技術
wadayusuke
4
710
個人ブログサイトを構築して学ぶGraphQL NestJSとNext.js使うよ! / graphql nestjs nextjs bootcamp
wadayusuke
6
3.3k
Step Functions と Lambda Function で組む Athena によるファイル処理 / serverless lightweight etl
wadayusuke
3
3.5k
Deploy production with AWS CDK / 実践プロダクションサーバーレス
wadayusuke
1
4.3k
TypeScriptとJestではじめる AWS製サーバーレス REST API のユニットテスト・E2Eテスト #serverlessfukuoka #serverlessdays / Serverless testing using TypeScript and Jest
wadayusuke
3
9.6k
Webアプリエンジニアに贈る アプリケーション開発におけるサーバーレス流の考え方 / The concept of serverless in application development
wadayusuke
19
9.5k
サーバーレスシステムの複雑化に立ち向かう - IoTを例にみるAWSとDDDを駆使したアプリケーション設計 #serverlesstokyo / Coding, testing, logging pattern for get along with complicated buisiness in serverless application.
wadayusuke
3
3.7k
Akkaちゃんと遊ぼう! Akka Streams で作るリアルタイムサーバ #scalafukuoka / Implement stream server with Akka Streams and WebSocket
wadayusuke
3
3.5k
Other Decks in Programming
See All in Programming
MicrosoftのPlatform Engineeringガイドを読んで実際になにかやってみた
ymd65536
1
340
1BRC--Nerd Sniping the Java Community
gunnarmorling
0
340
二郎系ラーメンのコールで学ぶ AST 解析
memory1994
PRO
7
1.7k
Prepare for Jakarta EE 11 - Performance and Developer Productivity
ivargrimstad
0
820
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
190
Goのmultiple errorsについて (2024年4月版)
syumai
4
920
TCAとKMPを用いた新規動画配信アプリ 「ABEMA Live」の設計
tomu28
1
110
SwiftUIで使いやすいToastの作り方 / How to build a Toast system which is easy to use in SwiftUI
lovee
3
150
Blue/Greenデプロイの導入による 運用フローの改善
kudoas
1
380
Scalable Customer Journey Orchestration (CJO)
lewuathe
0
340
Anthropic Cookbook のおすすめレシピ
schroneko
7
980
DMMプラットフォームがTiDB Cloudを採用した背景
pospome
8
4.1k
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
60
14k
Creatively Recalculating Your Daily Design Routine
revolveconf
210
11k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
It's Worth the Effort
3n
180
27k
Infographics Made Easy
chrislema
238
18k
Designing Experiences People Love
moore
136
23k
Robots, Beer and Maslow
schacon
PRO
155
7.9k
Build The Right Thing And Hit Your Dates
maggiecrowley
24
2k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
19
1.7k
Being A Developer After 40
akosma
57
580k
Design by the Numbers
sachag
274
18k
Why Our Code Smells
bkeepers
PRO
331
56k
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