スタートアップ企業での散乱した システムリリースフローをととのえる話/Maintain the system release flow
by
SadayoshiTada
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
スタートアップ企業での散乱した システムリリースフローをととのえる話 多田 貞剛
Slide 2
Slide 2 text
2 自己紹介 多⽥ 貞剛 @tada_infra 株式会社スナックミー SRE/CorpEng 担当 筋トレとサウナが好きです JAWS DAYS 初登壇です😌
Slide 3
Slide 3 text
会社紹介
Slide 4
Slide 4 text
会社紹介 • おやつ体験 BOX 『snaq.me』 • ⽉額 1,980円(税込、送料込) • 4週 or 2週毎に100種類以上の商品からお客様にパーソナライ ズした8種のおやつをお届け
Slide 5
Slide 5 text
会社紹介 おやつ診断、商品リクエスト、商品評価などのデータを取得してお 届けするのが特⻑
Slide 6
Slide 6 text
会社紹介
Slide 7
Slide 7 text
本日お話しすること 1. システムリリースの課題 2. リリース改善に向けて取り組んだこと 3. 改善後のリリースフローの紹介
Slide 8
Slide 8 text
改善前のリリースの状況
Slide 9
Slide 9 text
• 弊社のシステムリリースには次のものがある • フロントエンド(React)のリリース • API(PHP)のリリース • 社内システム(Rails/Python)のリリース 改善前のリリースの状況
Slide 10
Slide 10 text
• 弊社のシステムリリースには次のものがある • フロントエンド(React)のリリース • API(PHP)のリリース • 上記2つはリリースが仕組み化されてる • 社内システム(Rails/Python)のリリース • 課題があり本発表も上記リリース改善に関する話 改善前のリリースの状況
Slide 11
Slide 11 text
• Rails では社内の在庫や配送などのデータが閲覧できるシス テムになっており社内業務の中核を担っている • 過去 Capistrano で EC2 1台にデプロイしていたが複数構成 になって諸々の事情があり、⼿動デプロイを⾏っている 改善前のリリースの状況
Slide 12
Slide 12 text
• Rails システムリリースでの課題に感じたこと • ⾃動化していたデプロイが⼿動実⾏になっていること • 開発者3⼈のオンサイトデプロイ⼯数が発⽣していること 改善前のリリースの状況
Slide 13
Slide 13 text
• Lambda 単体もしくは Step Functions を組み合わせて Python で開発している • AWS SAM を利⽤した開発 • Rails のシステムから直接実⾏したり、社内オペレーション を⾃動化した仕組みを定期実⾏したりしている 改善前のリリースの状況
Slide 14
Slide 14 text
• 独⾃スクリプトを実⾏しデプロイスクリプトを作り、 CodePipeline/CodeBuild によるデプロイ • Step Functions は都度作成 改善前のリリースの状況
Slide 15
Slide 15 text
• Lambda/Step Functions システムリリースでの課題に感じた こと • 独⾃ツールのため新規メンバーの学習コストが発⽣した • 独⾃スクリプトの実⾏漏れやスクリプトの課題によってデ プロイできない事象が発⽣し、業務で必要な Lambda がな いことがあった • Step Functions がコード化されてないこと 改善前のリリースの状況
Slide 16
Slide 16 text
改善に向けての課題整理
Slide 17
Slide 17 text
• 2つのリリースプロセスを改善するために開発チームにヒア リングを⾏った • 現状のリリースプロセスでやっていることや課題に感じて いることを確認 • リリースのタイミングを確認 改善に向けての課題整理
Slide 18
Slide 18 text
• Rails のシステムリリースでのヒアリングでわかったこと • サーバーにログインし⼿動でコマンドを実⾏を仕組み化し たい • サーバーごとにコマンドは異なる • リリースはマージ後即ではなく、適宜タイミングを⾒計っ てリリースする 改善に向けての課題整理
Slide 19
Slide 19 text
改善に向けての課題整理 • サーバーにログインせずにコマンド実⾏を指定した時間帯に 実施できるよう改めることにした
Slide 20
Slide 20 text
• Lambda/Step Functionsリリースのヒアリングでわかったこと • 独⾃スクリプトによるデプロイは実⾏漏れやデプロイスクリ プトの空振りもあるため⽌めたい • リリースの進⾏状況も把握したい • Step Functions もコード化したい • リリースは対象ブランチにマージされた後にリリースする 改善に向けての課題整理
Slide 21
Slide 21 text
• Step Functions のコード化と独⾃スクリプトでのデプロイフ ローを⽌めてシンプルな形に整理することにした 改善に向けての課題整理
Slide 22
Slide 22 text
リリースフロー改善の実施
Slide 23
Slide 23 text
• EC2 のリリースの改善 • Lambda/Step Functions のリリース改善 • いずれも GitHub Actions を使ったリリースフローに変更 リリースフロー改善の実施
Slide 24
Slide 24 text
• GitHub Actions を使った経緯 • 開発者も別の仕組みでも使っているため GitHub Actions に慣れている • ⾃分も開発者も扱うツールが少なくなる リリースフロー改善の実施
Slide 25
Slide 25 text
• EC2 のリリースの改善 • GitHub Actions と Systems Manager によるリリース • リリースでやっていたのはシンプルなコマンド実⾏ • Run Command で実⾏可能であることを確認 • リリースはタイミングを図って⾏う • メンテナンスウィンドウによりスケジュール実⾏ リリースフロー改善の実施
Slide 26
Slide 26 text
• Systems Manager エージェントが⼊った インスタンスに指定したコマンドを実⾏で きる • 下記のサービスで期間や⽇時を指定してタ スクを実⾏することができる • Run Command • Automation • Lambda • Step Functions 改善後のリリースフロー Maintenance windows Run command
Slide 27
Slide 27 text
• 改善に向けて⾏ったアクション • リリース時に実⾏しているコマンドを Systems Manager ドキュメントにまとめて Run Command 経由で実⾏ • GitHub Actions でメンテナンスウィンドウでリリースのタ イミングを指定し Run Command を設定する リリースフロー改善の実施
Slide 28
Slide 28 text
リリースフロー改善の実施 • 改善に向けて⾏ったアクション • Run Command の実⾏状況は Chatbot 経由で Slack に通知 してコマンドの実⾏ステータスをわかるようにした • EventBridge + SNS + Chatbot で実現
Slide 29
Slide 29 text
• Lambda/Step Functions のリリースの改善 • GitHub Actions と AWS SAM によるリリースに変更 • Step Functions も AWS SAM でコード化 リリースフロー改善の実施
Slide 30
Slide 30 text
• Lambda/Step Functions のリリース改善時の課題 • Lambda のリリースのために差分検出の仕組みが必要 改善後のリリースフロー
Slide 31
Slide 31 text
• Lambda/Step Functions のリリース改善時の課題 • Lambda と Step Functions は同じリポジトリで管理せず、 別々のリポジトリにした • Step Functions で管理する Lambda の ARN を AWS SAM が扱えるようにする必要がある 改善後のリリースフロー
Slide 32
Slide 32 text
• 設定データや機密情報管理のための階層型ス トレージ • パラメーターストアに Lambda のARN を格納 して活⽤ • AWS SAM の template.yaml で下記の定義 で指定して取り込む • '{{resolve:ssm:HogeFunctionARN:1}}' 改善後のリリースフロー Parameter store
Slide 33
Slide 33 text
• Lambda/Step Functions のリリース改善時の課題 • CodePipeline + CodeBuild のデプロイでは感知できなかっ た CloudFormation の進⾏状況を SNS + Chatbot を使っ て実現した • GitHub Actions の処理ステータスも Slack に通知した 改善後のリリースフロー
Slide 34
Slide 34 text
リリースフロー改善の実施 $MPVE'PSNBUJPOͷ࣮ߦεςʔλε (JU)VC"DUJPOTޭ௨ (JU)VC"DUJPOTࣦഊ௨
Slide 35
Slide 35 text
まとめ
Slide 36
Slide 36 text
まとめ • 社内システムに関する EC2/Lambda/Step Functions のリリース フロー課題と改善の取り組みをお話しした • 改善前に開発者が負担していたタスクを軽減し、シンプルな仕組 みを整備していくことができた • リリースフローの中にテストを組み込み切れてない等課題も残っ ているので引き続き開発者と協⼒して効率的な仕組みになるよう に進めていく
Slide 37
Slide 37 text
Thank you!