Slide 1

Slide 1 text

IaCツール徹底比較 ~Slack botの開発に最も適した IaCツールダービー~ @kzk_maeda

Slide 2

Slide 2 text

Kazuki Maeda @kzk_maeda SRE @atama plus AWS Community Builders / AWS Startup Community Core Member --- 日系電機メーカー法務→Recruitでインフラエンジニアとして、オンプレ、社内ITシステムなど経験したあとクラウド、 PMなど→スタートアップに転身してEM→現職 AWSはサーバーレス・データ基盤周りの技術が好き  Lambda / StepFunctions / Glue / MWAA / Athena を触っていきたい IaCはTerraformが好き 競馬は全くわかりません 実況・解説

Slide 3

Slide 3 text

本日の趣旨 みなさん、IaC(Infrastructure as Code)してますか?? どのIaCツールを選定すればいいか、迷うこと、多いですよね?? 今日は特定のシステムを複数のIaCツールで作ってみた時の比較を行い、 それぞれのツールにどんな特徴があるのかを調べていきたいと思います 普通にやっても面白くないので競馬形式でいきます!

Slide 4

Slide 4 text

出走馬紹介

Slide 5

Slide 5 text

本日のレースの出走馬紹介 1 AWS CDK 父馬:AWS社 / 母馬:CloudFormation ● AWS公式が提供する、AWSリソースをプログラミング言語で 記述するためのFramework ● PythonやTypeScriptなどが利用可能 ● 裏側ではCloudFormationが利用される ● AWS公式のためのリソース追従性や拡張性の高さに期待

Slide 6

Slide 6 text

本日のレースの出走馬紹介 2 Terraform 父馬:HashiCorp社 / 母馬:Go言語 ● HashiCorp社によって提供される、オープンソースの IaC ツール ● マルチクラウドプラットフォームや監視サービスなどの周辺 ツールにも対応 ● 広く利用され、知見が世の中に多く出回っている人気の高さ が特徴

Slide 7

Slide 7 text

本日のレースの出走馬紹介 3 AWS SAM 父馬:AWS社 / 母馬:CloudFormation ● AWS社によって提供される、サーバーレスアプリケーション 構築に特化したオープンソースの IaCツール ● 裏側ではCloudFormationが利用される ● サーバーレスリソースを簡単に記述できる敏捷性の高さで逃 げ切れるか

Slide 8

Slide 8 text

本日のレースの出走馬紹介 4 Serverless Framework 父馬:Serverless社 / 母馬:Node.js ● Serverless社によって提供される、サーバーレスアプリケー ション構築に特化したオープンソースの IaCツール ● Node.jsで記述されており、コミュニティによる pluginも豊富 ● SAMに引けを取らない敏捷性に加え、マルチクラウドのため 対応できるコースも多い

Slide 9

Slide 9 text

コース紹介

Slide 10

Slide 10 text

アーキテクチャ ● SlackからChatbot経由でLambdaを起動し、なんらかのデータをDynamoDBに格納 ● ChatbotというServerless Stackではあまり見ないサービスを利用したい コーナー(拡張性、敏捷性、運用性) ● 対応サービスの豊富さ ● Lambdaでの機能開発のしやすさ ● 継続的な改善のしやすさ コースの紹介 IaC対象

Slide 11

Slide 11 text

スタート!!!!

Slide 12

Slide 12 text

第1コーナー(拡張性) CDK / Terraform ● 多くのAWSサービスを網羅しており、基本的なリソース作成は可能 ● しかし!2022/10時点でTerraformはAWS Chatbotに対応していない※1 ○ 3rd partyのツールなので追従性は完璧ではない ※ https://github.com/aws/aws-sdk-go/issues/3582

Slide 13

Slide 13 text

第1コーナー(拡張性) SAM / Serverless framework ● APIGW、Lambda、DynamoDBといった、よくあるServerlessリソースの構築は高度に抽象 化されていて非常に便利 ● 一方でそこから外れたリソースを作成しようと思うと、 CloudFormationのテンプレートを記述 する必要がある ○ Frameworkにより抽象化されたリソースと素で定義されたリソースが混在する

