85
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

リンクアンドモチベーション Advent Calendar2021Advent Calendar 2021

Day 17

【SRE・インフラエンジニア素人】がリリース時間を1/8にした話

Last updated at Posted at 2021-12-16

はじめに

この記事はリンクアンドモチベーション Advent Calendar2021の17日目の記事です。

はじめまして。リンクアンドモチベーションの岸本です。
本記事では、SREにジョインして、半年ほどで
リリース時間の短縮に取り組んだので、
最終的な結果とリリースの時間削減以外にフローを整えるに当たって工面したことを紹介します。

取り組んだ背景はエンジニアの生産性を高めるために必要な4つの指標を参照していただければと思います。

実際にどのくらい短縮したのか?

先に結果から言うと、
平均2時間平均15分
へ短縮できました。

なぜ短縮できたのか?

ToBサービスであるモチベーションクラウドでは、顧客影響がある場合、決まった時間から、決まった時間内にリリースしないといけない制約がありました。
基本的にいくつかのcodebuildでリリースを完了ができる状態にはなっていましたが、ダブルチェックの元、一つずつ手動で環境変数等を変えて作業を行なっていたため時間がかかっていました。

そこで自動化できるところと手動でやるべきところを明確にわけ、事前にできるところはリリース時間前にやっておくことで、リリース時間の短縮に成功しました。
スクリーンショット 2021-12-16 19.55.51.png

前提情報

アーキテクチャ図
モチベーションクラウドサービスは、ECSのblue/green環境とbatch処理を行うEC2環境での構成になっております。
簡易アーキテクチャ図.png

リリース時間短縮のために使っているAWSサービス

  • codebuild
  • codepipeline
  • lambda
  • chatbot
  • eventbridge

リリースフロー概要

以下で簡単にリリースフローの概要を説明します。
リリースフロー図
デプロイフロー.jpeg

STEP 概要 実施タイミング 実施方法  詳細
1 待機系デプロイ 事前作業 githubのmaster mergeのタイミング ・docker imageの作成
・復旧用のRDSのスナップショット作成
・ECSへの最新masterデプロイ
2 Migrate,Seed処理 事前作業 codebuildで手動実行 migrate,seedでデータベース更新 
3 待機系の数を上げる 事前作業 slackから実行 chatbotを利用して、slackからcodebuildを起動し、待機系のインスタンス数を上げる
4 blue/green切り替え リリース作業 codepipeから手動実行 ・batchのデプロイ
・ALBのblue/greenの切り替え
- 待機系の数を下げる 定期実行 EventBridgeでcodebuildを定期実行 営業時間外にcodebuildを自動実行し待機系のインスタンス数を下げる

上記のように、事前作業でほとんどの作業が完了でき、リリース時間でやる作業はblue/green切り替えのみとなり、短縮ができました。

リリースの時間削減以外にフローを整えるに当たって工面したこと

1. 外から情報を集め,まとめる

他社のリリース方法や、blue/greenでのリリース方法のベストプラクティスなど様々な情報をかき集めると、新しいサービス・気付きが得られるので、時間を割いてでもしっかりと情報を集め、自分なりにメリット、デメリットをまとめることが重要だと思いました。

2. 現状を把握する

自社内のアーキテクチャやサービスの仕様と顧客とのどのような握りをしているかを把握することで、一番実現高い可能性でのリリースフローを考えられます。
アーキテクチャ・サービス等の状況に応じて変更するのが重要だと思いました。

3. カジュアルすぎるリリースフローはやめる

blue/green切り替えをslackからやる方法も考えていましたが、あまりにもカジュアルすぎると人間なので、ミスを犯す可能性があり、避けたほうがいいと思いました。

4. 運用に乗るまでサポートを徹底する

リリースフローが大きく変わったため、慣れるまではしっかりとドキュメントの整理やフォロー体制を整えて、慣れるまでしっかりとサポートすると同時に、フィードバックをもらい精査していくことで、浸透させていく努力が必要だなと思いました。

まとめ

簡単なことしかやってないですが、少しの取り組みで大きな成果が得られることができました。
少しでも何かの参考になれば幸いです。

85
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
85
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?