EC2 からの脱出劇:多用途なサーバの全役割をサーバレス・コンテナ環境へ
by
Akari
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
Copyright © 2023 ANDPAD Inc. All Rights Reserved. EC2 からの脱出劇:多用途なサーバの全役割 をサーバレス・コンテナ環境へ 明里 慶祐 株式会社 アンドパッド 2023/12/4 カヤック・アンドパッド 合同 プロポーザル供養会
Slide 2
Slide 2 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 1. 自己紹介 株式会社アンドパッド / プラットフォーム開発チーム 明里 慶祐 @k-akari @akarin0519 2022年5月入社。 2023年3月まで、社内で最も古くから稼働する施工管理アプリ (Rails)のインフラ・CI/CD改善に従事。 2023年4月よりANDPADの通知プラットフォーム(Go言語、 gRPCサーバ)の開発に従事。
Slide 3
Slide 3 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 2. 供養するプロポーザル https://event.cloudnativedays.jp/cndt2023/talks/1985
Slide 4
Slide 4 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 3. 関連するテックブログ 2022/12/23 施工管理サービスの定期実行ジョブ処理基盤を EC2からコンテナへ移行しました 2023/8/22 データパッチ環境と有事の際のログイン環境をサー バレス化・コンテナ化した取り組み
Slide 5
Slide 5 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 4. 今日のテーマ 質問: みなさんの企業には、外部に大きい声では言えない レガシーなサーバはありますか?
Slide 6
Slide 6 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 4. 今日のテーマ 質問: みなさんの企業には、外部に大きい声では言えない レガシーなサーバはありますか? → はい、以前のアンドパッドにはありました。 バッチサーバというラスボスが。 主題: レガシーなサーバの倒し方
Slide 7
Slide 7 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 5. かつてのラスボス、バッチサーバとは
Slide 8
Slide 8 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 6. なぜバッチサーバを倒したかったのか 1. 初期に手動構築された背景があり、 正確な再構築方法が不明になっていた。 2. 当時既に標準サポートが切れていた Amazon Linux 1を利用していた。 3. 単一障害点となっていた。 4. Ruby, Rails, 各種gemやライブラリの アップデート作業の負担を増加させていた。 バッチサーバ
Slide 9
Slide 9 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 7. バッチサーバの倒し方
Slide 10
Slide 10 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 8. バッチサーバが担っていた役割 1. DBマイグレートの実行環境 2. 定期実行ジョブの実行環境 3. データパッチの実行環境 4. 調査のための踏み台環境
Slide 11
Slide 11 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 9. DBマイグレートの実行環境の移行 1. DBマイグレートの実行環境 2. 定期実行ジョブの実行環境 3. データパッチの実行環境 4. 調査のための踏み台環境
Slide 12
Slide 12 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 10. DBマイグレートの実行環境の要件 1. CodePipelineで組まれたデプロイフローの中で DBマイグレートが実行できること 2. DBマイグレートの実行結果が確認できること
Slide 13
Slide 13 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 11. DBマイグレートの実行環境の移行先選定 移行先候補: 1. CodeBuild(←採用) 2. KubernetesのJobリソース 主な選定理由: 1. CodePipelineから見たデプロイフローのわかりやすさ 2. ログの取り回しなどを含めた、環境構築の容易さ
Slide 14
Slide 14 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 12. DBマイグレートの実行環境をCodeBuildへ移行した後
Slide 15
Slide 15 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 13. 定期実行ジョブの実行環境の移行 1. DBマイグレートの実行環境 2. 定期実行ジョブの実行環境 3. データパッチの実行環境 4. 調査のための踏み台環境
Slide 16
Slide 16 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 14. 定期実行ジョブの実行環境の要件と移行先選定 移行先環境の要件 && 移行先候補 && 選定理由: 1. 依存物を増やしたくないので、EKS以外に移行することは そもそも考えなかった。
Slide 17
Slide 17 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 15. 定期実行ジョブの実行環境の移行要件 移行要件: 1. 定期実行ジョブを無停止で移行する 2. 定期実行ジョブを重複実行させない
Slide 18
Slide 18 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 16. 定期実行ジョブを無停止でEKSへ移行するフロー (参考)Notes about running on Multiple Hosts - sidekiq-scheduler
Slide 19
Slide 19 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 17. 定期実行ジョブの実行をEKSへ移行した後
Slide 20
Slide 20 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 18. データパッチの実行環境の移行 1. DBマイグレートの実行環境 2. 定期実行ジョブの実行環境 3. データパッチの実行環境 4. 調査のための踏み台環境
Slide 21
Slide 21 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 19. データパッチの実行環境の要件 1. 本番環境のDBにアクセスし、データを変更できること 2. 本番環境のブランチ以外のコードも実行できること 3. rake taskとrails runnerによるプログラム実行ができること 4. データパッチプログラムがエンキューした非同期ジョブが処 理されること 5. 作業ログをファイル回収できること 6. 「承認を得ていない本番更新操作を行なっていないこと」の 監査ができること
Slide 22
Slide 22 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 20. データパッチの実行環境の移行先選定 移行先候補: 1. CodeBuild(←採用) 2. KubernetesのJobリソース 3. ECS on Fargate 主な選定理由: 1. 要件を満たす環境構築の容易さ ↑ CodeBuildだとPRブランチでのイメージビルドが不要 2. 社内の多くの開発者にとって馴染みがある
Slide 23
Slide 23 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 21. CodeBuildで構築したデータパッチの実行環境と運用フロー
Slide 24
Slide 24 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 22. データパッチの実行環境をCodeBuildへ移行した後
Slide 25
Slide 25 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 23. 調査のための踏み台環境の移行 1. DBマイグレートの実行環境 2. 定期実行ジョブの実行環境 3. データパッチの実行環境 4. 調査のための踏み台環境
Slide 26
Slide 26 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 24. 調査用踏み台環境の必要性 そもそも必要? →以下2点の理由で必要と判断 1. 本番データ特有のバグに対して、直接調査を行う環境を利用 することで、迅速にバグを解決できる場合がある 2. 急に本番環境にログインする環境がなくなることに漠然とした 不安あり。←歴史ある巨大なモノリシックサービスなので
Slide 27
Slide 27 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 25. 調査用踏み台環境の機能要件 機能要件: 1. 本番環境のブランチでrails consoleが起動できること 2. 起動したrails consoleから本番環境のデータベースとRedisと S3バケットにアクセスできること 3. 起動したrails consoleから非同期ジョブをエンキューした場合 に、これが処理されること
Slide 28
Slide 28 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 26. 調査用踏み台環境のセキュリティ要件 セキュリティ要件: 1. 開発者によるログインを検知してSlack通知すること 2. ログインした開発者が危険なコマンドを実行した場合に、 これを検知してSlack通知すること 3. 上記のSlack通知に対して執行役員以上から承認を受けた旨の証 跡を返信せずに1日放置した場合、アラート通知がなされること
Slide 29
Slide 29 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 27. 調査用踏み台環境の移行先選定 移行先候補: 1. ECS on Fargate(←採用) 2. KubernetesのDeploymentリソース 主な選定理由: 1. 環境構築が容易←セキュリティ要件を満たす仕組みが既に存在
Slide 30
Slide 30 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 28. ECSで実現した開発者向けの調査用踏み台環境 ※ ECSサービスはコンテナの立ち上げ操作を簡易にするために用意した。
Slide 31
Slide 31 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 29. 調査用踏み台環境をECSへ移行した後
Slide 32
Slide 32 text
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 30. まとめ 本発表では、レガシーなサーバを倒した話を説明しました。 レガシーなサーバの倒し方は以下に尽きるので、どなたかの 参考になれば幸いです😄