SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2024 セッションレポート(AD)

AWS CDKでサーバレスのローカル開発環境を構築した理由とは? デメリットの解消方法と実運用で直面した課題

【16-B-5】AWS CDK×サーバレスアーキテクチャを極める

  • X ポスト
  • このエントリーをはてなブックマークに追加

「Serverless Framework」と「AWS CDK」の比較検討

 一般的にサーバレスアーキテクチャの構成管理としてよく利用されているのは、「Serverless Framework」である。だが齋藤氏たちは「AWS CDK(以下、CDK)」も検討した。AWS CDKは、AWSのインフラストラクチャをTypeScriptやPythonなどの慣れ親しんだプログラミング言語で構築することのできるツールキット。プログラミング言語で記述するため、for文やif文などの構文が利用できたり、CDKのライブラリからAWSの各リソースが抽象化されて提供されたりしているのが特長。CloudFormationと比較し、圧倒的に少ないソースコード量で構成の管理を行える。またデプロイすると、CloudFormationスタックが作成され、リソースを構築できる。

図1.AWSインフラストラクチャをプログラミング言語で構築できるツール
図1.AWSインフラストラクチャをプログラミング言語で構築できるツール

 そこで、齋藤氏は両者の比較検討を行った。CDKはあらゆるリソースがシンプルに、少量のコードで記述できる。またAWSが公式にサポートしているので安心感もある。その一方で、CDKに記述した構成でローカル開発環境を構築するための知見も少ない。またCDKはAWSのリソースしか構築できないため、ベンダーロックインに陥るところも気になる。

 一方のServerless Frameworkは、Lambdaなどのサーバレスリソースに限ればシンプルな記述で管理することができることや、さまざまなプラグインも充実しており、容易にローカル開発環境を構築できるというメリットがある。だがサーバレスリソース以外のリソースについては、CloudFormationライクな記述をしなければならない。「CloudFormationはCDKと比較してソースコードの量が肥大化しやすい。とはいえファイルを分割しようとしても分割単位の難しさもある。さらにリソース間の関係が見えにくいという短所もあります」(齋藤氏)

 双方のメリットを生かして、サーバレスリソースの構成管理にはServerless Framework、その他のリソールにはCDKを利用するという手も検討した。だが複数のIaCツールを使うとなると双方ともに学習コストやメンテナンスコストがかかったり、デプロイ機構が複雑化したり、新規リソースをどちらのツールで管理するかを考えたりなど、さまざまな面で管理が面倒になる。

 最終的に、「CDKはサーバレスアーキテクチャのローカル開発環境をクリアできれば、CDKに軍配が上がる。快適なローカル開発環境を構築しつつ、すべてCDKで管理できる」と齋藤氏は考えたという。またベンダーロックインに関しては「アプリケーション要件として、マルチクラウド構成が求められていない場合は目をつむることはできると思った」と説明する。

 齋藤氏たちが開発した製品のAWSアーキテクチャは下図の通り。フロントエンドにはAmazon CloudFront(以下、CloudFront)とAmazon S3(以下、S3)を採用。アプリケーションのバックエンドにはサーバレスアーキテクチャを採用し、APIエンドポイントごとに1つのLambdaを割り当てている。また大規模データを処理する製品のため、ETL処理にはGlueとRedshiftを利用している。

図2.新製品で採用したAWSアーキテクチャ
図2.新製品で採用したAWSアーキテクチャ

 「ここではバックエンドのサーバレスアーキテクチャにフォーカスして説明したい」と齋藤氏は前置きし、CDKのアーキテクチャソースコードの紹介を始めた。エンドポイントごとにLambdaリソースの定義が必要になるので、1つのファイルの中でソースが肥大化しないような構成にしたという。

 齋藤氏たちが開発している製品は新規プロダクトであることから、速度が重視される。よってチームも2~3人のフルスタックエンジニアで構成された。「各開発者が1つの機能をシームレスに開発できると効率的だと考えた」と齋藤氏は話す。

次のページ
E2Eな開発をローカルで完結! AWS CDKを用いた開発環境の構築

関連リンク

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Developers Summit 2024 セッションレポート連載記事一覧

もっと読む

この記事の著者

中村 仁美(ナカムラ ヒトミ)

 大阪府出身。教育大学卒。大学時代は臨床心理学を専攻。大手化学メーカー、日経BP社、ITに特化したコンテンツサービス&プロモーション会社を経て、2002年、フリーランス編集&ライターとして独立。現在はIT、キャリアというテーマを中心に活動中。IT記者会所属。趣味は読書、ドライブ、城探訪(日本の城)。...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

丸毛 透(マルモ トオル)

インタビュー(人物)、ポートレート、商品撮影、料理写真をWeb雑誌中心に活動。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

提供:株式会社Works Human Intelligence

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/19251 2024/05/16 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング