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

数時間かかる週一リリースを毎日何度も爆速でできるようにするまで / CI/CD Conference 2021

数時間かかる週一リリースを毎日何度も爆速でできるようにするまで / CI/CD Conference 2021

CI/CD Conference 2021

Takashi Kokubun

September 03, 2021
Tweet

More Decks by Takashi Kokubun

Other Decks in Programming

Transcript

  1. 自己紹介 • GitHub, Twitter: @k0kubun • Treasure Data ◦ API:

    プラットフォーム 1年 ◦ SRE: デプロイ 1年 ◦ Backend: ストレージ 2年半
  2. サービスクラスタ作成ツール • YAML 1枚書いてSlackにコマンドを書くと、クラスタができる ◦ SlackコマンドはAWS LambdaからPythonでAWS SDK (boto3) を叩く実装

    ◦ 現在のリソースとYAMLを比較し、必要な差分を作るようになっている ◦ ASG, Launch Config, Lifecycle Hook, ALB, Route53, CodeDeploy • 本番の作業と同じようにオンデマンドクラスタを作れる ◦ 開発中ブランチのテストやベンチマークに便利
  3. Terraform • オンデマンドクラスタに不要なリソースをTerraformで管理 ◦ 主に複数クラスタから共有されるリソース: IAM, Security Group, RDS, DynamoDB,

    Kinesis • モニターやアラートの定義も最近ほぼTerraform化された • 入社した時はこのあたりが大体手動管理だった
  4. CodeDeploy: Traffic Controlは必要か • ALBのBlock/Allow TrafficがCodeDeployのボトルネックになる • とはいえ、サーバーのgraceful restartは意図しない状態が残りがち なので避ける

    • 適当に停止してデプロイ中意図的に502を出すことによって、クライ アントがリトライを適切にしているかのテストになる
  5. AWS Lambda, KDA, EKSへのリリース自動化 • 一番スタンダードなデプロイ方法しか自動化できていない ◦ ほとんどのサービスはEC2 AutoScaling Groupにデプロイしているため

    • デプロイ基盤の整備具合から、新サービスのインフラに妥協が入る ことも ◦ CodeDeployにdocker saveしているものは、EKSの方が楽にデプロイでき、リ ソースも柔軟にコントロールできるようになる