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
Classmethod流のPlatform Engineering / classmethod...
Search
tomoki10
July 19, 2024
Technology
0
740
Classmethod流のPlatform Engineering / classmethod-platform-engineering-devio2024
Classmethod Odysseyで発表した内容です。
https://event.classmethod.jp/odyssey-offline
tomoki10
July 19, 2024
Tweet
Share
More Decks by tomoki10
See All by tomoki10
AWS CDK Conference Japan 2024 OP
tomoki10
0
520
TypeScripterに送るIaCの世界への招待〜AWS CDKと共に〜/inviting-typescripters-to-the-world-of-iac-with-aws-cdk
tomoki10
0
590
AWSでもBuildpacksを使ってDockerfileレスに出来るのか!?/can-i-use-buildpacks-to-go-dockerfile-less-in-aws
tomoki10
0
2.7k
ECS on Fargate のセキュリティ対策は何をやるべき?開発者目線で考える/security-for-ecs-on-fargate-secjawsdays
tomoki10
13
9.8k
AWS CDKの最強の書き方を実践してみる 2023年版/practice-the-strongest-writing-method-of-aws-cdk-2023-edition
tomoki10
4
6.3k
CDK支部のこれまでとこれから / jaws-ug-cdk-past-and-future
tomoki10
1
830
AWS CDKでECS on FargateのCI/CDを実現する際の理想と現実 / ideal-and-reality-when-implementing-cicd-for-ecs-on-fargate-with-aws-cdk
tomoki10
19
25k
AWSCDKを通してAWSを学ぶ/learn AWS through AWS CDK
tomoki10
0
3.3k
それでも俺はAWS CDKが作るリソースに物理名を付けたい 〜CDKのベストプラクティスは本当にベストなのか〜 / AWS CDK resource name can be a physical name
tomoki10
1
7.2k
Other Decks in Technology
See All in Technology
#Zenoh 完全に理解した 〜組込み純情篇〜
takasehideki
1
450
音声AIエージェントの世界とRetell AI入門 / Introduction to the World of Voice AI Agents and Retell AI
rkaga
3
470
Datadogの便利な使い方 - 意外と知らない?CoScreenとCloudcraft
taijihagino
PRO
1
600
トレタO/X アーキテクチャ移行記 Next.js App Router化への道のり / TORETA TECH UPDATE 1
okunokentaro
2
560
【Λ(らむだ)最近のアプデ情報 / RPALT20240904
lambda
0
160
エンジニア向け会社紹介資料
caddi_eng
15
250k
React Aria で実現する次世代のアクセシビリティ
ryo_manba
3
290
Oracle Database 23ai 新機能 #3 Oracle Globally Distributed Database(GDD)
oracle4engineer
PRO
1
160
自社開発した大規模言語モデルをどうプロダクションに乗せて運用していくか〜インフラ編〜
pfn
PRO
4
680
強いチームを夢見て-PMからSREに転身して1年の振り返り / 20240906_bengo4_sre
bengo4com
1
750
[RSJ24] Object Retrieval in Large-Scale Indoor Environments Using Dense Text with a Multi-Modal Large Language Model
keio_smilab
PRO
0
220
Staff Engineer / 20240827 Yuichiro Masui
shift_evolve
0
150
Featured
See All Featured
Scaling GitHub
holman
458
140k
How to Think Like a Performance Engineer
csswizardry
15
910
Principles of Awesome APIs and How to Build Them.
keavy
125
16k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
26
1.9k
What the flash - Photography Introduction
edds
67
11k
Raft: Consensus for Rubyists
vanstee
135
6.5k
Rails Girls Zürich Keynote
gr2m
93
13k
For a Future-Friendly Web
brad_frost
173
9.3k
The Cult of Friendly URLs
andyhume
76
5.9k
What's in a price? How to price your products and services
michaelherold
241
11k
Building Your Own Lightsaber
phodgson
101
5.9k
KATA
mclloyd
27
13k
Transcript
Classmethodྲྀͷ Platform Engineering 2024.7.20 ϏδωεςΫϊϩδʔ෦ ࠤ౻ஐथ
ొஃޙʰDevelopersIOʱͰهࣄ͕ ެ։͞Ε·͢ɻ ৄࡉ֬ೝ͍ͨ͠߹͓ಡΈ͍ͩ͘͞ 2 ͝ҙࣄ߲
Xͷߘͷࡍɺ ϋογϡλά #devio2024 Ͱ͓ئ͍͍ͨ͠·͢ɻ 3 ͓ئ͍
ࣗݾհ ࠤ౻ஐथ Ϋϥεϝιουגࣜձࣾ ϏδωεςΫϊϩδʔ෦ JAWS-UG CDKࢧ෦ ӡӦ ͖ͳAWSαʔϏε 4 @tmk2154
@tomoki10 Lambda CDK
ຊൃදͷత • ΰʔϧ • Platform EngineeringΛͲ͏ղऍͯ͠ɺ࣮ફ͠ Α͏ͱ͍ͯ͠Δ͔ҰྫΛΔ • ۩ମྫ͔Β໌ͷ։ൃͷώϯτΛಘΔ •
͋·Γ͞ͳ͍͜ͱ • ٕज़ͷৄࡉͷ 5
࣍ • Platform EngineeringΛߟ͑Δʹࢸͬͨഎܠ • ݱʹ߹͏PlatformͷΧλν • ICASUΞʔΩςΫνϟ • ޮՌͷଌఆ
6
࣍ • நฤ • Platform EngineeringΛߟ͑Δʹࢸͬͨഎܠ • ݱʹ߹͏PlatformͷΧλν • ۩ମฤ
• ICASUΞʔΩςΫνϟ • ޮՌͷଌఆ 7
Platform EngineeringΛ ߟ͑Δʹࢸͬͨഎܠ 8
͖͔͚ͬ 9 Կ͔৫Λ͑͑ ײ͡ʹ͢Δ͜ͱ ͬͯΈ ʢ༁ʣ ͑ɺϚδ͔͢!?
՝Λߟ͑Δલʹ 10 1PJͰͳ͘શମͷߩݙΛٻΊΒΕΔ Ҿ༻ɿ ʮελοϑΤϯδχΞʢ্ڃΤϯδχΞʣʯʹͳΔ ʹͲΜͳεΩϧΛʹ͚ͭΕ͍͍ͷͩΖ͏͔ʁɹ ٕज़తͳೳྗ͑͋͞Ε͍͍ͷͩΖ͏͔ʁɹ ͳͬͨਓɺ۩ମతʹԿΛͨ͠ͷͩΖ͏ʁɹ ͦͷࣄΛָ͠ΉʹɺͲ͏ͨ͠Β͍͍ͷͩΖ͏͔ʁ ͜ΕΒͷٙʹ͑Δͷ͕ຊॻͷతͩɻ
https://dev.classmethod.jp/articles/book-review-staff-engineer/
՝Λߟ͑Δલʹ 11 Ҿ༻ɿ • ٕज़తϕΫτϧΛଋͶΔ • ͯ͢ͷνʔϜʹಠࣗͷܾஅΛԼ͢ݖརΛ༩͑Δ ͱ͍͏Γํߟ͑ΒΕΔͩΖ͏ɻ͔͠͠ɺ͋ ΒΏΔπʔϧͷ༻ΛೝΊΔ৫ɺͲͷπʔϧ αϙʔτ͠ͳ͍৫Ͱ͋Δ(p.60)
• ৽͍͠ϓϥΫςΟεΛల։͢ΔͭΓͳΒɺ༏Εͨ ϓϥΫςΟε͚ٛΔͷͰͳ͘ਐԽͷ݁Ռ ͱͯ͠ੜ͡Δͷ(p.58) https://dev.classmethod.jp/articles/book-review-staff-engineer/
͓͓·͔ͳ৫ਤ ࣌ͷ৫ͷߏ(22࣌) 12 AWSࣄۀຊ෦ CXࣄۀຊ෦ DAࣄۀຊ෦ ৽نࣄۀ ౷ׅຊ෦ Ӧۀ౷ׅ ຊ෦
and more ↑͜͜ͷ
࣌ͷࣄۀຊ෦ͷհ 13 https://dev.classmethod.jp/articles/introduction-cx-business-unit/ https://dev.classmethod.jp/articles/cx-business-division- delivery-department-server-side-team/ ΫϥυΛͬͨडୗ։ൃϝΠϯͷ৫
طଘͷ৫͕໘͍ͯͨ͠՝ • ྑ͍ • ҰൠԽͨ͠ݟϒϩάͰڞ༗ • ͓ޓ͍ͷใڞ༗ࣗൃͰͨ·ʹ࣮ࢪ • ՝ •
डୗ։ൃͷސ٬ઌ͝ͱʹϊϋ͕ด͡Δ • PJͰͷٕज़త՝ղܾ͕ݸਓґଘ 14
ݸਓతʹײͨ͡՝ 15 ͜ͷϒϩάͰॻ͍ͨΫϩεε λοΫࢀরͷ՝͕2022Ͱ ͍ͬͯΔ߹͕͋ͬͨɻ CDKͰͷ࣮ࣄނ͋Δ͋ΔNo.1 ͕ͩͨ·ʹڞ༗͞Ε͍ͯͳ͍ɻ ͜ͷΛ1िؒʹ3ճ͢Δ͜ͱ
՝ͷରԠ • ·ͣݱঢ়ੳ • AWS W-ATeam TopologiesຊΛࢀߟʹཧ 16 https://docs.aws.amazon.com/ja_jp/wellarchitected/latest/ operational-excellence-pillar/separated-aeo-and-ieo-with-
decentralized-governance.html
Team Topologies 17 https://qiita.com/yamamorisoba/items/be5f55701aef6dcc2be2
CX Team TopologiesʹͯΊΔ 18 AࣾνʔϜ BࣾνʔϜ CࣾνʔϜ … ZࣾνʔϜ Slack
Notion ετϦʔϜΞϥΠϯυνʔϜ͕Ҋ݅νʔϜʹ͍ۙঢ়ଶ ՝ • νʔϜ֎Ͱൃ৴͕ແ͍߹ɹ ΄΅ܨ͕Γ͕ͳ͍ • Ҋ݅νʔϜͰΔ͜ͱ͕ଟ ͍ʢϑϩϯτ/όοΫ/ϞόΠϧ/ Πϯϑϥ/IaC/CICD/ηΩϡϦ ςΟ/ࢹ/υϝΠϯࣝ/etcʣ ※੨ઢίϛϡχέʔγϣϯϥΠϯ DevelopersIO
ͳͥΓཱͬͯͨͷ͔ 19 ڧ͍ϨϕϧͷਓࡐΛ࠾༻͢Δ͜ͱͰΓཱͭʁʢ૾ʣ https://www.ipa.go.jp/jinzai/skill-standard/plus-it-ui/itssplus/ps6vr70000001j6e-att/000065687.pdf ײ֮తʹࣾ ͕͜͜ϘϦϡʔϜ κʔϯͩͬͨ ɹɹɹʴ ΫϥυʹΑΔ 1ਓͷύϫʔͷ
࠷େԽ
CX Team TopologiesʹͯΊΔ 20 ϓϥοτ ϑΥʔϜ νʔϜ AࣾνʔϜ BࣾνʔϜ CࣾνʔϜ
… ZࣾνʔϜ ][ ][ ][ ][ • ڞ௨ͱͳΔΞΫηεཧɺη ΩϡϦςΟɺCI/CDͳͲͷൣ ύλʔϯΛx as a serviceͱ͠ ͯఏڙ͢Δ • Slack্ʹཷ·͍ͬͯΔϑϩʔ ใΛετοΫใʹม͑Δ • τΠϧ(։ൃԼͷো)ɹ ղফͷώϯτΛ͢ ఆͨ͠ཧ૾
Ͳ͏ͬͯใڞ༗͢Δ͔ 21 Inner Sourceͷߟ͑ํΛࢀߟ • ৫ͷιϑτΣΞ։ൃϓϩδΣΫτΛ OSSϓϩδΣΫτͷΑ͏ʹӡӦ • ίʔυυΩϡϝϯτΛ৫Ͱ͘ڞ༗͠ɹ ୭ͰΞΫηεɾߩݙͰ͖ΔΑ͏ʹ͢Δ
• ίʔυϨϏϡʔɺPull RequestɺIssueͳͲͷ OSSతͳख๏Λ࠾༻ • ৫Ͱ։ൃ͞Εͨίʔυίϯϙʔωϯτͷ ࠶ར༻Λଅਐ https://innersourcecommons.org/ja/
Ͳ͏ͬͯใڞ༗͢Δ͔ 22 GitHubΛ໊લ௨Γٕज़ͷHUBͱ͢Δ AࣾνʔϜ BࣾνʔϜ CࣾνʔϜ … ZࣾνʔϜ ڞ௨Խ͍͢͠෦ Πϯϑϥ/IaC/CICD/ɹ
ηΩϡϦςΟ/ࢹ etc ϓϥοτ ϑΥʔϜ νʔϜ
Ͳ͏ͬͯใڞ༗͢Δ͔ 23 ଞͷऔΓΈߦ͏ͨΊ໊લҰൠతͳͷʹ AࣾνʔϜ BࣾνʔϜ CࣾνʔϜ … ZࣾνʔϜ ڞ௨Խ͍͢͠෦ Πϯϑϥ/IaC/CICD/ɹ
ηΩϡϦςΟ/ࢹ etc ΞʔΩ ςΫτ νʔϜ
CX ࠷ॳͷਐΊํ 24 ΠωΠϒϦϯά νʔϜ ϓϥοτϑΥʔϜ νʔϜ AࣾνʔϜ ʢ৽ن্ཱ͛ʣ ཧ͚ͩͰશମಋೖ͢Δͱص্ͷۭͱͳΓࣦഊ
͍͢͠ͷͰɺখ͘͞ཧΛద༻ͯ͠ॳΊͯݟΔ
ݱʹ߹͏PlatformͷΧλν 25
Platformͱ 26 CNCF Platform Engineeringࢿྉ※͔ΒҰ෦Ҿ༻/ҙ༁ ※https://tag-app-delivery.cncf.io/whitepapers/platforms/ CNCF…Cloud Native Computing Foundation
• ΫϥυωΠςΟϒ ίϯϐϡʔςΟϯάͷϓϥοτϑΥʔϜɺϓϥοτ ϑΥʔϜͷϢʔβʔͷχʔζʹԠͯ͡ఆ͓ٛΑͼఏڙ͞ΕΔػೳͷ౷߹ίϨΫ γϣϯͰ͢ • ϓϥοτϑΥʔϜ͕αϙʔτ͢ΔػೳͱγφϦΦͷ۩ମతͳηοτɺརؔ ऀͱϢʔβʔͷχʔζʹΑܾͬͯఆ͢Δඞཁ͕͋Γ·͢ • ඇৗʹ୯७ͳʮϓϥοτϑΥʔϜʯɺʢதུʣϓϩόΠμʔ͔ΒػೳΛϓϩ Ϗδϣχϯά͢ΔͨΊͷඪ४ૢ࡞खॱͷϦϯΫΛؚΉ wiki ϖʔδͰ͋ΔՄೳ ੑ͕͋Γ·͢ɻ
Platformͱ 27 CNCF Platform Engineeringࢿྉ※͔ΒҰ෦Ҿ༻/ҙ༁ ※https://tag-app-delivery.cncf.io/whitepapers/platforms/ CNCF…Cloud Native Computing Foundation
• ΫϥυωΠςΟϒ ίϯϐϡʔςΟϯάͷϓϥοτϑΥʔϜɺϓϥοτ ϑΥʔϜͷϢʔβʔͷχʔζʹԠͯ͡ఆ͓ٛΑͼఏڙ͞ΕΔػೳͷ౷߹ίϨΫ γϣϯͰ͢ • ϓϥοτϑΥʔϜ͕αϙʔτ͢ΔػೳͱγφϦΦͷ۩ମతͳηοτɺརؔ ऀͱϢʔβʔͷχʔζʹΑܾͬͯఆ͢Δඞཁ͕͋Γ·͢ • ඇৗʹ୯७ͳʮϓϥοτϑΥʔϜʯɺʢதུʣϓϩόΠμʔ͔ΒػೳΛϓϩ Ϗδϣχϯά͢ΔͨΊͷඪ४ૢ࡞खॱͷϦϯΫΛؚΉ wiki ϖʔδͰ͋ΔՄ ೳੑ͕͋Γ·͢ɻ
ߟ͑ͨPlatformͷछྨ 28 • ࠷େͷPlatform • Internal Developer Potal(IDP)ͷߏஙk8sͷɹ ΫϥελʔΠϯϑϥཧΛߦ͍ɺηϧϑαʔ ϏεͰڥΛఏڙ
• ࠷খͷPlatform • ϊϋΛஷΊΔWikiΛཧ͢ΔνʔϜ
ߟ͑ͨPlatformͷछྨ 29 ࠷େͷPlatformͷΠϝʔδϝϧΧϦ͞Μʢݸਓͷ૾ʣ https://speakerdeck.com/tcnksm/platform-engineering-at-mercari-platform-engineering-kaigi-2024
CX ࣗͨͪͷ৫ͰͯΊΔ߹ 30 AࣾνʔϜ BࣾνʔϜ CࣾνʔϜ … ZࣾνʔϜ ECS ҎԼͷཧ༝Ͱݕ౼֎ʹ
• ٕज़ελοΫ͕Ҋ݅ͰҟͳΔ • ΫϥελʔཧͷӨڹ͕ଞͷ ձࣾͷҊ݅ʹӨڹ͢Δ • ηϧϑαʔϏεԽͰ͖Δ·Ͱ ͷίετ͕ߴ͍ • Γସ͑ͷ༧ࢉঝೝ͕ސ٬͝ ͱʹඞཁͰݱ࣮తͰͳ͍ Lambda EKS ࠷େͷPlatform
CX ࣗͨͪͷ৫ͰͯΊΔ߹ 31 AࣾνʔϜ BࣾνʔϜ CࣾνʔϜ … ZࣾνʔϜ Կ͔ߏங͞Ε͍͕ͯͨɹɹɹ ຖճࣅͨΑ͏ͳྲྀΕͰҰ؏ͨ͠ɹ
φϨοδूʹͳΒͳ͍ 1. Ҋ݅ʹۭ͖͕͋Δ or ࢥཱ͍ͬ ͨͱ͖ʹݕ౼͕࢝·Δ 2. Ұ୴ 3. ਓ͕ுΓ͔ͳ͍ͷͰ์ஔ 4. அยతͳφϨοδूʹͳΔ ࠷খͷPlatform φϨοδ ू 㱺େ͖ա͗ΔͱಋೖͰ͖ͳ͍ɻখ͞ա͗ͯҊ݅ͷҾྗͰҡ࣋Ͱ͖ͳ͍
த͙ؒΒ͍ͷҊ 32 ࠷େͱ࠷খͷத͙ؒΒ͍ͷҊΛ3ͭ΄Ͳݕ౼ • ΫϥυཧϓϥοτϑΥʔϜͷར༻ • AWS ServiceCatalogAWS ProtonΛར༻ •
ϥΠϒϥϦͱͯ͠ఏڙ • ίʔυͷҰ෦ΛNPMϥΠϒϥϦͳͲͱͯ͠ఏڙ • ར༻ऀύοέʔδϚωʔδϟܦ༝Ͱར༻͢Δ • αϯϓϧίʔυͱͯ͠ఏڙ • ϑϩϯτ/όοΫΤϯυ/IaCͷίʔυΛαϯϓϧͱͯ͠ఏڙ • ར༻ऀαϯϓϧΛਅࣅͯ͠هड़͢Δ
ServiceCatalogͷิ 33 • ServiceCatalog • CloudFormation/TerraformͷςϯϓϨʔτΛͱͯ͠ઃఆ͠ɺଞͷAWS ΞΧϯτͰར༻͕ՄೳʹͳΔαʔϏε https://aws.amazon.com/jp/builders-flash/202405/mizuho-service-catalog/
Protonͷิ 34 • Proton • ཧऀ͕ڥ༻/αʔϏε༻ςϯϓϨʔτΛ࡞͢Δͱɺ։ൃऀίʔυΛ ॻ͚ͩ͘ͰCI/CD͔ΒͷΞϓϦσϓϩΠ͕࣮ݱͰ͖ΔαʔϏε https://tech.anti-pattern.co.jp/letsuse-awsproton/
த͙ؒΒ͍ͷҊ 35 ͦΕͧΕͷར/ܽ • ΫϥυཧϓϥοτϑΥʔϜͷར༻ • རɿηϧϑαʔϏεͰར༻Մೳ • ܽɿΧελϚΠζੑ͕͍͠ʁӡ༻ݟ͕গͳ͍ •
ϥΠϒϥϦͱͯ͠ఏڙ • རɿύοέʔδϚωʔδϟܦ༝Ͱ͙͢ʹಋೖͰ͖Δ • ܽɿόʔδϣϯΞοϓͰӨڹൣғ֬ೝɺޙํޓੑͷҡ͕࣋ඞཁ • αϯϓϧίʔυͱͯ͠ఏڙ • རɿޙํޓੑͷҡ࣋ෆཁɻҰ෦͚ͩͰ͑Δ • ܽɿҰద༻ͨ͠ޙݹ͍όʔδϣϯͷ··ʹͳΔ
͓͞Β͍ 36 Platform ఏڙ͢ΔϨϕϧ͕͍͔ͭ͋͘Δ Level ఏڙ༰ CDKͰߟ͑Δ߹ԿΛ͏͔ 5 IDPͳͲʹΑΔશͳ ηϧϑαʔϏε
BackStage/ಠ࣮ࣗ 4 ΫϥυཧϓϥοτϑΥʔϜ ͷར༻ ServiceCatalog/Proton 3 ϥΠϒϥϦͱͯ͠ఏڙ Construct Hub/Code Artifact 2 αϯϓϧίʔυͱͯ͠ఏڙ GitHub/GitLab 1 Wikiͱͯ͠ఏڙ Notion etc.. Platform Level
͓͞Β͍ 37 Platform ఏڙ͢ΔϨϕϧ͕͍͔ͭ͋͘Δ Level ఏڙ༰ ར༻ऀෛՙ ։ൃෛՙ ґଘ 5
IDPͳͲʹΑΔશͳ ηϧϑαʔϏε େ େ 4 ΫϥυཧϓϥοτϑΥʔϜ ͷར༻ த େ 3 ϥΠϒϥϦͱͯ͠ఏڙ த த 2 αϯϓϧίʔυͱͯ͠ఏڙ த த খ 1 Wikiͱͯ͠ఏڙ ߴ খ খ Platform Level
ิ 38 ʮPlatform Engineering Maturity Modelʯࠓޙ͜ΕࢀߟʹͳΔʁ https://tag-app-delivery.cncf.io/whitepapers/platform-eng-maturity-model/
݁Ռ 39 Α͋͘ΔύλʔϯΛαϯϓϧίʔυͱͯ͠ఏڙ͢Δ͜ͱʹܾఆ ཧ༝ • ࠷ॳ͔Βଟ͘ͷਓ͔͚ΒΕͳ͍ͷͰগਓͰՌΛग़͢ඞཁ͕͋Δ • গਓͰ࢝ΊΔͨΊେنͳมߋ͍͠ • طଘͷҊ݅ͷԆͰɺྲྀ༻Մೳͳ෦ΛςϯϓϨʔτԽͯ͠ఏڙ͢Δ͜
ͱͰɺ࠷ॳͷ࣮ίετΛԼ͛ͯఏڙ͢Δ • ୯ͳΔαϯϓϧίʔυ͚ͩͰͳ͘ɺݟΛίʔυʹ߹Θͤͯڞ༗͢Δ
ܾ·ͬͨ͜ͱ 40 Α͋͘ΔύλʔϯΛαϯϓϧίʔυͱͯ͠ఏڙ͢Δ ԿΛఏڙ͢Δͷ͔ • όοΫΤϯυ • ബ͍ϨΠϠʔυΞʔΩςΫνϟͷΈఏڙ • ϑϩϯτΤϯυ
• ݕ౼͕ٕͨ͠ज़ͷҠΓมΘΓ͕ܹ͍ͨ͠Ίஅ೦ • Πϯϑϥ/CICD/ࢹ/ηΩϡϦςΟ • CDKͷίʔυͱ্ͯ͠هͷϕʔεͱͳΔઃఆΛఏڙ • Ҋ݅ͰΑ͋͘ΔLambdaϕʔε/ECSϕʔεͷ2ύλʔϯ͕ϝΠϯ
ϑΣʔζ1ɿಋೖظ 41 શ৽نͰ࡞ΔͱɺϒϩάͷใͱมΘΒͳ͘அยతͳͷͱͳΔ ܧଓཧ͕Ͱ͖Δٕज़ͳͷ͔͔Βͳ͍ ɹˣ Ҋ݅Ͱ࣮ࡍʹ͏·͍ͬͨ͘ύλʔϯΛநग़ͯ͠ςϯϓϨʔτԽ AࣾνʔϜ BࣾνʔϜ ΞʔΩςΫτνʔϜ ύλʔϯ
நग़ ςϯϓϨԽ
ϑΣʔζ2ɿ/ख़ظ 42 ֤νʔϜଆ͔ΒݟΛissuePRͱͯ͠ڞ༗ ΞʔΩςΫτ νʔϜ ֤νʔϜ ϝϯόʔ ֤νʔϜ ϝϯόʔ νʔϜؒҠಈ
ใڞ༗ ڭ ։ൃ ߩݙ ։ൃ ϝϯςφϯε
ϑΣʔζ3ɿਰୀظ 43 ݹ͍ใ͕Γଓ͚Δ͜ͱͰɺޡͬͨϓϥΫςΟε͕ࢀর͞ΕΔՄೳੑ τϨϯυͷมҟɺϝϯςφʔෆࡏͱͳͬͨςϯϓϨʔτΞʔΧΠϒ ΞʔΩςΫτ νʔϜ ΞʔΧΠϒ
ඳ͍ͨཧ૾ 44
ICASUΞʔΩςΫνϟ 45
ICASUΞʔΩςΫνϟ 46 ICASU Architecture (Iikanjini Classmethod Amazing SpeedUp)
ICASUϩΰʹ͍ͭͯ 47 σβΠφʔͷํʹ͜ͷࢪࡦΛΠϝʔδͯ͠ίϯηϓτ·ͰؚΊͨϩΰͷઃ ܭσβΠϯΨΠυϥΠϯͳͲ৭ʑ࡞͍͖ͬͯͨͩ·ͨ͠ʂ ۼ͞Μຊʹ͋Γ͕ͱ͏͍͟͝·͢ 🙏
ICASUΞʔΩςΫνϟ 48 2ύλʔϯΛఏڙʢTypeScript+CDK͕ϕʔεʣ Lambdaϕʔε ECSϕʔε
ICASUΞʔΩςΫνϟ 49 2ύλʔϯΛఏڙʢTypeScript+CDK͕ϕʔεʣ Lambdaϕʔε ECSϕʔε https://github.com/classmethod/icasu-cdk-serverless-api-sample https://github.com/classmethod/icasu-cdk-ecs-fargate-sample
͍ํͷఆ 50 ICASUΞʔΩ ֤νʔϜ ϝϯόʔ ֤νʔϜ ϝϯόʔ Ҋ࣮݅ ςϯϓϨICASU_NOTEΛ ࢀߟʹ࣮͍ͯͯ͘͠͠
ෆཁͳ෦࠾༻͠ͳ͍
ECSϕʔε 51
ICASU ECSͷ֓ཁ 52 ҎԼͷػೳΛ࣮/هࡌ • ICASU NOTE • ։ൃʹඞཁͳπʔϧʢLinter/Formatter/SpellCheck/Dependabot) •
IaC • Πϯϑϥ • CI/CDύΠϓϥΠϯ • ηΩϡϦςΟʢAWSηΩϡϦςΟ/ίʔυηΩϡϦςΟʣ • αϯϓϧόοΫΤϯυ
ICASU NOTE 53 ୯ʹIaCͷςϯϓϨʔτΛ͢߹ɺઃܭ࣌ͷߟྀ͕ڞ༗͞Εʹ͍͘ ߟྀ͕ඞཁͳʹICASU NOTEͱͯ͠ίϝϯτΛهࡌ package/iac/bin/infra.tsͷத
ICASU NOTEͷߏ 54 • ಄จ • ઃܭͰΑ͘ߟྀϙΠϯτͱͳΔ෦Λهࡌ • ຊจ •
࣮ࡍʹى͖Δ DevIOͳͲಡΉ͖هࣄͷϦϯΫͳͲΛهࡌ
ICASU NOTE 55 ޙ͔ΒgrepͰશ෦ରԠͰ͖͔ͨνΣοΫϦετͱͯ͠༻Մೳ ͍ํࣗମReadmeͷICASU_NOTEʹهࡌ
։ൃʹඞཁͳπʔϧ 56 • Linter/Formatter • Biome.js • TypeScriptͷLinter/Formatterઃఆ͕ॳΊΘ͔Γʹ͍͘ͱ͍͏ίϝ ϯτ͕͋ͬͨͨΊσϑΥϧτઃఆΛఏڙ •
ECSଆγϯϓϧͳBiome.jsΛઃఆ • SpellCheck • CSpell • PRͰͷεϖϧϛεͷࢦఠΛۃྗݮΒ͠ੜ࢈ੑΛ্͛ΔͨΊՃ • IaCͷ߹ɺIDϛεͰϦιʔε࡞Γ͋͠Γ͏ΔͷͰॏཁ
Πϯϑϥ 57 యܕతͳΠϯϑϥύλʔϯΛCDKͱͯ͠هड़͠ਅࣅͰ͖ΔΑ͏ʹఏڙ • CDKࣗମͷॻ͖ํ • VPCؔ࿈ • NAT Gateway/NAT
Instance • SecurityGroup/NetworkACL • VPC Endpoint • ECR • ECS • Cluster/Service/Container • ALB • Aurora(MySQL) • CloudWatch Logs • Cognito • WAF • Other • GitHub Actions Role
CI/CDύΠϓϥΠϯ 58 GitHub ActionsͰΑ͘Ҋ݅Ͱ͏CI/CDͷجຊύλʔϯΛ࣮ • CI • PullReq࡞࣌ʹLintεφοϓγϣοτςετΛ࣮ߦ • CD
• ΠϯϑϥڥͷCDΛ࣮ • ίϯςφΛECRʹϏϧυ/ϓογϡ͢Δ·Ͱͷಈ࡞ࣗಈԽ
ηΩϡϦςΟ 59 https://dev.classmethod.jp/articles/security-for-ecs-on-fargate- secjawsdays/ ӈهͷొஃͰߟ͑ͨରԠΛͰ͖ΔݶΓ ίʔυʹΓࠐΉ ҎԼͦΕͧΕͷϨΠϠʔ͝ͱʹهࡌ • Application…WAF/Dependabot etc…
• Container…ECS • Image…ECR • Registry…ECR • Network…VPC etc… ߟྀICASU_NOTEͰهࡌ
αϯϓϧόοΫΤϯυ 60 ಈ͘ͷ͕͋ͬͨ΄͏͕Θ͔Γ͍͢ͱ͍͏ϑΟʔυόοΫ͋ͬͨͨΊɹ ҎԼͷٕज़ελοΫΛ͏߹ͷαϯϓϧΛՃ • TypeScript • Prisma • ECS
on Fargate • Aurora
Lambdaϕʔε 61
ICASU Lambdaͷ֓ཁ 62 ҎԼͷػೳΛ࣮/هࡌ • ICASU NOTE • ։ൃʹඞཁͳπʔϧʢLinter/Formatter/SpellCheck) •
IaC • CI/CDύΠϓϥΠϯ • ϞχλϦϯά • ηΩϡϦςΟ • αϯϓϧόοΫΤϯυ
࣌ؒͷ߹Ͱলུ Ͳ͔͜Ͱผͷϝϯόʔ͔Β ৄࡉൃද͕ࠓޙ͋Δ…ͣʂ 63
ޮՌͷଌఆ 64
ޮՌͷଌఆ 65 Ͳ͏ͬͯ͜ͷࢪࡦ͕͏·͍ͬͨ͘ͱஅ͢Δ͔ ҎԼͷࢦඪΛઃఆͯ͠ɺఆྔత/ఆੑతͳධՁΛ࣮ࢪ • ఆྔతධՁࢦඪ • վળ • ৽نҊ݅Ͱͷಋೖ
• ಋೖ࣌ͷݮ • طଘҊ݅ͰͷҰ෦ػೳಋೖ • ίϯτϦϏϡʔτͷྔͱ࣭ʢPRͱissueͷʣ • GitHub OrgͷࢀՃऀʢ࣌୯ಠͷOrgΛར༻ʣ
ఆྔతධՁࢦඪͷ݁Ռ 66 ఆྔతධՁࢦඪ Ϋϥεϝιου20ظɿ20237݄ʙ20246݄ • վળ • ৽نҊ݅Ͱͷಋೖˠ4Ҋ݅ʢ20224݅ʣ • ಋೖ࣌ͷݮˠ1~2िؒ
• طଘҊ݅ͰͷҰ෦ػೳಋೖˠෆ໌ • ίϯτϦϏϡʔτͷྔͱ࣭ʢPRͱissueͷʣˠPR:140/issue:58 • GitHub OrgͷࢀՃऀʢ࣌୯ಠͷOrgΛར༻ʣˠ120ਓ
ఆྔతධՁࢦඪͷݶք 67 Ξϯέʔτ݁ՌͰݮ1~2िؒͱ͍͏ճ ্ͨͩه݁Ռ͚ͩͰޮՌ͕ଌΓ͖Εͳ͍ͱஅ • ʹͳ͍ͬͯΔ͕ݮओ؍తͳධՁ • ICASU͕ͳ͚Ε࣮ͦͦͰ͖ͳ͔ͬͨՄೳੑ • ICASU͕ͳ͔ͬͨ߹ɺಉ࣭͡ͷͷΛ࡞ΔͷʹͲΕ͚͔͔ͩͬͨͷ
͔ਖ਼֬ʹଌΔ͜ͱ͕ඇৗʹ͍͠ • A/BςετͷΑ͏ʹҰ෦ͷҊ݅Ͱ͏/Θͳ͍Λ͚Δʁ • ಉ͡Α͏ͳ݅ͷҊ݅/εΩϧϨϕϧͷਓһͷΞαΠϯݱ࣮తʁ →ఆੑతධՁݕ౼த
ICASUීٴͷͨΊͷ׆ಈ ʢ͕࣌ؒ͋Εʣ 68
લఏ 69 https://speakerdeck.com/mfpais/what-is-platform-as-a-product-and-why-should-you-care?slide=43
એ/SWAG 70 ࣮ͷ༰ࣗମΛհ͢ΔൃදΛ࣮ࢪͨ͠Γ Pull Request࡞ऀʹ͚ࣾʹSWAGΛఏڙ
·ͱΊ 71
·ͱΊ 72 • ΰʔϧ • Platform EngineeringΛͲ͏ղऍͯ͠ɺ࣮ફ͠Α͏ͱ͍ͯ͠Δ ͔ҰྫΛΔ • ࣗࣾΛTeam
TopologiesͷղऍͰੳ͠ɺঢ়گΛѲ͢Δ ۩ମྫΛఏࣔɻ৫͝ͱͷPlatform LevelΛߟ͑ɺࣗͷ ৫ʹ͋ͬͨPlatformͷΧλνΛબ • ۩ମྫ͔Β໌ͷ։ൃͷώϯτΛಘΔ • ՌύϒϦοΫʹͳ͍ͬͯΔͷͰ͝׆༻͍ͩ͘͞
None
74