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
成長を続けるSaaSのAWSコスト管理において 開発者としてできること / AWS DevD...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
sasaki
June 22, 2023
Technology
3.6k
11
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
成長を続けるSaaSのAWSコスト管理において 開発者としてできること / AWS DevDay SaaS Cost
sasaki
June 22, 2023
More Decks by sasaki
See All by sasaki
FinOpsとタグ付け防止対策 / CCoE Osaka FinOps Tags
taishin
1
270
Glacierだからってコストあきらめてない? / JAWS Meet Glacier Cost
taishin
1
410
スケールするプロダクトと膨らむ組織 SREの挑戦と解決策 / Findy Job LT SRE
taishin
0
170
組織の変化とSREの役割進化 責務拡大にどう応えるか / globis_sre
taishin
0
390
Lambdaの運用についてのなにか / lambda_unyo
taishin
0
210
おすすめAWSコスト対策 / AWS Startup Meetup Osaka AWS Cost
taishin
1
520
プラットフォームってつくることより計測することが重要なんじゃないかという話 / Platform Engineering Meetup #8
taishin
1
1.5k
ECS Runtime Monitoring で コンテナランタイムセキュリティに入門 / nakanoshima-dev-ecs-runtime-monitoring
taishin
0
370
JAWS-UG-Osaka-guardrail
taishin
0
400
Other Decks in Technology
See All in Technology
WebGIS AI Agentの紹介
_shimizu
0
510
10年間のブログ発信を振り返って見えたWebアプリケーションエンジニアとしての軌跡
stefafafan
0
180
PostgreSQL 19 新機能概要 OSC Hokkaido 2026
nori_shinoda
0
230
クレデンシャル流出 ― 攻撃 3 時間 vs 復旧 10 時間。この非対称性にどう備えるか
kazzpapa3
3
510
攻撃者視点で考えるDetection Engineering
cryptopeg
3
2.1k
When Platform Engineering Meets GenAI
sucitw
0
160
Agile and AI Redmine Japan 2026
hiranabe
4
450
千葉での単身赴任からAWSをやり続け、千葉に戻ってきた話
yama3133
1
100
脱SaaS!FDEを支えるプロビジョニングと分離設計
knih
0
260
Flow 不死:AI 時代 DevOps 的不變本質
cheng_wei_chen
2
480
MUSUBI 田中裕一『AIと共に行う「しごとのリデザイン」- スモールバックオフィス編』AI Ops Lab #4
musubi
0
300
40代で“やっとエンジニアになれた”――閉じた学びを開き、空の青さを知る / 20260628 Naoki Takahashi
shift_evolve
PRO
4
650
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
740
It's Worth the Effort
3n
188
29k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Typedesign – Prime Four
hannesfritz
42
3.1k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Documentation Writing (for coders)
carmenintech
77
5.4k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
350
Six Lessons from altMBA
skipperchong
29
4.3k
Ruling the World: When Life Gets Gamed
codingconduct
0
260
The untapped power of vector embeddings
frankvandijk
2
1.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Transcript
© Chatwork 成長を続けるSaaSのAWSコスト管理において 開発者としてできること 2023年6月22日 SRE部 佐々木真也 Chatwork株式会社 AWS Dev Day
2023 Tokyo
自己紹介 2 • 名前 ◦ 佐々木真也 • 所属 ◦ Chatwork株式会社
▪ 2020年6月〜 ▪ SRE部 マネージャー • Twitter ◦ @taishin • 趣味 ◦ サッカー観戦
会社概要 3 会社名 Chatwork株式会社 代表取締役CEO 山本 正喜 グループ従業員数 379名(2023年3月末日時点) 所在地
東京、大阪 設立 2004年11月11日
Chatworkとは 4 効率的に情報共有できる グループチャット 仕事の見える化ができる タスク管理 見落としがなくなる ファイル管理 いつでも会議ができる ビデオ/音声通話
* BOXIL SaaS AWARD 2022「ランキング部門 コラボレーション部門賞」「ベスト評価賞 (初期設定の容易さNo.1、価格の満足度No.1)」を受賞 BOXIL「Chatwork」口コミ評価 * Nielsen NetView 及びNielsen Mobile NetView Customized Report 2022年5月度調べ月次利用者(MAU:Monthly Active User)調査。 * 調査対象はChatwork、Microsoft Teams、Slack、LINE WORKS、Skypeを含む47サービスをChatwork株式会社にて選定。
Chatworkは利用者数No.1*のビジネスチャット 5 3月 リリース 10万社 突破! 20万社 突破! 導入社数 39万7000社以上!
(2023年3月末日時点) 30万社 突破! * Nielsen NetView 及びNielsen Mobile NetView Customized Report 2022年5月度調べ月次利用者(MAU:Monthly Active User)調査。 調査対象はChatwork、Microsoft Teams、Slack、LINE WORKS、Skypeを含む47サービスをChatwork株式会社にて選定
SaaSの成長とAmazon Web Servicesのコスト SaaSの成長と開発組織の変化 開発者もできるコスト管理 まとめ 1 2 3 4
AGENDA アジェンダ
SaaSの成長とAmazon Web Servicesのコスト SaaSの成長と開発組織の変化 開発者もできるコスト管理 まとめ 1 2 3 4
AGENDA アジェンダ
SaaSの成長 8 • 事業継続に必要なビジネス指標が伸び続けている状態 ◦ SaaSのビジネス指標の例 ▪ 売上 ▪ アクセス数
▪ 登録ユーザー数 ▪ アクティブユーザー数 ▪ 契約社数
SaaSにおけるAWSコストの妥当性 9 • 現状のAWSコストは妥当なのか? • SaaSは成長しているので、AWSコストも増加しているが、 増加率は妥当なのか?
SaaSにおけるAWSコストの妥当性 10 • 現状のAWSコストは妥当なのか? • SaaSは成長しているので、AWSコストも増加しているが、 増加率は妥当なのか? ユニットメトリクス(ユニットコスト)を算出し、 経営層含め合意できていることが重要
ユニットメトリクス 11 • ビジネス指標に対するAWSコストの割合 ◦ AWSコスト ÷ ビジネス指標 = ユニットメトリックス
https://aws.amazon.com/jp/blogs/aws-cloud-financial-management/what-is-a-unit-metric/
ユニットメトリクスの増減によるアクション 12 • ユニットメトリクス増 ◦ 対策が必要 ▪ 構成の見直し ▪ コスト最適化
• ユニットメトリクス減 ◦ 問題なし ▪ 運用負荷を軽減するような サービス導入の検討 • 定期的な見直しも必要
Chatworkにおけるユニットメトリクス 13 • MAU (1か月あたりのアクティブユーザー数) を重要視し、 AWSコストに対するビジネス指標としている • 1MAUあたりのAWSコストをモニタリングしている AWSコスト月額
÷ MAU = 1MAUあたりのAWSコスト
SaaSの成長とAWSコストで重要なこと 14 • SaaSシステムのコストに対するビジネス指標が決められている • ユニットメトリクスがモニタリングできるようになっている & 経営層含めて 合意が取れている •
ユニットメトリクスの増減によってコストに対するアクションが取れる
SaaSの成長とAmazon Web Servicesのコスト SaaSの成長と開発組織の変化 開発者もできるコスト管理 まとめ 1 2 3 4
AGENDA アジェンダ
立ち上げ期 16 • 開発チームが分かれていない ◦ 全員がデプロイ ◦ 全員がリソースやコストについても把握 Deploy Cost
Check
チーム分割期 17 • 職能でチームを分割 ◦ AWSリソースのデプロイはAWS担当(インフラチームやSREチーム)に依頼する ◦ コストの確認はAWS担当が実施 ◦ AWS担当がリソースは把握しているので、コストについてもAWS担当が
概ね把握している AWS担当 Cost Check 開発チーム1 開発チーム2 依頼 Deploy
マイクロサービス期 18 • サービスごとにチームを分割 (逆コンウェイの法則) ◦ 従来のやり方では、AWS担当の負荷が大きく、デプロイまでに時間がかかるため、 各チームでデプロイできる体制をとる ◦ AWS担当では各リソースの把握はできなくなる
◦ 全体のコストはAWS担当が確認しているが、サービス単位では把握できていない AWS担当 サービス3 Deploy サービス4 Deploy サービス1 Deploy サービス2 Deploy Cost Check
チーム分割後のありがちな問題 19 • コストの変動があっても、おおまかな情報だと誰も心当たりがない サービス 1 サービス 2 サービス 3
Amazon DynamoDBの費用が 上がってるんですが、 心当たりありませんか? ・・・ ・・・ ・・・ AWS担当
チーム分割後のありがちな問題 20 • AWS Cost ExplorerやAmazon CloudWatchのメトリクスを使って調査 • リソースごとにメトリクスがあるAmazon DynamoDB等のサービスであれば
分かりやすいが、Amazon Elastic Container Registry (Amazon ECR)等の メトリクスがリポジトリごとにない場合など調査に時間がかかる サービス 1 サービス 2 サービス 3 Amazon DynamoDBのxxxxという テーブルのRCUが増加して費用が上 がってるんですが、心当たりあり ませんか? はい! AWS担当
Chatworkで実際にあった問題 21 Pull Pull • Amazon ECRの DataTransfer-Out-Bytes が急に増加 •
原因は一部チームのCIをCircleCIからGithub Actionsに 変更したため ◦ CircleCIはAWS上に稼働しているので、リージョンを 揃えれば転送量はかからないが、Github Actionsは AWS外からのダウンロードになるので、 転送量が発生した • Amazon ECRはリポジトリごとのメトリクスが ないため、原因の調査に時間を要した
問題点 22 • 調査に時間がかかる ◦ 問題に気づいて調査を始めた段階で実は大きな問題だったりする • 1つのサービスがコスト増、1つのサービスがコスト減だった場合や、全体から 見ると割合の小さいサービスだった場合、表面化しにくい
問題点 23 • 調査に時間がかかる ◦ 問題に気づいて調査を始めた段階で実は大きな問題だったりする • 1つのサービスがコスト増、1つのサービスがコスト減だった場合や、全体から 見ると割合の小さいサービスだった場合、表面化しにくい 開発者自身で自サービスのコスト管理を行い、
ユニットメトリクスを把握する
SaaSの成長とAmazon Web Servicesのコスト SaaSの成長と開発組織の変化 開発者もできるコスト管理 まとめ 1 2 3 4
AGENDA アジェンダ
開発者もできるコスト管理 25 自サービスのコストを把握する 1. コストチェック運用 2. リソース作成時のコスト見積もり 開発者自身で自サービスのコスト管理を行い、 ユニットメトリクスを把握する
1. コストチェック運用
コストチェック運用 27 • 定期的に自サービスのAWSコストをチェックする • ツール ◦ AWS Cost Explorer
◦ AWS Cost Anomaly Detection
コストチェック運用 28 • 定期的に自サービスのAWSコストをチェックする • ツール ◦ AWS Cost Explorer
◦ AWS Cost Anomaly Detection 自サービスのコスト、可視化されてますか?
コスト情報の可視化方法 29 • リソースにコスト情報識別用のタグ(コスト配分タグ)をつける 参考:AWS コスト配分タグの使用 https://docs.aws.amazon.com/ja_jp/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html
コスト配分タグ すすめ方 30 • 開発組織全体で統一したKeyを決める ◦ サービス名やチーム名 (両方でもOK) ▪ Chatworkでは、チーム名は変更があるかもしれないので
サービス名を指定 ◦ Billingアカウントでコスト配分タグを指定する • 各リソースにKeyに対応する情報をValueに設定する 参考:AWS リソースのタグ管理 〜タグ付けと統制〜(前編) https://aws.amazon.com/jp/blogs/news/aws-tagging-and-governance-part1/
コスト配分タグ タグの一括付与の方法 31 • タグエディタ ◦ 既存のリソースの検索結果に一括してタグを付与
コスト配分タグ タグの一括付与の方法 32 • Terraform ◦ default_tags を指定すれば、 全部のリソースにタグが 付与される
https://www.hashicorp.com/blog/default-tags-in-the-terraform-aws-provider
コスト配分タグ タグの付け漏れを防ぐ 33 • AWS Config Rules ◦ AWS CloudFormation
Guardを使って簡単にカスタムポリシールールが作成できる • AWSマネージドルール required-tags はチェックできるリソースが限定される ◦ Amazon Simple Queue Service (SQS)やAmazon ECRのチェックはできない (2023/6現在) ▪ https://docs.aws.amazon.com/ja_jp/config/latest/developerguide/required-tags.html
コスト配分タグ タグの付け漏れを防ぐ 34 • IaCのCI/CDで作成時にブロック ◦ ChatworkではAtlantis + Conftestを利用 ▪
Plan結果をOpen Policy Agentでチェックし、タグがない場合は Applyをブロック
AWS Cost Explorer 35 • コストの可視化 ◦ コスト配分タグでフィルターすることによって、自サービスのコスト分析が可能 自サービスのみ表示し て分析が可能
AWS Cost Anomaly Detection 36 • コストの異常を検出し、 通知してくれるサービス • コスト配分タグを指定し、自サービスの
コスト異常を通知することが可能
(おまけ) AWS Systems Manager Application Manager 37 • Application Manager
◦ タグを指定し、コスト以外の情報も集約して表示させることが可能 https://aws.amazon.com/jp/blogs/news/new-aws-systems-manager-consolidates-application-management/
2. リソース作成時のコスト見積もり
リソース作成時のコスト見積もり 39 • AWSリソース作成時にコストを試算し、ユニットメトリクスへの影響を 把握する • ツール ◦ AWS Pricing
Calculator ◦ Infracost
AWS Pricing Calculator 40 • サイズや利用料を指定して、試算 https://calculator.aws/
Infracost 41 • Terraformの設定ファイルからコスト試算 https://www.infracost.io/
Infracost 42 • tfファイルからコストを試算 $ cat dynamodb.tf provider "aws" {
region = "ap-northeast-1" } resource "aws_dynamodb_table" "dynamodb-table" { name = "test_table" billing_mode = "PROVISIONED" read_capacity = 20 write_capacity = 20 $ infracost breakdown --path . Evaluating Terraform directory at . ✔ Downloading Terraform modules ✔ Evaluating Terraform directory ✔ Retrieving cloud prices to calculate costs Project: . Name Monthly Qty Unit Monthly Cost aws_dynamodb_table.dynamodb-table ├─ Write capacity unit (WCU) 20 WCU $10.83 ├─ Read capacity unit (RCU) 20 RCU $2.17 ├─ Data storage Monthly cost depends on usage: $0.29 per GB ├─ Point-In-Time Recovery (PITR) backup storage Monthly cost depends on usage: $0.23 per GB ├─ On-demand backup storage Monthly cost depends on usage: $0.11 per GB ├─ Table data restored Monthly cost depends on usage: $0.17 per GB └─ Streams read request unit (sRRU) Monthly cost depends on usage: $0.000000228 per sRRUs OVERALL TOTAL $13.00
Infracost 43 • 変更の差分 $ cat dynamodb.tf provider "aws" {
region = "ap-northeast-1" } resource "aws_dynamodb_table" "dynamodb-table" { name = "test_table" billing_mode = "PROVISIONED" read_capacity = 50 write_capacity = 100 $ iinfracost diff --path . --compare-to infracost-dynamodb.json Evaluating Terraform directory at . ✔ Downloading Terraform modules ✔ Evaluating Terraform directory ✔ Retrieving cloud prices to calculate costs ────────────────────────────────── Project: . ~ aws_dynamodb_table.dynamodb-table +$25 ($13 → $38) ~ Write capacity unit (WCU) +$16 ($11 → $27) ~ Read capacity unit (RCU) +$9 ($2 → $11) Monthly cost change for . Amount: +$25 ($13 → $38) Percent: +192% ────────────────────────────────── Key: ~ changed, + added, - removed ────────────────────────────────── Infracost estimate: monthly cost will increase by $25 (+192%) ↑ ┏━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━━┓ ┃ Project ┃ Previous ┃ New ┃ Diff ┃ ┣━━━━━━━╋━━━━━╋━━━━━╋━━━━━━━━━┫ ┃ . ┃ $13 ┃ $38 ┃ +$25 (+192%) ┃ ┗━━━━━━━┻━━━━━┻━━━━━┻━━━━━━━━━┛
Infracost 44 • 想定使用量を指定して試算 $ cat vpc.tf provider "aws" {
region = "ap-northeast-1" } module "vpc" { source = "terraform-aws-modules/vpc/aws" name = "my-vpc" cidr = "10.0.0.0/16" azs = ["ap-northeast-1a", "ap-northeast-1c", "ap-northeast-1d"] private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"] public_subnets = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"] enable_nat_gateway = true } $ cat infracost-usage.yml version: 0.1 resource_type_default_usage: aws_nat_gateway: monthly_data_processed_gb: 1000 $ infracost breakdown --path . --usage-file infracost-usage.yml Evaluating Terraform directory at . ✔ Downloading Terraform modules ✔ Evaluating Terraform directory ✔ Retrieving cloud prices to calculate costs Project: . Name Monthly Qty Unit Monthly Cost module.vpc.aws_nat_gateway.this[0] ├─ NAT gateway 730 hours $45.26 └─ Data processed 1,000 GB $62.00 module.vpc.aws_nat_gateway.this[1] ├─ NAT gateway 730 hours $45.26 └─ Data processed 1,000 GB $62.00 module.vpc.aws_nat_gateway.this[2] ├─ NAT gateway 730 hours $45.26 └─ Data processed 1,000 GB $62.00 OVERALL TOTAL $321.78
Infracost 45 • VS Code Extension ◦ コードを書けば自動計算してくれる
Infracost 46 • CI/CDとのインテグレーションにも対応
SaaSの成長とAmazon Web Servicesのコスト SaaSの成長と開発組織の変化 開発者もできるコスト管理 まとめ 1 2 3 4
AGENDA アジェンダ
まとめ 48 • SaaSシステムのAWSコストは、ユニットメトリクスをモニタリングし、 妥当性の判断や意思決定を行う • マイクロサービス時代の開発組織は、開発者自身で自サービスの コストを把握し、管理していく • そのためには、サービスごとにコストを可視化し、運用していくことが
重要 ◦ タグ付け重要
We are Hiring !!! 49 https://hrmos.co/pages/chatwork/jobs/1020019
働くをもっと楽しく、創造的に