Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JAWS DAYS 2022 IaCツール徹底比較

Kazuki Maeda
October 08, 2022

JAWS DAYS 2022 IaCツール徹底比較

Kazuki Maeda

October 08, 2022
Tweet

More Decks by Kazuki Maeda

Other Decks in Programming

Transcript

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

    View Slide

  2. 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が好き
    競馬は全くわかりません
    実況・解説

    View Slide

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

    View Slide

  4. 出走馬紹介

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  9. コース紹介

    View Slide

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

    View Slide

  11. スタート!!!!

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  23. 結果発表!!!!

    View Slide

  24. 結果発表

    View Slide

  25. 結果発表
    CDK Terraform SAM Serverless
    拡張性 ◎
    AWSリソース一般に
    同レベルで管理可能

    AWSリソースの追従
    性は高い
    AWS外のリソース管
    理も可能

    CFnのテンプレートを
    ベタで記述することで
    拡張可能

    同左
    AWS外のリソースも管
    理できる
    機敏性 ◎
    SAMと組み合わせた
    ローカル環境
    watchによるhotswap
    が可能

    AWSへのデプロイが
    必須となり、手軽な管
    理は難しい

    対応リソースの範囲内
    であればローカル環境
    を簡単に立ち上げられ


    同左
    運用性 ◯
    Code系やGithub
    actionsなど用いた一
    般的なCIが可能

    Terraform Cloudの存
    在は大きい

    一般的なCIは可能
    エコシステムは途上か
    もしれない

    Serverless CI/CDが
    ある
    pluginのエコシステム
    も豊富

    View Slide

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

    View Slide

  27. ありがとうございました

    View Slide