Slide 14

Slide 14 text

幅広いリソースに対応し、記述もしやすいCDKが一歩リード! 拡張性では有利と思われたTerraformは少し遅れる展開!

Slide 15

Slide 15 text

第2コーナー(機敏性) SAM / Serverless framework ● LambdaやDynamoDBリソースをローカルで立ち上げて Functionの実行確認を行うことがで きる ● 一方、Chatbotの様なリソースはローカルで立ち上げることができるわけではないので幅広い リソースを統合的に動作確認することは困難 ローカルで所定の Lambda runtimeを実行するイメージが立ち上がり、よく見る Lambdaのログが出力されている

Slide 16

Slide 16 text

第2コーナー(機敏性) CDK ● cdk watchコマンドによるhotswap、ローカルでのログ確認が便利過ぎて Lambdaの機能開 発が捗る! Lambdaの変更を検知して、 CFn stackを飛ばして 自動デプロイ 手元でAPIの実行ログを確認し てデバッグ

Slide 17

Slide 17 text

第2コーナー(機敏性) Terraform ● 毎回 terraform apply コマンドを実行して、Terraformで定義したリソースをAWSにデプロイ してから確認する必要があり、Lambdaの軽微な修正を即座に確認するには向かない・・

Slide 18

Slide 18 text

ローカル環境を模擬できるSAM / Serverlessが追い上げてきてるが CDKもwatchが強くリードを崩さず!

Slide 19

Slide 19 text

第3コーナー(運用性) Terraform ● Terraform Cloud!!!! ● 容易な設定でTerraformの 実行環境を得られる ● グラフィカルなdiff参照、 Workflow機能などTerraform を利用するならセットで 使いたい ● 回しものではありません RepoにpushするとCloudでplanが実行され、どのような変更 が走るかが視覚的に理解できる

Slide 20

Slide 20 text

第3コーナー(運用性) Serverless CI/CD ● Serverless frameworkで定義したテンプレートに対して CI/CDを実行するSaaS ● Terraform Cloudほどの機能性は無いが、リポジトリとの連携など容易に実行することが可能

Slide 21

Slide 21 text

第3コーナー(運用性) CDK / SAM ● Code Pipelineや、Ciecle CI / Github actionsを持ちたCI/CDのパイプラインを柔軟に構築 することは可能 ● ある程度CI/CDに関する知識を求められ、初期設定や configの管理運用が必要となる

Slide 22

Slide 22 text

強力なCI/CDサービスにより、Terraformが追い上げてきた!! 果たして最終的に勝利するのは!

Slide 23

Slide 23 text

結果発表!!!!

Slide 24

Slide 24 text

結果発表

Slide 25

Slide 25 text

結果発表 CDK Terraform SAM Serverless 拡張性 ◎ AWSリソース一般に 同レベルで管理可能 ◎ AWSリソースの追従 性は高い AWS外のリソース管 理も可能 ◯ CFnのテンプレートを ベタで記述することで 拡張可能 ◯ 同左 AWS外のリソースも管 理できる 機敏性 ◎ SAMと組み合わせた ローカル環境 watchによるhotswap が可能 △ AWSへのデプロイが 必須となり、手軽な管 理は難しい ◯ 対応リソースの範囲内 であればローカル環境 を簡単に立ち上げられ る ◯ 同左 運用性 ◯ Code系やGithub actionsなど用いた一 般的なCIが可能 ◎ Terraform Cloudの存 在は大きい ◯ 一般的なCIは可能 エコシステムは途上か もしれない ◎ Serverless CI/CDが ある pluginのエコシステム も豊富

Slide 26

Slide 26 text

最後に、真面目な話 ● 最適なIaCツールの選定は、作ろうとしているシステムの特性や、どのように運用する想定か、 またチームのスキル感など様々な条件に左右されます ● 何が正解で、何が不正解、どれが最も良い、といった単純な比較ができるようなものではありま せん ● システム特性やチーム特性、運用イメージなど複数の項目から最適な IaCツールを選定してい き、快適なIaCライフを楽しみましょう!!

Slide 27

Slide 27 text

ありがとうございました