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
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
280
Glacierだからってコストあきらめてない? / JAWS Meet Glacier Cost
taishin
1
440
スケールするプロダクトと膨らむ組織 SREの挑戦と解決策 / Findy Job LT SRE
taishin
0
180
組織の変化とSREの役割進化 責務拡大にどう応えるか / globis_sre
taishin
0
400
Lambdaの運用についてのなにか / lambda_unyo
taishin
0
220
おすすめAWSコスト対策 / AWS Startup Meetup Osaka AWS Cost
taishin
1
530
プラットフォームってつくることより計測することが重要なんじゃないかという話 / Platform Engineering Meetup #8
taishin
1
1.6k
ECS Runtime Monitoring で コンテナランタイムセキュリティに入門 / nakanoshima-dev-ecs-runtime-monitoring
taishin
0
380
JAWS-UG-Osaka-guardrail
taishin
0
410
Other Decks in Technology
See All in Technology
はじめてのWDM
miyukichi_ospf
1
150
LLMやAIエージェントをソフトウェアに組み込むプラクティス
shibuiwilliam
2
420
AIレビューはどこまで任せられるのか?自動化と人が背負うレビューの境界
sansantech
PRO
3
1.1k
最適な自走を最小限の支援で — M&Aで拡大する組織で少人数SREが挑んだ1年 / SRE NEXT 2026
genda
0
1.5k
LLM/Agent評価:トップ営業の発言を「正解」にする 〜暗黙的正解による評価を営業資産に変える〜
takkuhiro
1
230
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
310
SRE本の知られざる名シーン / The Hidden Gems of Google SRE Book
nari_ex
1
420
「AIに依存している」と 「AIを使いこなしている」の違い
k8yasuma
0
110
kintone の AI コワーカーを、 Anthropic にエージェントを"ホストさせて"作った話 #devkinmeetup
sugimomoto
0
110
Data + AI Summit 2026 イベントレポート: 「AIがビジネスで意思決定するデータ基盤」へ
nek0128
0
260
Foxgloveについて 実際にExtensionを開発して公開するまでの話 / About Foxglove: The Story of Developing and Releasing an Extension
ry0_ka
0
290
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
4
4.5k
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
2
730
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
380
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
310
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
260
Test your architecture with Archunit
thirion
1
2.3k
Done Done
chrislema
186
16k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Facilitating Awesome Meetings
lara
57
7k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
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
働くをもっと楽しく、創造的に