Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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!