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
290
なんでもかんでもコンテナ化すればいいってもんでもないけど なんでもかんでもコンテナ化したらスッキリしました
saramune
March 13, 2024
Tweet
Share
More Decks by saramune
See All by saramune
適材適所
saramune
1
60
ChatworkのSRE部って実は 半分くらいPlatform Engineering部かもしれない
saramune
0
480
週刊AWSキャッチアップ(2024/03/25週)
saramune
0
74
ACKを活用して 使い捨てAWS検証環境を構築している話
saramune
0
950
KubernetesとTerraformのセキュリティ/ガバナンス向上委員会 with OPA
saramune
2
1.3k
脱・初心者!AWSコンピューティング・ネットワークのテクニック集
saramune
2
650
うんうん、それ(EC2+ASG)もまたCloudNativeだね
saramune
1
440
Cloud Runについて(iret tech labo vol.6)
saramune
0
210
しくじり先生 on AWS
saramune
0
76
Other Decks in Technology
See All in Technology
【shownet.conf_】ShowNet伝送改めShowNet APN 2024
shownet
PRO
0
420
ADRを運用して3年経った僕らの現在地
onk
PRO
11
4.9k
過去のインプットとアウトプットを振り返る
diggymo
0
110
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
2
220
Oracle Database 23ai 新機能#4 Real Application Clusters
oracle4engineer
PRO
0
150
Azure Verified Moduleを触って分かった注目ポイント/azure-verified-module-begin
mhrtech
1
360
XPを始める新人に伝えたい近道の鍵
nakasho
1
310
令和最新版 Perlコーディングガイド
anatofuz
4
3.5k
普通の Web エンジニアのための様相論理入門 #yapcjapan / YAPC Hakodate 2024
ytaka23
5
1.3k
【shownet.conf_】ShowNet 2024 ~ Inter * Network ~
shownet
PRO
0
500
【shownet.conf_】多様化するネットワーク環境を柔軟に統合するルーティングテクノロジー
shownet
PRO
0
370
【shownet.conf_】クロージングセッション
shownet
PRO
0
300
Featured
See All Featured
Building Applications with DynamoDB
mza
90
6k
It's Worth the Effort
3n
183
27k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.7k
How to train your dragon (web standard)
notwaldorf
87
5.6k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
45
2k
The Brand Is Dead. Long Live the Brand.
mthomps
53
38k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
130k
KATA
mclloyd
27
13k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
7
570
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
110
6.9k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
A Philosophy of Restraint
colly
202
16k
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の仕組みに乗せることがダイジ
働くをもっと楽しく、創造的に