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
1
220
なんでもかんでもコンテナ化すればいいってもんでもないけど なんでもかんでもコンテナ化したらスッキリしました
saramune
March 13, 2024
Tweet
Share
More Decks by saramune
See All by saramune
ChatworkのSRE部って実は 半分くらいPlatform Engineering部かもしれない
saramune
0
220
週刊AWSキャッチアップ(2024/03/25週)
saramune
0
33
ACKを活用して 使い捨てAWS検証環境を構築している話
saramune
0
710
KubernetesとTerraformのセキュリティ/ガバナンス向上委員会 with OPA
saramune
2
1.1k
脱・初心者!AWSコンピューティング・ネットワークのテクニック集
saramune
2
620
うんうん、それ(EC2+ASG)もまたCloudNativeだね
saramune
1
380
Cloud Runについて(iret tech labo vol.6)
saramune
0
190
しくじり先生 on AWS
saramune
0
68
20200805 GCP Cloud Run
saramune
2
200
Other Decks in Technology
See All in Technology
パスワードを保存しますか?
hanacchi
0
240
回り回って効いてくる副次的効果としての技術広報/techpr
nishiuma
1
170
エムスリーQAチーム紹介資料 / Introduction of M3 QA Team
m3_engineering
1
280
TiDBにおけるテーブル設計と最適化の事例
cygames
0
770
社内での継続的な機械学習勉強会の開催のコツ
yudai00
2
380
複雑なビジネスルールに挑む:正確性と効率性を両立するfp-tsのチーム活用術 / Strike a balance between correctness and efficiency with fp-ts
kakehashi
5
3.4k
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
0
2k
本当のガバクラ基礎
toru_kubota
0
310
[2024년 5월 세미나] 생성형 AI와 함께하는 데이터 분석가 커리어
datarian
0
1.1k
日本が誇るイタリアのダンスミュージック!? ユーロビートって何??
minorun365
PRO
1
130
AI JIMY - 登壇(インストール編)
hanacchi
0
150
データ分析力を高めるSQL研修サービス『SQL Everyone』
hikarut
1
370
Featured
See All Featured
The Mythical Team-Month
searls
217
42k
BBQ
matthewcrist
80
8.8k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Writing Fast Ruby
sferik
622
60k
Embracing the Ebb and Flow
colly
80
4.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
261
12k
Web development in the modern age
philhawksworth
203
10k
Ruby is Unlike a Banana
tanoku
96
10k
Designing for Performance
lara
601
67k
Making the Leap to Tech Lead
cromwellryan
125
8.6k
Thoughts on Productivity
jonyablonski
60
3.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
34
6.1k
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の仕組みに乗せることがダイジ
働くをもっと楽しく、創造的に