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
210
あの日俺達が夢見たサーバレスアーキテクチャ/the-serverless-architecture-we-dreamed-of
tomoki10
0
460
re:Invent2024のIaC周りのアップデート&セッションの共有/around-re-invent-2024-iac-updates
tomoki10
0
1k
AWS CDK Conference Japan 2024 OP
tomoki10
0
700
TypeScripterに送るIaCの世界への招待〜AWS CDKと共に〜/inviting-typescripters-to-the-world-of-iac-with-aws-cdk
tomoki10
0
740
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
880
Other Decks in Technology
See All in Technology
なぜCodeceptJSを選んだか
goataka
0
160
権威ドキュメントで振り返る2024 #年忘れセキュリティ2024
hirotomotaguchi
2
750
UI State設計とテスト方針
rmakiyama
2
620
ブラックフライデーで購入したPixel9で、Gemini Nanoを動かしてみた
marchin1989
1
540
Snykで始めるセキュリティ担当者とSREと開発者が楽になる脆弱性対応 / Getting started with Snyk Vulnerability Response
yamaguchitk333
2
190
LINEヤフーのフロントエンド組織・体制の紹介【24年12月】
lycorp_recruit_jp
0
530
DUSt3R, MASt3R, MASt3R-SfM にみる3D基盤モデル
spatial_ai_network
2
180
Amazon SageMaker Unified Studio(Preview)、Lakehouse と Amazon S3 Tables
ishikawa_satoru
0
160
PHPからGoへのマイグレーション for DMMアフィリエイト
yabakokobayashi
1
170
新機能VPCリソースエンドポイント機能検証から得られた考察
duelist2020jp
0
230
Qiita埋め込み用スライド
naoki_0531
0
5.1k
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
5
38k
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
Building an army of robots
kneath
302
44k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
Producing Creativity
orderedlist
PRO
341
39k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Navigating Team Friction
lara
183
15k
Docker and Python
trallard
42
3.1k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Unsuck your backbone
ammeep
669
57k
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