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
社内AWSインフラのIaC化にCDKを提案する資料
Search
ryosuke-horie
May 25, 2024
Technology
0
46
社内AWSインフラのIaC化にCDKを提案する資料
ryosuke-horie
May 25, 2024
Tweet
Share
More Decks by ryosuke-horie
See All by ryosuke-horie
バックエンドエンジニアがデザインとフロントエンドに挑戦してみた
hreryosuke03
0
260
Other Decks in Technology
See All in Technology
リリース2ヶ月で収益化した話
kent_code3
1
310
[OCI Technical Deep Dive] OracleのAI戦略(2025年8月5日開催)
oracle4engineer
PRO
1
220
オブザーバビリティ文化を組織に浸透させるには / install observability culture
mackerelio
0
150
夏休みWebアプリパフォーマンス相談室/web-app-performance-on-radio
hachi_eiji
0
260
[OCI Technical Deep Dive] OCIで生成AIを活用するためのソリューション解説(2025年8月5日開催)
oracle4engineer
PRO
0
110
Agent Development Kitで始める生成 AI エージェント実践開発
danishi
0
160
UDDのススメ - 拡張版 -
maguroalternative
1
600
Intro to Software Startups: Spring 2025
arnabdotorg
0
270
「Roblox」の開発環境とその効率化 ~DAU9700万人超の巨大プラットフォームの開発 事始め~
keitatanji
0
140
家族の思い出を形にする 〜 1秒動画の生成を支えるインフラアーキテクチャ
ojima_h
3
1.3k
データモデリング通り #2オンライン勉強会 ~方法論の話をしよう~
datayokocho
0
180
[kickflow]20250319_少人数チームでのAutify活用
otouhujej
0
140
Featured
See All Featured
Gamification - CAS2011
davidbonilla
81
5.4k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
20k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.8k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
A Modern Web Designer's Workflow
chriscoyier
695
190k
Done Done
chrislema
185
16k
The Invisible Side of Design
smashingmag
301
51k
Transcript
社内AWSインフラのIaC化に CDKを提案する資料
目次 1. はじめに 2. サンプルアプリ「予約受付システム」を利用 a. 概要 b. 構成図 c.
技術構成 d. CDKを採用したメリット 3. IaCツールについて a. IaCを推奨する理由 4. その他
1.はじめに - CDK、TypeScriptが社内のAWSインフラのIaC化の選択肢の有力候補に上がっていると伺っています - TypeScript, CDKは個人的に注目している技術で、すでにいくつかのアプリを個人開発しているいます。 - そのメリットをその辺に転がっている技術記事ではなく、一社員の目線から、激押しします。 - (個人的には第一候補でいいと思っている
IaCツールです。) - サンプルのアプリ・リポジトリを通してご紹介します。
2.サンプルアプリ「予約受付システム」 - ⇒の添付画像のような週間スケジュールから予約を受けつけ、自動でメールを送 信し通知するようなシステムで CDKを紹介します。 - GitHub リポジトリも公開しています。 - https://github.com/ryosuke-horie/cdk-sample-serverless-reserve-form
- (見たらスターいただけるとうれしいです) - 半年前に作ったシステムを公開用にカスタムした物なのであくまでもサンプルとし て見ていただければと思います。 2-1. 概要
2.サンプルアプリ「予約受付システム」 - (手書きで失礼します) - シンプルな実装でS3+CloudFront でフロントエンドの構築、Lambdaに よってバックエンドのメール送信部 分を構築しています。サーバレス構 成です。 -
社内でいうとMITSのHPが近い構 成かと思います。 2-2. 構成図
2.サンプルアプリ「予約受付システム」 インフラ - AWS CDK - API Gateway + Lambda+SESをデプロイするスタック
- Route53, ACM, S3, CloudFrontをデプロイするスタック - GitHub AcitonsからのS3への自動デプロイと CloudFrontのキャッシュ削除を許可するための OICD用IAMをデプロイするスタック アプリケーション - Vue.js v3 - TypeScript その他ライブラリ ESLint, Prettier, Biome を静的解析、コード成型のために採用 最低限レベルのシンプルな実装になっています。 2-3. 技術構成
2.サンプルアプリ「予約受付システム」 - マネジメントコンソールでの操作が圧倒的に少ない - ACM, Route53の部分はマネジメントコンソールで作成したものを ARNで指定してCloudFront等と関連付けを行っていますが、そ れ以外はCDKで記述してコマンドでデプロイするだけで構築が完了します - 一度実装してしまえばコードとして使いまわすことが可能。つまり
開発環境・検証環境・本番環境の構築の手間を削減することが でき実装コストを下げつつ、手動での操作によって発生する設定ミスを防ぐことができます 。 - リポジトリでインフラ構築をコード管理できる - レビュー・履歴の確認・バージョン管理など数多くのメリットを享受することが可能になります。 - 仮に設定をミスしたとしてもコードを復元してデプロイしなおすことによって簡単に戻すことが可能になります。 - Excel管理しているパラメーターシートの管理は非常に手間で設定変更後に更新されなかった場合、実環境と差異が生まれド キュメントとしての価値を失いがちですが、 CDKは実装と直接結びついており、コードがドキュメントとなります。 - CDKをTypeScriptで記述することでライブラリを活用できる - Linter, FormatterとなるESLint, Prettier, Biomeやテスト用のJest, Vitestなどを利用できます。モダンフロントエンドは js系のフレー ムワークを採用することが多いため設定も使いまわすことが可能な場合も多く効率的です。 - cdk-nagのようなCDK専用のセキュリティ用のライブラリも公開されており品質向上のための施策を打つことが可能です。 2-4. CDKを採用するメリット( ITS社員目線)
IaCツールについて - 選択肢として挙げられる物はだいたい以下の3つ。 - CloudFormation - Teraform - AWS CDK
- CDK特有のメリットは以下が思い当たります。 - JAWS-UG CDK支部という勉強会が頻繁に行われており、注目度の高さがうかがえます。 - Tips的な内容などの学習コンテンツとして活用できます。 - Qiita, Zenn, クラスメソッドなど記事が大量に転がっていてキャッチアップが容易 - 公式ドキュメントが充実しておりコード例も記載されており助かる。 - CDKをTypeScriptで記述できるということは WEBチームはTypeScriptが書けるので実質的なインフラ人員増を考えることが可 能。 - 他ツールと比較してIaCを推す理由をいくつか述べます。
3.IaCツールについて - CloudFormationと比較 - コードの記述量が圧倒的に少ない。 - CDKはメソッドやクラスを活用して高いレベルで抽象化しているため、それらを利用することで保守性の高い、簡潔なコー ディングを行うことができるメリットがあります。 - NPMのライブラリの恩恵を受けることができる
- 保守性・効率性の向上が期待できます。 - Terraformとの比較 - Google Trendで比較するとCDKのほうが人気です。 (2024年度で比較) - より情報を集めやすく、利用できるエンジニアのパイが大きいメリットがあると考えられます。 - HCLという専用の言語で記述します - コードの記述方法の自由度が少ないと言われており、誰が書いても同じようなスタイルになることで保守性の観点でのメ リットがあるかと思います。 - 逆にTerraform以外で使わない言語のため、新たに学習する必要があります。 TypeScriptはWEBでも使えますがHCLで は応用が効きません。 Lambdaを記述するときなど結局別言語を使う羽目になります。 3-1. IaCを推奨する理由
4.参考記事 - なぜCDKを使うべきなのだろう? - https://tech.uzabase.com/entry/2024/03/29/112719 - VSCodeなどのエディタによってサポートされる - TypeScriptと相性がよくシンタックスレベルのエラーが静的にチェックされる -
コードの補完が効く - 少ない労力で本質的なことができる - スタートアップで”より生かせる”AWS CDKのいいところ3つ - https://logmi.jp/tech/articles/329752
5.私がCDKのキャッチアップのために利用した教材 - CDK Workshopの TypeScriptのセクションを通してハンズオンで構築しました。 - https://cdkworkshop.com/ja/20-typescript.html - 動くものができるのでイメージがわいて丁度いいです。 -
上記を作った後、自分が作りたいアプリや構築が比較的簡単に済みやすい静的サイト、サーバレスアプリなどを実装し て学習を継続しています。
6.最後に - おさらいです - CDK TypeScriptによるIaCが最もおすすめです - ドキュメントが充実 - トレンドとして注目されており情報のキャッチアップが容易
- コードとして実装しリポジトリでバージョン管理できる - 再利用しやすく効率的 - TypeScriptなら扱えるエンジニアが多い - ライブラリを活用してさらに効率化を図れる - コードがドキュメントとなり管理されないパラメーターシートから解放される