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
1
1.3k
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
今年のアップデートで振り返るCDKセキュリティのシフトレフト/2024-cdk-security-shift-left
tomoki10
0
55
あの日俺達が夢見たサーバレスアーキテクチャ/the-serverless-architecture-we-dreamed-of
tomoki10
0
280
re:Invent2024のIaC周りのアップデート&セッションの共有/around-re-invent-2024-iac-updates
tomoki10
0
990
AWS CDK Conference Japan 2024 OP
tomoki10
0
690
TypeScripterに送るIaCの世界への招待〜AWS CDKと共に〜/inviting-typescripters-to-the-world-of-iac-with-aws-cdk
tomoki10
0
730
AWSでもBuildpacksを使ってDockerfileレスに出来るのか!?/can-i-use-buildpacks-to-go-dockerfile-less-in-aws
tomoki10
0
2.8k
ECS on Fargate のセキュリティ対策は何をやるべき?開発者目線で考える/security-for-ecs-on-fargate-secjawsdays
tomoki10
14
11k
AWS CDKの最強の書き方を実践してみる 2023年版/practice-the-strongest-writing-method-of-aws-cdk-2023-edition
tomoki10
4
6.7k
CDK支部のこれまでとこれから / jaws-ug-cdk-past-and-future
tomoki10
1
870
Other Decks in Technology
See All in Technology
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
muziyoshiz
1
230
kargoの魅力について伝える
magisystem0408
0
190
10分で学ぶKubernetesコンテナセキュリティ/10min-k8s-container-sec
mochizuki875
2
150
KubeCon NA 2024 Recap / Running WebAssembly (Wasm) Workloads Side-by-Side with Container Workloads
z63d
1
220
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
52k
目玉アップデート!のSageMaker LakehouseとUnified Studioは何たるかを見てみよう!
nayuts
0
230
MLOps の現場から
asei
5
600
レンジャーシステムズ | 会社紹介(採用ピッチ)
rssytems
0
130
大幅アップデートされたRagas v0.2をキャッチアップ
os1ma
2
380
同一クラスタ上でのFluxCDとArgoCDのリソース最適化の話
kumorn5s
0
210
Snykで始めるセキュリティ担当者とSREと開発者が楽になる脆弱性対応 / Getting started with Snyk Vulnerability Response
yamaguchitk333
2
160
実務につなげる数理最適化
recruitengineers
PRO
6
600
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Agile that works and the tools we love
rasmusluckow
328
21k
The Cost Of JavaScript in 2023
addyosmani
45
6.9k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
How to Think Like a Performance Engineer
csswizardry
21
1.2k
Why Our Code Smells
bkeepers
PRO
335
57k
How STYLIGHT went responsive
nonsquared
95
5.2k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
800
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
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