Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
EC2 からの脱出劇:多用途なサーバの全役割をサーバレス・コンテナ環境へ
Search
ANDPAD inc
December 04, 2023
Programming
0
69
EC2 からの脱出劇:多用途なサーバの全役割をサーバレス・コンテナ環境へ
明里 慶祐
@akarin0519
2023 年 12 月 4 日
カヤック・アンドパッド 合同 プロポーザル供養会
ANDPAD inc
December 04, 2023
Tweet
Share
More Decks by ANDPAD inc
See All by ANDPAD inc
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
310
読もう! Android build ドキュメント
andpad
1
400
アンドパッドにおける CocoaPods ライブラリ群の SwiftPackageManager への移行戦略
andpad
0
180
Flutter は DCM が 9 割
andpad
1
280
Amplify で SPA をホスティングする際の注意点
andpad
1
250
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
andpad
0
110
rails stats で紐解く ANDPAD のイマを支える技術たち
andpad
1
540
本編では話さない Zig の話
andpad
2
360
"noncopyable types" の使いどころについて考えてみた
andpad
0
520
Other Decks in Programming
See All in Programming
Team topologies and the microservice architecture: a synergistic relationship
cer
PRO
0
1.2k
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
360
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
520
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
270
「Cursor/Devin全社導入の理想と現実」のその後
saitoryc
0
770
地方に住むエンジニアの残酷な現実とキャリア論
ichimichi
5
1.5k
Porting a visionOS App to Android XR
akkeylab
0
290
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
3
780
Result型で“失敗”を型にするPHPコードの書き方
kajitack
5
600
明示と暗黙 ー PHPとGoの インターフェイスの違いを知る
shimabox
2
480
Blazing Fast UI Development with Compose Hot Reload (droidcon New York 2025)
zsmb
1
280
WebViewの現在地 - SwiftUI時代のWebKit - / The Current State Of WebView
marcy731
0
110
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Code Reviewing Like a Champion
maltzj
524
40k
Designing for humans not robots
tammielis
253
25k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Speed Design
sergeychernyshev
32
1k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Adopting Sorbet at Scale
ufuk
77
9.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
960
The Pragmatic Product Professional
lauravandoore
35
6.7k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
Transcript
Copyright © 2023 ANDPAD Inc. All Rights Reserved. EC2 からの脱出劇:多用途なサーバの全役割
をサーバレス・コンテナ環境へ 明里 慶祐 株式会社 アンドパッド 2023/12/4 カヤック・アンドパッド 合同 プロポーザル供養会
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 1. 自己紹介
株式会社アンドパッド / プラットフォーム開発チーム 明里 慶祐 @k-akari @akarin0519 2022年5月入社。 2023年3月まで、社内で最も古くから稼働する施工管理アプリ (Rails)のインフラ・CI/CD改善に従事。 2023年4月よりANDPADの通知プラットフォーム(Go言語、 gRPCサーバ)の開発に従事。
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 2. 供養するプロポーザル
https://event.cloudnativedays.jp/cndt2023/talks/1985
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 3. 関連するテックブログ
2022/12/23 施工管理サービスの定期実行ジョブ処理基盤を EC2からコンテナへ移行しました 2023/8/22 データパッチ環境と有事の際のログイン環境をサー バレス化・コンテナ化した取り組み
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 4. 今日のテーマ
質問: みなさんの企業には、外部に大きい声では言えない レガシーなサーバはありますか?
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 4. 今日のテーマ
質問: みなさんの企業には、外部に大きい声では言えない レガシーなサーバはありますか? → はい、以前のアンドパッドにはありました。 バッチサーバというラスボスが。 主題: レガシーなサーバの倒し方
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 5. かつてのラスボス、バッチサーバとは
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 6. なぜバッチサーバを倒したかったのか
1. 初期に手動構築された背景があり、 正確な再構築方法が不明になっていた。 2. 当時既に標準サポートが切れていた Amazon Linux 1を利用していた。 3. 単一障害点となっていた。 4. Ruby, Rails, 各種gemやライブラリの アップデート作業の負担を増加させていた。 バッチサーバ
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 7. バッチサーバの倒し方
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 8. バッチサーバが担っていた役割
1. DBマイグレートの実行環境 2. 定期実行ジョブの実行環境 3. データパッチの実行環境 4. 調査のための踏み台環境
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 9. DBマイグレートの実行環境の移行
1. DBマイグレートの実行環境 2. 定期実行ジョブの実行環境 3. データパッチの実行環境 4. 調査のための踏み台環境
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 10. DBマイグレートの実行環境の要件
1. CodePipelineで組まれたデプロイフローの中で DBマイグレートが実行できること 2. DBマイグレートの実行結果が確認できること
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 11. DBマイグレートの実行環境の移行先選定
移行先候補: 1. CodeBuild(←採用) 2. KubernetesのJobリソース 主な選定理由: 1. CodePipelineから見たデプロイフローのわかりやすさ 2. ログの取り回しなどを含めた、環境構築の容易さ
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 12. DBマイグレートの実行環境をCodeBuildへ移行した後
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 13. 定期実行ジョブの実行環境の移行
1. DBマイグレートの実行環境 2. 定期実行ジョブの実行環境 3. データパッチの実行環境 4. 調査のための踏み台環境
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 14. 定期実行ジョブの実行環境の要件と移行先選定
移行先環境の要件 && 移行先候補 && 選定理由: 1. 依存物を増やしたくないので、EKS以外に移行することは そもそも考えなかった。
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 15. 定期実行ジョブの実行環境の移行要件
移行要件: 1. 定期実行ジョブを無停止で移行する 2. 定期実行ジョブを重複実行させない
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 16. 定期実行ジョブを無停止でEKSへ移行するフロー
(参考)Notes about running on Multiple Hosts - sidekiq-scheduler
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 17. 定期実行ジョブの実行をEKSへ移行した後
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 18. データパッチの実行環境の移行
1. DBマイグレートの実行環境 2. 定期実行ジョブの実行環境 3. データパッチの実行環境 4. 調査のための踏み台環境
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 19. データパッチの実行環境の要件
1. 本番環境のDBにアクセスし、データを変更できること 2. 本番環境のブランチ以外のコードも実行できること 3. rake taskとrails runnerによるプログラム実行ができること 4. データパッチプログラムがエンキューした非同期ジョブが処 理されること 5. 作業ログをファイル回収できること 6. 「承認を得ていない本番更新操作を行なっていないこと」の 監査ができること
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 20. データパッチの実行環境の移行先選定
移行先候補: 1. CodeBuild(←採用) 2. KubernetesのJobリソース 3. ECS on Fargate 主な選定理由: 1. 要件を満たす環境構築の容易さ ↑ CodeBuildだとPRブランチでのイメージビルドが不要 2. 社内の多くの開発者にとって馴染みがある
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 21. CodeBuildで構築したデータパッチの実行環境と運用フロー
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 22. データパッチの実行環境をCodeBuildへ移行した後
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 23. 調査のための踏み台環境の移行
1. DBマイグレートの実行環境 2. 定期実行ジョブの実行環境 3. データパッチの実行環境 4. 調査のための踏み台環境
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 24. 調査用踏み台環境の必要性
そもそも必要? →以下2点の理由で必要と判断 1. 本番データ特有のバグに対して、直接調査を行う環境を利用 することで、迅速にバグを解決できる場合がある 2. 急に本番環境にログインする環境がなくなることに漠然とした 不安あり。←歴史ある巨大なモノリシックサービスなので
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 25. 調査用踏み台環境の機能要件
機能要件: 1. 本番環境のブランチでrails consoleが起動できること 2. 起動したrails consoleから本番環境のデータベースとRedisと S3バケットにアクセスできること 3. 起動したrails consoleから非同期ジョブをエンキューした場合 に、これが処理されること
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 26. 調査用踏み台環境のセキュリティ要件
セキュリティ要件: 1. 開発者によるログインを検知してSlack通知すること 2. ログインした開発者が危険なコマンドを実行した場合に、 これを検知してSlack通知すること 3. 上記のSlack通知に対して執行役員以上から承認を受けた旨の証 跡を返信せずに1日放置した場合、アラート通知がなされること
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 27. 調査用踏み台環境の移行先選定
移行先候補: 1. ECS on Fargate(←採用) 2. KubernetesのDeploymentリソース 主な選定理由: 1. 環境構築が容易←セキュリティ要件を満たす仕組みが既に存在
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 28. ECSで実現した開発者向けの調査用踏み台環境
※ ECSサービスはコンテナの立ち上げ操作を簡易にするために用意した。
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 29. 調査用踏み台環境をECSへ移行した後
Copyright © 2023 ANDPAD Inc. All Rights Reserved. 30. まとめ
本発表では、レガシーなサーバを倒した話を説明しました。 レガシーなサーバの倒し方は以下に尽きるので、どなたかの 参考になれば幸いです😄