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
なんでもかんでもコンテナ化すればいいってもんでもないけど なんでもかんでもコンテナ化したらスッ...
Search
saramune
March 13, 2024
Technology
2
400
なんでもかんでもコンテナ化すればいいってもんでもないけど なんでもかんでもコンテナ化したらスッキリしました
saramune
March 13, 2024
Tweet
Share
More Decks by saramune
See All by saramune
EKS Auto Modeなにそれおいしいの?
saramune
0
120
self-hosted runnersでAWSコスト削減?
saramune
0
120
業務効率向上としての分割キーボード
saramune
0
150
インフラ観点で見るセキュリティ〜4Cモデルに倣って〜
saramune
0
75
適材適所
saramune
1
97
ChatworkのSRE部って実は 半分くらいPlatform Engineering部かもしれない
saramune
0
610
週刊AWSキャッチアップ(2024/03/25週)
saramune
0
130
ACKを活用して 使い捨てAWS検証環境を構築している話
saramune
0
1.2k
KubernetesとTerraformのセキュリティ/ガバナンス向上委員会 with OPA
saramune
2
1.5k
Other Decks in Technology
See All in Technology
OpenHands🤲にContributeしてみた
kotauchisunsun
1
410
登壇ネタの見つけ方 / How to find talk topics
pinkumohikan
3
350
Agentic Workflowという選択肢を考える
tkikuchi1002
1
480
250627 関西Ruby会議08 前夜祭 RejectKaigi「DJ on Ruby Ver.0.1」
msykd
PRO
2
240
A2Aのクライアントを自作する
rynsuke
1
170
PostgreSQL 18 cancel request key長の変更とRailsへの関連
yahonda
0
120
Snowflake Summit 2025 データエンジニアリング関連新機能紹介 / Snowflake Summit 2025 What's New about Data Engineering
tiltmax3
0
300
rubygem開発で鍛える設計力
joker1007
2
190
GitHub Copilot の概要
tomokusaba
1
130
CI/CD/IaC 久々に0から環境を作ったらこうなりました
kaz29
1
160
UIテスト自動化サポート- Testbed for XCUIAutomation practice
notoroid
0
130
製造業からパッケージ製品まで、あらゆる領域をカバー!生成AIを利用したテストシナリオ生成 / 20250627 Suguru Ishii
shift_evolve
PRO
1
130
Featured
See All Featured
Speed Design
sergeychernyshev
32
1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Product Roadmaps are Hard
iamctodd
PRO
53
11k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Code Review Best Practice
trishagee
68
18k
Designing for Performance
lara
609
69k
VelocityConf: Rendering Performance Case Studies
addyosmani
330
24k
How to Think Like a Performance Engineer
csswizardry
24
1.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
GitHub's CSS Performance
jonrohan
1031
460k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Transcript
© Chatwork なんでもかんでもコンテナ化すればいいって もんでもないけど なんでもかんでもコンテナ化したらスッキリ しました Chatwork株式会社
自己紹介 2 • 古屋 啓介 ◦ Chatwork株式会社 SRE部 ◦ AWS
Community Builders (container) ◦ JAWS-UG SRE支部運営 ◦ ドラム叩きます 3/21(木) 春のAurora祭りやります!
(前提) 3 • Chatworkのインフラ構成 ◦ AWSを利用 ◦ 大部分のアプリがEKS上で稼働
こんなとき、どうしますか? 4 毎日1回、特定のURLを叩きたい
んー... 5 EventBridge発火のLambdaかなぁ
これでよさそう 6 • つくった!うごいた!解決! 毎日AM1:00に Lambdaを起動する URLアクセスする (Python / NodeJS)
これでよさそう 7 • つくった!うごいた!解決! 毎日AM1:00に Lambdaを起動する URLアクセスする (Python / NodeJS)
完
数年後... 8 バージョンアップしてや (Python / NodeJS)
あれ... 9 • ソースどこやったっけ... • デプロイって手動だった? • テストしたいんだけど...
なぜなのか 10 • ソースどこやったっけ... ◦ 普段触らないのでどこおいたか覚えてない • デプロイって手動だった? ◦ メインのワークロードとは異なるスタックなのでCI/CDが未整備
• テストしたいんだけど... ◦ 簡単1ショットの仕組みだったのでテストもなし
っていうのを何回かやった結果 11 これはもう全部コンテナにして EKSで動かしたほうがいいのでは?
つまり 12 • これを 毎日AM1:00に Lambdaを起動する URLアクセスする (Python / NodeJS)
つまり 13 • こうする 毎日AM1:00に jobを起動する URLアクセスする (Python / NodeJS)
なにがうれしいの? 14 • ソースどこやったっけ... ◦ 普段触らないのでどこおいたか覚えてない ◦ 普段触っているのと同じところに置くので迷わない • デプロイって手動だった?
◦ メインのワークロードとは異なるスタックなのでCI/CDが未整備 ◦ メインのワークロードと同じCI/CDの仕組みに乗れる • テストしたいんだけど... ◦ 簡単1ショットの仕組みだったのでテストもなし ◦ 上記が整うことでテスト環境も整えやすい
15 (参考)デプロイフロー 15 Manifest (helmfile) EKS Sync 1. Push 3.
kubectl apply helmfileから生成された Manifest 2. Sync helmfileのリポジトリに ソースコードとManifest を格納しておく
ちょっと本筋と逸れますが 16 • 移行にあたってPythonをshellにリライト ◦ そもそもPythonとかNodeJSとかのEOLつらい ◦ たまたま簡単なスクリプトが多かった • helmfile
+ shellはいいぞ ◦ ConfigMapと.shがあればOK ◦ ベースとなるコンテナはシンプルなものでよい ◦ shellの黒魔術化には注意... shellスクリプト マウントする
補足 17 • 大事なのは、メインのワークロードと諸々揃えること ◦ ECSをご利用の場合でも普段使うCI/CDの仕組みに乗れればOK ▪ CDKが最強だったりする...?(CDK詳しい人に教えてほしい) ◦ Lambdaが悪いわけではない
▪ し、メインがバリバリサーバレスだぜ!の場合はむしろLambdaが適任
実際やった事例 18 • helmfile + shellに書き直したもの ◦ Lambda + EventBridge
+ PythonでOpenSearchを諸々する処理 • そのままEKSに移したもの ◦ EC2 + cron + shellでRDSをデイリーでコピーする処理 ◦ EC2 + cron + shellでRDSにqueryする処理 ◦ EC2 + cron + shellでChatworkを諸々する処理 • その他新規で作ったもの ◦ 夜間休日に検証環境を落とす処理
課題と対処 19 • 多重起動 ◦ EKS更新(Blue/Greenでクラスタが2つある)タイミングで要考慮 多重起動で困るやつは排他処理を別途追加 管理用EKSクラスタ(更新がin-place)ができたので そちらに移行
まとめ 20 • (前提)そりゃなんでもかんでもコンテナ化したらいいわけではない • (前提)メインのワークロードがコンテナ基盤で動いている • スケジュール駆動の諸々をコンテナ化すると幸せになるかも? ◦ ちょっとした処理をやるLambdaっていっぱいありますよね
◦ Lambdaは簡単便利だけど、ちゃんとやろうとすると色々整える必要アリ ◦ いつも使うCDの仕組みに乗せることがダイジ
働くをもっと楽しく、創造的に