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
休日・夜間のインスタンス自動停止をSREチームで運用してみた
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Konishi tatsuhiro
August 27, 2024
Technology
0
23
休日・夜間のインスタンス自動停止をSREチームで運用してみた
SRE meetup 〜サービス事業会社のSREが向き合う課題〜 の発表資料です。
https://wealthnavi.connpass.com/event/325100/
Konishi tatsuhiro
August 27, 2024
Tweet
Share
More Decks by Konishi tatsuhiro
See All by Konishi tatsuhiro
レガシー共有バッチ基盤への挑戦 - SREドリブンなリアーキテクチャリングの取り組み
tatsukoni
0
300
コンテナイメージ脆弱性検知の実践事例 ~ 基礎から応用まで ~
tatsukoni
0
42
ECSとEFSを組み合わせた Batchサーバー デプロイ方法の模索
tatsukoni
0
36
コンテナイメージを複数のチームで扱うための、ビルドフローの構築・運用
tatsukoni
0
160
手付かずだったSecurity Hub運用を改善した話
tatsukoni
0
32
Other Decks in Technology
See All in Technology
トイルを超えたCREは何屋になるのか
bengo4com
0
100
Amazon Qはアマコネで頑張っています〜 Amazon Q in Connectについて〜
yama3133
1
160
「通るまでRe-run」から卒業!落ちないテストを書く勘所
asumikam
3
850
AWS Systems Managerのハイブリッドアクティベーションを使用したガバメントクラウド環境の統合管理
toru_kubota
1
190
FASTでAIエージェントを作りまくろう!
yukiogawa
4
160
Cursor Subagentsはいいぞ
yug1224
2
120
FlutterでPiP再生を実装した話
s9a17
0
230
互換性のある(らしい)DBへの移行など考えるにあたってたいへんざっくり
sejima
PRO
0
340
イベントで大活躍する電子ペーパー名札を作る(その2) 〜 M5PaperとM5PaperS3 〜 / IoTLT @ JLCPCB オープンハードカンファレンス
you
PRO
0
220
AIエージェント時代に必要な オペレーションマネージャーのロールとは
kentarofujii
0
230
CREがSLOを握ると 何が変わるのか
nekomaho
0
290
Embeddings : Symfony AI en pratique
lyrixx
0
420
Featured
See All Featured
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
120
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Faster Mobile Websites
deanohume
310
31k
Optimizing for Happiness
mojombo
378
71k
How to make the Groovebox
asonas
2
2.1k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
800
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
160
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
990
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Bash Introduction
62gerente
615
210k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
220
Transcript
休日・夜間のインスタンス自動停止をSREチー ムで運用してみた 2024年08月27日 株式会社コドモン 小西達大 SRE meetup 〜サービス事業会社のSREが向き合う課題〜
2 経歴 1996年生まれ、大阪育ち。前職でアプリケーションエンジニアとし て従事後、株式会社コドモンのSREチームにジョイン。 関心のある分野はコンテナとセキュリティ。 自己紹介 小西 達大 こにし たつひろ
3 Mission
4 すべての先生に 子どもと向き合う 時間と心のゆとりを こんなプロダクトを開発しています メインプロダクトは、保育・教育施設向けWebアプリケーション。 保護者と施設のやり取りを支えるモバイルアプリケーションや、施設職員向けモバイル版 アプリケーション、外部サービスと連携するAPIなども開発しています。
5
6 今日話すこと 休日・夜間のインスタンス停止のすすめ インスタンス自動停止の基本的な実装方法 SREチームで運用するために工夫している点 1 2 3
7 休日・夜間のインスタンス停止のすすめ
8 CONFIDENTIAL - © 2022 CoDMON Inc. 8 休日・夜間のインスタンス停止の概要 •
土日祝・夜間など人が使わない時間帯で、従量課金されるインスタンス群を 停止することで、AWSコスト削減をねらう • EC2・RDS・ECS(停止ではなく稼働するタスク台数を0にする)などで実施 可能
9 CONFIDENTIAL - © 2022 CoDMON Inc. 9 コスト削減効果(例:Aurora MySQL)
運用方式 \ DBインスタンスクラス db.t4g.medium db.t4g.large db.r5.xlarge デフォルト(オンデマンドインスタ ンスを常時稼働) $81.36 $162 $504 リザーブドインスタンス購入(1年 間全額前払い) $59.16 $118.3 $284 土日24時間・平日00:00~08:00 イ ンスタンスを停止 $39.77 $79.2 $246.4 Aurora MySQL DBインスタンス1台を東京リージョンで運用した際の 月額金額比較 ※1カ月を30日・土日8日・祝日なし として計算 参照:https://aws.amazon.com/jp/rds/aurora/pricing/
10 CONFIDENTIAL - © 2022 CoDMON Inc. 10 休日・夜間のインスタンス停止の使いどころ •
リザーブドインスタンス・Savings Plans よりも高い費用削減効果が得られ る可能性がある ◦ RI・SPの費用節減率や、停止可能時間にもよるので計算が必要 • 運用(本番)環境はリザーブドインスタンス・Savings Plansを活用してコスト 削減し、開発環境では休日・夜間のインスタンス停止を活用する など使い分 けが重要
11 インスタンス自動停止の基本的な実装方法
12 CONFIDENTIAL - © 2022 CoDMON Inc. 12 インスタンス自動停止の基本的な実装方法 •
EventBridge Scheduler を用いて簡単に実装可能 ◦ 任意のスケジュール日時でAPIを実行することができる
13 CONFIDENTIAL - © 2022 CoDMON Inc. 13 EventBridge Schedulerから自動停止/起動を実施する
EC2 RDS ECS StartInstances StopInstances StartDBCluster / StartDBInstance StopDBCluster / StopDBInstance UpdateService ↓入力値 { "Cluster": "<ECSクラスター名>", "Service": "<ECSサービス名>", "DesiredCount": 0 / 任意のタスク数 }
14 CONFIDENTIAL - © 2022 CoDMON Inc. 14 複数のインスタンスを実行対象にしたい場合 •
RDS・ECSではEventBridge Schedulerのターゲットに複数のリソースを指 定することができない... ◦ AWS Step Functionsを利用して、複数リソースに対してAPIを実行可能 実行対象リソースを入力値で渡す 複数リソースに対してAPI実行
15 SREチームで運用するために工夫している点
16 CONFIDENTIAL - © 2022 CoDMON Inc. 16 前提 •
開発環境Auroraの自動停止について取り上げる • 各チームごとにAurora DBクラスターが存在し、それらの自動停止/起動を SREチームで運用している ◦ Aurora DBクラスターの新設・削除などは各チームに委ねられているので、SRE チームが全て把握はしていない
17 工夫1:多数のAurora DBクラスターを休日・夜間 に自動停止させる
18 CONFIDENTIAL - © 2022 CoDMON Inc. 18 やりたいこと •
各開発チームが所有するAurora DBクラスターを抜け漏れなく自動停止/起動 させたい ◦ ただし、特定のAurora DBクラスターを自動停止対象から除外したいケースも発 生するので、柔軟に対応できるようにしたい
19 CONFIDENTIAL - © 2022 CoDMON Inc. 19 実現方法 {
"Ignore_DbClusterIdentifiers": [ "対象外のAurora DBクラスター識別子名", … ] } 自動停止対象外のAurora DBクラス ター識別子名を入力値として渡す 全てのAurora DBクラスター 名を動的に取得 対象外DBはスキップ 対象DBは停止/起動API実行 対象かどうか確認
20 CONFIDENTIAL - © 2022 CoDMON Inc. 20 実現方法 •
最初に全てのAurora DBクラスター名を動的に取得しているので、新規DBが 増えても抜け漏れが発生しない • 対象外のAurora DBクラスター識別子名を渡す入力値箇所はコード管理して おり、柔軟に対応可能
21 工夫2:土日だけでなく、祝日もAuroraを自動停 止させる
22 CONFIDENTIAL - © 2022 CoDMON Inc. 22 やりたいこと •
土日だけでなく、祝日もAuroraを自動停止したい ◦ 祝日かどうかを判定する仕組みが必要
23 CONFIDENTIAL - © 2022 CoDMON Inc. 23 実現方法 •
AWS Systems Manager Change Calendar を利用する ◦ サードパーティのカレンダー(Google Calendars・Microsoft Outlook Calendars …)をインポートして、祝日を取り込む ◦ GetCalendarState というAPIを呼び出すことで、実行日が祝日かどうか判定可能
24 CONFIDENTIAL - © 2022 CoDMON Inc. 24 実現方法 ・月~金
08:00 自動起動 ・月~金 00:00 自動停止 実行日が祝日の場合、08:00 の自動起動をスキップ → 祝 日もAuroraを停止状態に
25 CONFIDENTIAL - © 2022 CoDMON Inc. 25 実現方法 ・月~金
08:00 自動起動 ・月~金 00:00 自動停止 実行日が祝日の場合、08:00 の自動起動をスキップ → 祝 日もAuroraを停止状態に Change Calendar更新作業が手間な場 合は、外部APIを実行して祝日取得 ~ 判 定する方法もある
26 まとめ
27 CONFIDENTIAL - © 2022 CoDMON Inc. 27 まとめ •
休日・夜間のインスタンス停止は、AWSコスト削減に効果がある • 自動停止/起動の仕組みは簡単に実装でき、要件に合わせてカスタマイズも可 能
28 最後に
29 コドモン採用ページ 開発ブログ コドモンでは一緒に働きたい仲間を募集しています!
None