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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
ryosuke-horie
May 25, 2024
Technology
57
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
社内AWSインフラのIaC化にCDKを提案する資料
ryosuke-horie
May 25, 2024
More Decks by ryosuke-horie
See All by ryosuke-horie
バックエンドエンジニアがデザインとフロントエンドに挑戦してみた
hreryosuke03
0
280
Other Decks in Technology
See All in Technology
200個のGitHubリポジトリを横断調査したかった
icck
0
110
SIer20年! 培ったスキルがスタートアップで輝く時
shucho0103
0
840
Disciplined Vibes: Scaling AI-Assisted Engineering
sheharyar
0
140
Agentic Web
dynamis
1
210
チームで進めるAI駆動アジャイル×ウォーターフォール
kumaiu
0
150
失敗を資産に変えるClaude Code
shinyasaita
0
540
日本 Fintech 未来予測レポート 2027〜2028年(オリジナル版)
8maki
0
2k
FinOps × AIエージェントで実現する コストインシデントの自動調査
oasis1994liveforever
0
130
LLMと共に進化するプロセスを目指して
ymatsuwitter
13
4.1k
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
7
1.8k
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
390
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
0
370
Featured
See All Featured
The Spectacular Lies of Maps
axbom
PRO
1
800
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
580
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
840
GitHub's CSS Performance
jonrohan
1033
470k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Utilizing Notion as your number one productivity tool
mfonobong
4
320
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
480
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2k
Everyday Curiosity
cassininazir
0
230
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
430
BBQ
matthewcrist
89
10k
The untapped power of vector embeddings
frankvandijk
2
1.8k
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なら扱えるエンジニアが多い - ライブラリを活用してさらに効率化を図れる - コードがドキュメントとなり管理されないパラメーターシートから解放される