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
dbt開発 with Claude Codeのためのガードレール設計
10xinc
1
920
データアナリストからアナリティクスエンジニアになった話
hiyokko_data
2
430
20250903_1つのAWSアカウントに複数システムがある環境におけるアクセス制御をABACで実現.pdf
yhana
3
500
Firestore → Spanner 移行 を成功させた段階的移行プロセス
athug
1
390
Obsidian応用活用術
onikun94
1
430
Codeful Serverless / 一人運用でもやり抜く力
_kensh
7
360
250905 大吉祥寺.pm 2025 前夜祭 「プログラミングに出会って20年、『今』が1番楽しい」
msykd
PRO
1
580
[ JAWS-UG 東京 CommunityBuilders Night #2 ]SlackとAmazon Q Developerで 運用効率化を模索する
sh_fk2
2
280
品質視点から考える組織デザイン/Organizational Design from Quality
mii3king
0
150
Kubernetes における cgroup v2 でのOut-Of-Memory 問題の解決
pfn
PRO
0
470
サラリーマンの小遣いで作るtoCサービス - Cloudflare Workersでスケールする開発戦略
shinaps
1
230
生成AI時代のデータ基盤設計〜ペースレイヤリングで実現する高速開発と持続性〜 / Levtech Meetup_Session_2
sansan_randd
1
150
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
RailsConf 2023
tenderlove
30
1.2k
Testing 201, or: Great Expectations
jmmastey
45
7.6k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.2k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Done Done
chrislema
185
16k
Typedesign – Prime Four
hannesfritz
42
2.8k
Code Review Best Practice
trishagee
70
19k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
The Language of Interfaces
destraynor
161
25k
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