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
DevOpsDays Tokyo
Search
Genki Sato
April 10, 2019
Technology
2
2.4k
DevOpsDays Tokyo
Genki Sato
April 10, 2019
Tweet
Share
More Decks by Genki Sato
See All by Genki Sato
SRE meetup 20190522
genkist
0
1.3k
レガシーシステムの再構築。システム設計からプロジェクト運用まで赤裸々に
genkist
0
1.8k
Other Decks in Technology
See All in Technology
Snowflake Intelligenceにはこうやって立ち向かう!クラシルが考えるAI Readyなデータ基盤と活用のためのDataOps
gappy50
0
140
ZOZOマッチのアーキテクチャと技術構成
zozotech
PRO
3
1.5k
ChatGPTとPlantUML/Mermaidによるソフトウェア設計
gowhich501
1
130
La gouvernance territoriale des données grâce à la plateforme Terreze
bluehats
0
150
250905 大吉祥寺.pm 2025 前夜祭 「プログラミングに出会って20年、『今』が1番楽しい」
msykd
PRO
1
710
複数サービスを支えるマルチテナント型Batch MLプラットフォーム
lycorptech_jp
PRO
0
320
自作JSエンジンに推しプロポーザルを実装したい!
sajikix
1
170
【初心者向け】ローカルLLMの色々な動かし方まとめ
aratako
7
3.4k
Aurora DSQLはサーバーレスアーキテクチャの常識を変えるのか
iwatatomoya
1
890
サラリーマンの小遣いで作るtoCサービス - Cloudflare Workersでスケールする開発戦略
shinaps
2
420
Firestore → Spanner 移行 を成功させた段階的移行プロセス
athug
1
460
react-callを使ってダイヤログをいろんなとこで再利用しよう!
shinaps
1
230
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Into the Great Unknown - MozCon
thekraken
40
2k
GraphQLの誤解/rethinking-graphql
sonatard
72
11k
Documentation Writing (for coders)
carmenintech
74
5k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
112
20k
Site-Speed That Sticks
csswizardry
10
810
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
Agile that works and the tools we love
rasmusluckow
330
21k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Transcript
%FW0QT%BZT5PLZP ։ൃޮΛ࠷େԽ͢Δ σϓϩΠϝϯτύΠϓϥΠϯ
%FW0QT%BZT5PLZP !2 ࠤ౻ݯلʢ͞ͱ͏͛Μ͖ʣʗιϑτΤΞΤϯδχΞʗ:BQQMJ5FDI-FBE w݄ϝΨϕϯνϟʔήʔϜ։ൃ w ϒϥβܕιʔγϟϧήʔϜ։ൃ w݄ϝΨϕϯνϟʔΠϯϑϥ෦ w %#ج൫ɾήʔϜࣄۀج൫ w
Τϯλϝࣄۀج൫ɾϔϧεέΞ&$ࣄۀج൫ w݄'JOUFDIܥελʔτΞοϓ w ΥϨοτΞϓϦ։ൃɾӡ༻ w݄:BQQMJ w :BQQMJϓϥοτϑΥʔϜͷ։ൃɾӡ༻
ΞϓϦͷςΫϊϩδʔΛ։์͠ɺ ੈͷதΛͬͱศརͰշదʹɻ
Services :BQQMJैདྷͷΞϓϦࢢΛσΟεϥϓτ͢ ΔɺΞϓϦͷςΫϊϩδʔΛ։์͢Δελʔτ ΞοϓͰ͢ɻ ɹϓϩάϥϛϯάෆཁͰΞϓϦ։ൃɻٕज़ऀ ཁΒͣͰഒͷ։ൃΛ࣮ݱɻ ɹ͠Έ͍͢ײత6*ͷཧը໘͔Βɺ ୭Ͱ؆୯ʹΞϓϦΛӡ༻ཧ Mobile Technology
for ALL ʢ৽ଔ࠾༻͚ʣ ʢൢଅ͚ʣ ʢֶߍ๏ਓ͚ʣ ʢۀࢪઃ͚ʣ ۀछΛΘͳ͍ϗϦκϯλϧSaaSͱͯ͠ϓϥοτϑΥʔϜΛఏڙ
280݅ 2,800ສ 99 ಋೖ݅ ྦྷܭΞϓϦDL αʔϏεܧଓ
ച্ߴT2D3ͷਪҠͰٸத ɿT2D3ϢχίʔϯͷSaaSاۀʹ͓͍ͯٻΊΒΕΔͷུশ 3ഒͷΛ2ɺ2ഒͷΛ3ɺTriple x 2ɺDouble x 3ͱͯ͠T2D3ͱݺΕΔ
%FW0QT%BZT5PLZP αʔϏεɾձࣾͷ֦େʹ߹Θͤͯ ։ൃϑϩʔͷݟ͠ΛॏͶ͖ͯ·ͨ͠ !7
%FW0QT%BZT5PLZP ຊ:BQQMJʹ͓͚Δ։ൃͷྲྀΕͱ σϦόϦʔߴԽͷऔΓΈʹ͍ͭͯ ͓͠͠·͢ !8
%FW0QT%BZT5PLZP ։ൃ։͔࢝Βɿ νʔϜ։ൃظؒɿ !9
%FW0QT%BZT5PLZP ٕज़తෛ࠴ͱͷઓ͍ !10
%FW0QT%BZT5PLZP σϦόϦʔαΠΫϧʹ ࣮֬ʹڹ͍ͯ͘Δ !11
%FW0QT%BZT5PLZP w ઃܭ্ɺ*%&ͷԸܙΛड͚ʹ͍͘ w ʢαʔόαΠυΞϓϦέʔγϣϯ1)1ϕʔεʣ w ϑϨʔϜϫʔΫΛΘͣɺࣗલͷJODMVEF͕هड़͞Ε͍ͯΔ෦͕ଟ͍ w ίʔυิɾίʔυδϟϯϓ͕ޮ͔ͳ͔ͬͨΓ w
ςετίʔυ͕લఏͱ͞Ε͍ͯͳ͍ w %*͕Ͱ͖ͳ͍ w ςετΧόϨοδ !12
%FW0QT%BZT5PLZP w ΤϥʔͰϩά͕ग़ͳ͍ w ʰࠞͥΔͳةݥʱͳػೳͷෆ۩߹ΛੜΈ͍͢ w ྫɿʮྡͰͦΜͳมߋ͕͞Ε͍ͯͨͱࢥ͍ΑΒͳ͔ͬͨɻʯ w ʰϐλΰϥεΠονʱͳෆ۩߹ΛੜΈ͍͢ w
ྫɿʮ͜ͷϩδοΫ͕ͦΜͳͱ͜ΖʹӨڹΛٴ΅͢ͱࢥ͍ΑΒͳ ͔ͬͨɻʯ w ϦΧόϦతͷύον͕৽ͨͳෆ۩߹ΛੜΉ͜ͱ !13
%FW0QT%BZT5PLZP ͜͜·ͰࣄۀΛͤͯ͘͞Εͨ͜ͱʹ ײँͭͭ͠ !14
%FW0QT%BZT5PLZP ࠶ߏஙʢશϦϓϨΠεʣΛ ͢͢Ί͍ͯ·͢ !15
%FW0QT%BZT5PLZP w 1)1 K2VFSZ͔Β(PMBOH /VYUKTͷ࠶࣮ w 6*ͷΞοϓσʔτʹ͋Θͤͯશ໘৽ w طଘγεςϜͷলΛ׆͔ͯ͠νʔϜͷεέʔϧʹͰ͖Δ͚ͩൺྫͯ͠։ ൃεϐʔυ্͕͢ΔΞʔΩςΫνϟΛࢦͨ͠
!16
%FW0QT%BZT5PLZP ՆʹϓϩδΣΫτΩοΫΦϑ ݄ʹୈҰແࣄϦϦʔεʂ !17
%FW0QT%BZT5PLZP ͏·͍ͬͨ͘ϙΠϯτ !18
%FW0QT%BZT5PLZP w શ໘৽ϓϩδΣΫτೋճͰҰճͷࣦഊΛ׆͔ͤͨ w ػೳՃΛ͠ͳ͍͜ͱʹ͍ͯͨͨ͠Ίɺ։ൃɾݕূ࣌ʹ໎͍͕গͳ͔ͬͨ w ͍͍ͭͭʮ͜ΕΛػʹʯͱػೳՃ͕ͪ͠ͳͱ͜ΖΛͬͨ w ҰճͷࣦഊΛձࣾશମͰड͚ࢭΊΒΕ͍ͯͨͷͰ߹ҙಘ͔ͬͨ͢ !19
%FW0QT%BZT5PLZP w ઃܭஈ֊͔ΒΤϯδχΞશһͰษڧͭͭ͠ɺίϯηϯαεΛऔΓͳ͕Β ਐΊͨ w બఆج४͋͑ͯநతʹ w ৫ͷ֦େʹ͍͍͚ͭͯͦ͏ͳͷ w ؆୯͗ͣ͗͢͢͠ͳ͍ɺ΄ͲΑ͍қ
w ͭ͗ʹདྷΔٕज़తτϨϯυʹ͍͍͚ͭͯͦ͏ͳͷ w %%%ษڧձɺઃܭ૬ஊɾڞ༗ձɺίʔυϨϏϡʔ !20
%FW0QT%BZT5PLZP w νʔϜશһͰूதͯ͠ϓϩδΣΫτʹऔΓΊΔମ੍Λ࡞Εͨ w ৽نػೳ։ൃΛҰ࣌తʹࢭΊͨ w ϓϩδΣΫτҎ֎ͷ͜ͱΛूதͯ͠औΓΉΛ໌ࣔతʹઃ͚ͨ͜ͱͰ ϏδωεαΠυͷཧղΛಘ͔ͬͨ͢ !21
%FW0QT%BZT5PLZP !22 w ೋिؒʹҰɺϝΠϯͷϓϩδΣΫ τҎ֎ͷλεΫ͔͠Βͳ͍ w খنͳΧΠθϯҊ݅ܰඍͳෆ۩ ߹ͷमਖ਼ͳͲϓϩδΣΫτʹΘΕ ͯීஈͰ͖ͳ͍ۀΛਪਐ͢Δ w
ϏδωεαΠυ͔Βධ w ৄࡉʮ:BQQEBUFEBZʯͰݕࡧ
%FW0QT%BZT5PLZP ͏গ͠ৄ͍͠ ͪ͜ΒΛ͝ཡ͍ͩ͘͞ !23 https://speakerdeck.com/genkist
%FW0QT%BZT5PLZP ։ൃαΠΫϧ !24
%FW0QT%BZT5PLZP !25
%FW0QT%BZT5PLZP ʲ։ൃαΠΫϧʢʣʳ ԿΛ࡞Δ͔ !26
%FW0QT%BZT5PLZP w ։ൃϓϩδΣΫτͷೖΓޱ w ैۀһىҊͷͷ w 4MBDL্Ͱެื͞ΕͨҊ݅ w ࣄۀઓུϕʔεͷͷ w
͍ΘΏΔτοϓμϯ w ։ൃɾӡ༻ϕʔεͷͷ w γεςϜϦϓϨΠεɺӡ༻վળͳͲ !27
%FW0QT%BZT5PLZP ӦۀɾΧελϚʔαΫηεɾ੍࡞ͳͲ ϓϩμΫτʹؔΘ͍ͬͯΔ ଟ෦Ͱ༏ઌΛܾٞͯ͠ΊΔ !28
%FW0QT%BZT5PLZP ʲ։ൃαΠΫϧʢʣʳ Ͳ͏࡞Δ͔ !29
%FW0QT%BZT5PLZP w ͬ͘͟Γཁ͕͖݅·ͬͨΒ։ൃΛελʔτ w ࡉ͔͍6*69࡞Γͳ͕Β૬ஊͭͭ͠٧Ί͍ͯ͘ !30
%FW0QT%BZT5PLZP "1*ઃܭ !31
%FW0QT%BZT5PLZP w 1SPUPDPM#VGGFSTΛ࠾༻͍ͯ͠ΔͨΊ"1*ͷϨϏϡʔΛ࣮ʹઌߦ͠ ࣮ͯࢪͰ͖Δ w ༷ͷ֬ೝͱซ࣮ͤͯࢪ͢Δ͜ͱʹͳΔͨΊɺޮత w VCFSQSPUPUPPMʹΑΔνΣοΫɺϑΥʔϚοτΛߦ͏͜ͱͰ13 ݟ͍͢ w
)5.-υΩϡϝϯτͷు͖ग़͠ߦ͍ͬͯΔ͕*%-ͱͯ͠༏लͳͷͰ QSPUPϑΝΠϧΛݟΔ͜ͱ͕ଟ͍ !32
%FW0QT%BZT5PLZP ࣮ !33
%FW0QT%BZT5PLZP w -JOUνΣοΫ w ػցతʹෆ۩߹ͷԹচͱͳΔͷΛ͙ w ϑΥʔϚολͱΈ߹ΘͤͯϨϏϡʔޮVQ w -JOUͰΧόʔͰ͖ͳ͍෦໋໊نଇΛͭͬͯ͘υΩϡϝϯτԽ͍ͯ͠ Δʢ͙͢ಡΊΔαΠζʹΩʔϓ͢Δͷେࣄʣ
!34
%FW0QT%BZT5PLZP w ୯ମςετ w ࠷খ୯ҐͰԿΛ͢Δؔͳͷ͔ΛѲͰ͖ΔΑ͏ʹ w ݁߹ςετ w தنɾେنͳϦϑΝΫλϦϯάΛߦ͏ࡍͷσάϨνΣοΫʹ༗༻ w
ϒϥοΫϘοΫεςετͱ࣮ͯ͠ࢪ !35
%FW0QT%BZT5PLZP w 1VMM3FRVFTUʹ֤छνΣοΫΛ࿈ಈͤ͞ɺύε͠ͳ͍ͱϚʔδ͕Ͱ͖ͳ ͍ w ݸਓͰ։ൃɾճऩ͢ΔͷGPSLͨ͠ϦϙδτϦͰ࡞ۀ͢Δ͜ͱͰςε τ௨ΛͰ͖Δ w ݸਓPSHʹGPSLͨ͠ϦϙδτϦͷςετຊਓʹ͔͠௨͕͍͔ͳ͍ w
ϓϩδΣΫτͰڞ༗͍ͯ͠Δϒϥϯνͷςετશମ௨ !36
%FW0QT%BZT5PLZP νΣοΫϙΠϯτͷ͕૿͑Δ͜ͱͰ Өڹൣғ͕͕Δલʹؾ͚ͮΔ !37
main with SQLite SQLite wrappter app envoy CMS app Client
˞؆ུԽͨ͠ߏਤͰ͢ -JOU #VJME (JU1VTI -JOU 5FTU #VJME %FQMPZ -JOU 5FTU #VJME %FQMPZ -JOU 5FTU #VJME %FQMPZ QSPUPCVG DNT BQQ TRMJUFXSBQ
%FW0QT%BZT5PLZP ʲ։ൃαΠΫϧʢʣʳ Ͳ͏࣭Λ୲อ͢Δ͔ !39
%FW0QT%BZT5PLZP w جຊతͳϦϦʔεαΠΫϧि࣍ w ։ൃظؒنʹΑͬͯʙϲ݄·Ͱ༷ʑ w 2"ʹΑΔݕূεςοϓ w ʮ୯ମݕূʯɿҊ݅͝ͱʹߦ͏ݕূ w
ʮશମݕূʢि࣍ݕূʣʯɿϦϦʔε༧ఆͷͷ͚ͩͰͳͦ͘ͷଞશػ ೳΛཏతʹݟΔ !40
%FW0QT%BZT5PLZP શମݕূͷϝϦοτ !41
%FW0QT%BZT5PLZP w ʰࠞͥΔͳةݥʱͳෆ۩߹Λ୳͍͢͠ w ʰϐλΰϥεΠονʱͳෆ۩߹Λ୳͍͢͠ w ୯Ұػೳ͝ͱʹશମݕূΛߦ͏߹ͱൺֱͯ͠ΛݮͰ͖Δ w ि࣍ϦϦʔεͱ͢Δ͜ͱͰސ٬ͷΞοϓσʔτҊ͕ߦ͍͍͢ !42
%FW0QT%BZT5PLZP ݕূڥΛؚΊͨ σϓϩΠࣗಈԽ !43
%FW0QT%BZT5PLZP w ຊ൪ڥҎ֎ʹि࣍2"ݕূΛߦ͏εςʔδϯάڥɺ୯ମݕূΛߦ͏ݸ ผݕূڥʢηοτఔʣ͕͋Δ w ͯ͢ΛίϚϯυϕʔεͷख࡞ۀͰߦ͏ͷࠎ w ୯ମݕূڥͷσϓϩΠຊ൪ڥεςʔδϯάڥͱಉ༷ʹಛఆϒ ϥϯνͷQVTIΛτϦΨʔʹσϓϩΠΛߦ͏ w
γεςϜߏɺσϓϩΠϩδοΫຊ൪ͱಉͳͷͰߏσϓϩΠͷม ߋ࣌ʹͷݕূʹͳΔ !44
%FW0QT%BZT5PLZP !45 ڥ ϒϥϯν ຊ൪ QSPEVDUJPO εςʔδϯά NBTUFS QGEFWSFWJFX EFQMPZQGEFWSFWJFX
QGEFWSFWJFX EFQMPZQGEFWSFWJFX QGEFWSFWJFX9 EFQMPZQGEFWSFWJFX9
%FW0QT%BZT5PLZP ։ൃαΠΫϧʢʣ ϦϦʔε !46
%FW0QT%BZT5PLZP w σϓϩΠؚΊͯجຊతʹݕূࡁΈ w ҆৺҆શʢࣾൺʣ !47
%FW0QT%BZT5PLZP ։ൃαΠΫϧʢʣ Πϯϑϥߏཧ !48
%FW0QT%BZT5PLZP w 5FSSBGPSNΛར༻͍ͯ͠Δ w جຊతʹ*".ͳͲΛؚΊͨॳظߏஙΛओ؟ʹஔ͍͍ͯΔ w ʑͷӡ༻ͷதͰมߋ͕ݟࠐ·ΕΔͷΞϓϦͷϦϙδτϦʹಉࠝ w ྫɿ&$4ͷλεΫఆٛɺFOWPZZBNMɺ%PDLFSpMFͳͲ w
σϓϩΠ্ͷ߹͋Δ͕ɺΠϯϑϥ໘ͷมߋΞϓϦέʔγϣϯίʔυ ͱಉ༷ͷϑϩʔʹࡌͤΒΕΔϝϦοτେ͖͍ !49
%FW0QT%BZT5PLZP ։ൃαΠΫϧʢʣ ܭଌɾࢹ !50
%FW0QT%BZT5PLZP w ސ٬͔ΒͷϑΟʔυόοΫΧελϚʔαΫηε෦ܦ༝ w ΤϯυϢʔβ͔ΒͷϑΟʔυόοΫετΞϨϏϡʔ͕جຊ w &&ςετ w ຊ൪ڥʹରͯ͠ఆظతʹ࣮ΛͬͨςετΛ࣮ࢪ w
γεςϜϦιʔεɺϩάࢹ w %BUBEPH "1. Λར༻ !51
%FW0QT%BZT5PLZP ·ͱΊ !52
%FW0QT%BZT5PLZP w ӡ༻͖ͯͨ͠αʔϏεͷ։ൃͷྲྀΕɺऔΓΈΛ͝հ͠·ͨ͠ w ٕज़తෛ࠴ʹର͢ΔऔΓΈ w ىҊ͔Βܭଌ·ͰͷྲྀΕ w ͲͷΑ͏ʹͯ͠σϦόϦʔαΠΫϧߴԽΛ࣮͍ͯ͠Δ͔ !53
ҰॹʹΈɺ᛭ୖຏͯ͘͠ΕΔ ؒΛืू͍ͯ͠·͢ʂ 5IBOLZPV