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
Microservices Batch on GAE
Search
petitviolet
March 27, 2018
Programming
0
1.9k
Microservices Batch on GAE
Implement microservices architecture batch Scala program on Google AppEngine Standard Environment.
petitviolet
March 27, 2018
Tweet
Share
More Decks by petitviolet
See All by petitviolet
Stripeで請求書払い&銀行振込を実装する
petitviolet
1
1.5k
ピュアなドメインを支える技術/pure domain model and the technology behind it
petitviolet
14
10k
小さく始めるクラウドネイティブ/small start CloudNative
petitviolet
0
1.9k
2019年だからこそ12factor app/The Twelve-Factor app in 2019
petitviolet
1
1k
実践GraphQL on Scala/Real world GraphQL on Scala
petitviolet
8
3.1k
Kubernetesを知る/Introduction Kubernertes
petitviolet
1
650
GraphQL on Scala
petitviolet
3
2.7k
Web API Design
petitviolet
18
8.4k
Property Based Testing introduction
petitviolet
1
130
Other Decks in Programming
See All in Programming
「リーダーは意思決定する人」って本当?~ 学びを現場で活かす、リーダー4ヶ月目の試行錯誤 ~
marina1017
0
240
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
110
Terraform やるなら公式スタイルガイドを読もう 〜重要項目 10選〜
hiyanger
13
3.2k
GUI操作LLMの最新動向: UI-TARSと関連論文紹介
kfujikawa
0
1k
CSC305 Summer Lecture 05
javiergs
PRO
0
110
レガシープロジェクトで最大限AIの恩恵を受けられるようClaude Codeを利用する
tk1351
3
1.2k
Kiroの仕様駆動開発から見えてきたAIコーディングとの正しい付き合い方
clshinji
1
150
なぜ今、Terraformの本を書いたのか? - 著者陣に聞く!『Terraformではじめる実践IaC』登壇資料
fufuhu
4
660
tool ディレクティブを導入してみた感想
sgash708
1
150
AIエージェント開発、DevOps and LLMOps
ymd65536
1
350
兎に角、コードレビュー
mitohato14
0
150
STUNMESH-go: Wireguard NAT穿隧工具的源起與介紹
tjjh89017
0
390
Featured
See All Featured
Music & Morning Musume
bryan
46
6.7k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
The Language of Interfaces
destraynor
160
25k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
Git: the NoSQL Database
bkeepers
PRO
431
65k
Balancing Empowerment & Direction
lara
2
590
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
Code Reviewing Like a Champion
maltzj
525
40k
A designer walks into a library…
pauljervisheath
207
24k
KATA
mclloyd
32
14k
GitHub's CSS Performance
jonrohan
1031
460k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Transcript
("&Ͱ.JDSPTFSWJDFTͳόον 'SJOHF$P -UE )JSPLJ,PNVSBTBLJ!QFUJUWJPMFU
ࣗݾհ w খࢵ߂و )JSPLJ,PNVSBTBLJ w ΠϯλʔωοτͰ!QFUJUWJPMFU w αʔόαΠυΤϯδχΞ! w
͜ͷ͘Β͍͍͍ͩͨ4DBMBॻ͍ͯΔ
͜ͷลͷͰ͢
ࠓ͢͜ͱ͞ͳ͍͜ͱ ͢͜ͱ w ("& 5BTL2VFVF 4DBMBͰόονΛ࡞Δ w ओʹΞʔΩςΫνϟతͳઓུ ͞ͳ͍͜ͱ w
("& 5BTL2VFVFͷࡉ͔͍ w 4DBMBͷ࣮ςΫχοΫ
ࠓ͢͜ͱ͞ͳ͍͜ͱ ͢͜ͱ w ("& 5BTL2VFVF 4DBMBͰόονΛ࡞Δ w ओʹΞʔΩςΫνϟతͳઓུ ͞ͳ͍͜ͱ w
("& 5BTL2VFVFͷࡉ͔͍ w 4DBMBͷ࣮ςΫχοΫ
όονʁ
όονʁ ϓϩάϥϜ܈Λॲཧత͝ͱʹ۠Γɺ͜ͷ۠ Γຖʹॱ࣮࣍ߦͯ͠Ώ͘ॲཧͷ͜ͱ XJLJQFEJB ཁ͢ΔʹɺԿ͔͠ΒͷॲཧΛॱ࣮࣍ߦ͢Δ͜ͱ
όονͷ͋Δ͋Δ Α͋͘Δ݅ҎԼͷΑ͏ͳͷ w ఆظ࣮ߦ DSPO w σʔλΛཷΊͯ·ͱΊͯॲཧ w FUD
όονͷΘ͕·· w ىಈ࣌Ҏ֎͓͔͚ۚͨ͘ͳ͍ w ίέͨΒࣗಈͰϦτϥΠ͍ͨ͠ w σʔλ͕૿͑ͨΒΦʔτεέʔϧ͍ͤͨ͞
ͦΕɺ("&Ͱग़དྷΔΑ
("& w (PPHMF"QQ&OHJOF w ͍ΘΏΔ1BB4 w \4UBOEBSE 'MFYJCMF^&OWJSPONFOUͷछྨ w 4&੍ݶ͕ݫ͍͕͠ӡ༻͓ͤ
w '&੍ݶ͕؇͍͕ӡ༻खಈ
("& ϑϨΩγϒϧڥɺελϯμʔυڥΛิ͢ Δ͜ͱΛతͱ͍ͯ͠·͢ɻ IUUQTDMPVEHPPHMFDPNBQQFOHJOFEPDTqFYJCMFKBWBqFYJCMFGPSTUBOEBSEVTFST IMKB جຊ4&Λݕ౼͠ɺμϝͬΆ͍ͳΒ'&ʹ͢Δ
("& ϑϨΩγϒϧڥɺελϯμʔυڥΛิ͢ Δ͜ͱΛతͱ͍ͯ͠·͢ɻ IUUQTDMPVEHPPHMFDPNBQQFOHJOFEPDTqFYJCMFKBWBqFYJCMFGPSTUBOEBSEVTFST IMKB جຊ4&Λݕ౼͠ɺμϝͬΆ͍ͳΒ'&ʹ͢Δ ΠϯελϯελΠϓͰεέʔϧઓུΛม͑ΒΕΔ w BVUPNBUJDҰ൪͓ͤͰ("&ͬΆ͍ w
CBTJDόονͱ͔ w NBOVBMखӡ༻Ͱ*BB4دΓ
όονͷΘ͕·· w ىಈ࣌Ҏ֎͓͔͚ۚͨ͘ͳ͍ w ("&4&ͳΒ࣮ߦ࣌ؒ՝ۚ w ίέͨΒࣗಈͰϦτϥΠ͍ͨ͠ w w
σʔλ͕૿͑ͨΒΦʔτεέʔϧ͍ͤͨ͞ w
5BTL2VFVF
5BTL2VFVF w ("&ɺಛʹ4&Ͱ؆୯ʹ͑ΔδϣϒΩϡʔ w \1VTI 1VMM $SPO^Ωϡʔͷछྨ͋Δ w ("&αʔϏεؒͷ࿈ܞʹ1VTIΩϡʔ͕ඇৗʹศར w
DSPO͋ΔͷͰόονͷىಈ؆୯ w εςʔλε͕YYͱ͔ͳΒϦτϥΠͯ͘͠ΕΔ
5BTL2VFVF w ઃఆൺֱత୯७Ͱ؆୯ʹ࡞Մೳ w ͜Μͳײ͡ ˡϦτϥΠճͷ্ݶ ˡλεΫͷੜଘ࣌ؒ
όονͷΘ͕·· w ىಈ࣌Ҏ֎͓͔͚ۚͨ͘ͳ͍ w ("&4&ͳΒ࣮ߦ࣌ؒ՝ۚ w ίέͨΒࣗಈͰϦτϥΠ͍ͨ͠ w 5BTL2VFVFʹϦτϥΠػೳ͕͋Δ w
σʔλ͕૿͑ͨΒΦʔτεέʔϧ͍ͤͨ͞ w
όονͷΘ͕·· w ىಈ࣌Ҏ֎͓͔͚ۚͨ͘ͳ͍ w ("&4&ͳΒ࣮ߦ࣌ؒ՝ۚ w ίέͨΒࣗಈͰϦτϥΠ͍ͨ͠ w 5BTL2VFVFʹϦτϥΠػೳ͕͋Δ w
σʔλ͕૿͑ͨΒΦʔτεέʔϧ͍ͤͨ͞ w σʔλগ σʔλଟ
ΦʔτεέʔϧʹΉ͚ͯ w εέʔϧΞοϓ͍ͨ͠ w ("&ͩͱࣗಈͰग़དྷͳ͍ w εέʔϧΞτ͍ͨ͠ w ("&ϦΫΤετ૿ͰεέʔϧΞτ w
σʔλ͕૿͑ΔͱϦΫΤετ͕૿͑ΔΑ͏ ʹ࣮͢Δ
ΦʔτεέʔϧʹΉ͚ͯ w εέʔϧΞοϓ͍ͨ͠ w ("&ͩͱࣗಈͰग़དྷͳ͍ w εέʔϧΞτ͍ͨ͠ w ("&ϦΫΤετ૿ͰεέʔϧΞτ w
σʔλ͕૿͑ΔͱϦΫΤετ͕૿͑ΔΑ͏ ʹ࣮͢Δ
4DBMBͱ("&
4DBMBͱ("& w 'SJOHFͰαʔόαΠυ։ൃʹ4DBMBΛΑ͘͏ w ("&4&ͷ+BWBରԠ݄ w IUUQTDMPVEQMBUGPSNHPPHMFCMPHDPN+BWBPO"QQ&OHJOF4UBOEBSEFOWJSPONFOUJTOPXHFOFSBMMZBWBJMBCMFIUNM w 4&Ͱ+BWB͕ಈ͚4DBMBಈ͘ʂ
4DBMBͰόονॲཧ w 4DBMBඇಉظॲཧϧʔϓॲཧ͕هड़͘͢͠ɺ όονͰ͋Γ͕ͪͳॲཧΛ؆୯ʹॻ͚Δ w 'VUVSFͱ-JTUNBQͷΑ͏ͳ"1*Λ͏ val targets: List[Data] =
??? val resultFutures: List[Future[Result]] = targets map { target => Future { execute(target) } // 何か重い処理を非同期で実行 } val results: Future[List[Result]] = Future.sequence(resultFutures)
͜͜Ͱൃੜ w ("&4&γϯάϧίΞ w ඇಉظॲཧͷޮՌ͕ബ͍ w '&ʹͯ͠ϚϧνίΞʹ͢Δʜ
ίΞ͕Γͳ͚Ε ϚγϯΛ૿͍͍ͤ͡Όͳ͍
5BTL2VFVFΛͬͯίΞΛ૿͢ ϚϧνίΞγϯά ϧίΞ ϚϧνΠϯελϯε w ඇಉظॲཧΛλεΫͱͯ͠5BTL2VFVFQVU͢Δ w \ಉ͡ ผͷ^("&αʔϏεͰड͚औͬͯඇಉظॲཧ w
ϧʔϓॲཧҰͭͣͭผͷλεΫʹ͢Δ 5BTL2VFVF
େ͖ͳόονॲཧΛ খ͞ͳλεΫʹׂͯ͠ ඇಉظʹॲཧ͢Δ
·͞ʹ.JDSPTFSWJDFT
ͪͳΈʹ ("&4&ͩͱϝϞϦͷ࠷େαΠζ͕(#ͳͷͰɺ Լखʹେ͖ͳόονΛಈ͔͢ͱ؆୯ʹ00.͕ى ͖ΔͷͰɺόονΛখׂͤ͘͟͞ΔΛ͑ͳ͍ σʔλଟ
.JDSPTFSWJDFTͳόον όονॲཧΛׂͯ͠ޙଓͷॲཧ5BTL2VFVF Λͬͯܨ͙ 5BTL2VFVF ॲཧରͷ ҰཡΛऔಘ Ұͭͣͭ ॲཧ͢Δ ͞Βʹࡉ͔͘ ॲཧ͢Δ
ͪ߹Θͤͯ ΫϦʔϯΞοϓ ʜ ʜ
όονͷΘ͕·· w ىಈ࣌Ҏ֎͓͔͚ۚͨ͘ͳ͍ w ("&4&ͳΒ࣮ߦ࣌ؒ՝ۚ w ίέͨΒࣗಈͰϦτϥΠ͍ͨ͠ w 5BTL2VFVFʹϦτϥΠػೳ͕͋Δ w
σʔλ͕૿͑ͨΒΦʔτεέʔϧ͍ͤͨ͞ w ࡉ͔͘λεΫʹΓ͚ͯεέʔϧΞτ 5BTL2VFVF
·ͱΊ 4DBMBͰॻ͍ͨόονΛ ("&4&Ͱಈ͔͢ͱͤʹͳΕΔ