Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
EC2 からの脱出劇:多用途なサーバの全役割をサーバレス・コンテナ環境へ
Search
ANDPAD inc
December 04, 2023
Programming
0
71
EC2 からの脱出劇:多用途なサーバの全役割をサーバレス・コンテナ環境へ
明里 慶祐
@akarin0519
2023 年 12 月 4 日
カヤック・アンドパッド 合同 プロポーザル供養会
ANDPAD inc
December 04, 2023
Tweet
Share
More Decks by ANDPAD inc
See All by ANDPAD inc
Go コードベースの構成と AI コンテキスト定義
andpad
0
130
「もっと正確に、もっと効率的に」ANDPADの写真書き込み機能における、 現場の声を形にしたエンハンス
andpad
0
510
複数チーム並行開発下でのコード移行アプローチ ~手動 Codemod から「生成AI 活用」への進化
andpad
0
220
Building the Real World with Ruby
andpad
0
49
Catch Up: Go Style Guide Update
andpad
0
300
OSS開発者という働き方
andpad
5
1.8k
Vue・React マルチプロダクト開発を支える Vite
andpad
0
170
プロダクト開発を支えるデータ利活用:中央集権から「民主化」までの軌跡
andpad
0
230
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
440
Other Decks in Programming
See All in Programming
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
230
Navigating Dependency Injection with Metro
l2hyunwoo
1
130
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
120
MAP, Jigsaw, Code Golf 振り返り会 by 関東Kaggler会|Jigsaw 15th Solution
hasibirok0
0
250
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
400
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
130
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
120
認証・認可の基本を学ぼう前編
kouyuume
0
260
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
120
Python札幌 LT資料
t3tra
5
860
俺流レスポンシブコーディング 2025
tak_dcxi
14
9k
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
180
Featured
See All Featured
Navigating Team Friction
lara
191
16k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandezseo
1
1.3k
Rails Girls Zürich Keynote
gr2m
95
14k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Odyssey Design
rkendrick25
PRO
0
420
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
32
ラッコキーワード サービス紹介資料
rakko
0
1.7M
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
200
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
120
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
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. まとめ
本発表では、レガシーなサーバを倒した話を説明しました。 レガシーなサーバの倒し方は以下に尽きるので、どなたかの 参考になれば幸いです😄