Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
成長を続ける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.7k
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
320
Glacierだからってコストあきらめてない? / JAWS Meet Glacier Cost
taishin
1
470
スケールするプロダクトと膨らむ組織 SREの挑戦と解決策 / Findy Job LT SRE
taishin
0
190
組織の変化とSREの役割進化 責務拡大にどう応えるか / globis_sre
taishin
0
450
Lambdaの運用についてのなにか / lambda_unyo
taishin
0
220
おすすめAWSコスト対策 / AWS Startup Meetup Osaka AWS Cost
taishin
1
540
プラットフォームってつくることより計測することが重要なんじゃないかという話 / Platform Engineering Meetup #8
taishin
1
1.6k
ECS Runtime Monitoring で コンテナランタイムセキュリティに入門 / nakanoshima-dev-ecs-runtime-monitoring
taishin
0
390
JAWS-UG-Osaka-guardrail
taishin
0
430
Other Decks in Technology
See All in Technology
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
160
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
340
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
空間オーディオで過去の 自分(ゴースト)と競うランニング 〜HealthKitのルートを足音に変える実装〜
nao_randd
0
230
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
160
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
370
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
150
Genieを崇めよ
kameitomohiro
0
160
What the customer really needed
kawaguti
PRO
3
210
Claude Code本って、 読む必要あるの?
oikon48
2
470
顧客に向き合う開発組織へ。リアーキテクチャとフィーチャーチーム化で挑む組織改革
safie
0
2k
LTのテーマ どうきめてる?〜5つの型と私のやり方〜
yama3133
1
110
Featured
See All Featured
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
470
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
My Coaching Mixtape
mlcsv
0
310
How to build a perfect <img>
jonoalderson
1
6k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Ruling the World: When Life Gets Gamed
codingconduct
0
330
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
330
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
340
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
働くをもっと楽しく、創造的に