omuronの備忘録

個人的な備忘録

「【5/18(火)リモート開催】AKIBA.AWS ONLINE #03 -IaC を語りたい 編」 #AKIBAAWS 受講メモ

dev.classmethod.jp

PC ブラウザで登録してもメールが来なくて複数メールでチャレンジしても来なくて、iOS ブラウザからなら登録完了しました。
何度かクラメソイベントには登録しているから問題ない環境だとは思うんだけど何故でしょうね。
Twitter で拾ってもらってサポートしてもらえたおかげで見ることができました。

セッション

IaCで全てが上手くいくと思うなよ!失敗事例のご紹介

講師:もこ氏

  • IaC は手段であり目的ではない!
    • 何も考えないで IaC を作ると破綻する。
    • IaC 利用のメリットが無ければ使わない
  • CloudFormation は YAML で全てを書かないといけない
    • マネコンでサクッと作っていたものを全て把握する必要あり
  • CDK は1行書けば付随するリソースもまとめて作ってくれる
    • 暗黙的リソースを把握する必要あり
  • リソースを素手で触らない固い意志!
    • IaC でいい感じにリソース管理しているけどデプロイ手動が一番良くない
      • 自動化すべき
  • 事故例
    • network -> ec2 -> alb と依存関係あり
    • ec2 入れ替えたい
      • ec2 を作って alb から外して ec2 を再作成して...とつらくなる
    • ec2 と alb のライフサイクルが同じだから一緒のスタックにすべき
      • コード量が多くなるので一長一短
  • 規模が大きほど Terraform 推奨
    • コマンド一発で差分を見ていい感じにしてくれる
  • IaC との付き合い方を決める
    • 運用するか構築だけで捨てるか?
    • IaC も CI/CD する、Git を適切利用
  • AWS 環境は絶対に素手で触らない
  • インフラとアプリの境界線は引く

Former2でコード生成してGUIポチポチ卒業の第一歩を

講師:inomaso 氏

  • Former2 とは?
    • ブラウザ Web サービス
    • JavaScript SDK 利用
    • AWS 認証情報を利用してリソースへアクセス
      • アクセスキーシークレットキーを入れる必要あり
      • AWS Open Source Blog では外部送信しないように設計されているとのこと
    • CFn/Terraform のコード自動生成
  • Docker でローカル環境に作れる
  • 小規模環境や検証環境をコード化するのに便利

JAWS DAYS のセッションの ゼロからはじめる Infrastructure as Code ~SIer企業がAWSで⾃社Webサービスを⽴ち上げて2年間運⽤してきた話~ とかぶる内容で心折れそうになったとのことなので、こちらも参考になりそうです。

TerraformとCloudFormationどちらを採用すべき?

講師:深澤俊氏

  • Terraform or CloudFormation
    • メンバーでメンテ可能か?
      • 技術特性を理解して運用できるか?
  • Terraform
    • HashiCorp 提供
    • HCL で記述
      • 構造体利用の繰り返し処理
      • 組み込み関数
      • プログラム言語に近い記述
      • 戻り値で挙動を変えたりできる
    • ローカルPC等のマシン上で実行
    • Provider 切り替えで異なる IaaS にデプロイできる
    • Terraform と Provider のバージョンの管理が必要
  • CloudFormation
    • 複雑な処理は難しい
    • AWS との親和性が高い、関連サービス多い

QA

  • CDK のおすすめ言語は?
    • 静的型付け言語であれば、どれでも得意な言語でOK
    • Node.js 上で動くので、TypeScript が相性いいのでは?
      • ググラビリティ的にも TypeScript が情報量多い
  • どこから IaC すべき?
    • 足回りの VPC とかからがおすすめ
    • やりやすいところからでいい
  • IaC を何人で運用している?
    • プルリクエスト見る人も含めて二人は欲しい
  • CloudFormation の分割の粒度は?
    • 非常に難しい
    • CDK 使うと解決しやすい...
    • ライフサイクルで合わせる or 一つのスタックにする
  • IaC 使ったきっかけは?
    • すでにあったからなど
    • 小さいところから使い始めるのがいい

所感

もこさんのセッションはわかり味が深い内容でした。
「IaC も CI/CD すべき」という部分が実践できてません。
ミスった時に痛いから、コードが正しいか cfn-lint で確認して開発環境でデプロイして問題なければコードをマージして...みたいにしているので、完全自動はまだちょっと怖い部分があります。
チェックするための開発環境と思えば大丈夫ではあるんでしょうが。

Terraform よくおすすめされるけど、Terraform まで手を出す余裕がない状況。
AWS しかさわってないし、CloudFormation にロックインされたままでしばらくいそう。
CDK の良さは存分にわかってきました(が抽象度が高い書き方だとリソースいっぱいできるのが楽だけど怖い)。