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
CloudNative 移行で実現した Mackerel における SaaS 開発 / Saa...
Search
heleeen
October 11, 2023
Technology
0
140
CloudNative 移行で実現した Mackerel における SaaS 開発 / Saas on AWS 2023
heleeen
October 11, 2023
Tweet
Share
More Decks by heleeen
See All by heleeen
障害対応をちょっとずつよくしていくための 演習の作りかた
heleeen
1
3.1k
SRE のはじめ方 / DevOps と SLI/SLO #mackerelio
heleeen
0
2.5k
クリティカルユーザージャーニーを利用した SLI/SLO の改善 / #mackerelio
heleeen
11
10k
Mackerel におけるTerraform 運用 / Our (Best?) Practice
heleeen
0
460
Other Decks in Technology
See All in Technology
まだ間に合う! StrandsとBedrock AgentCoreでAIエージェント構築に入門しよう
minorun365
PRO
11
970
【実演版】カンファレンス登壇者・スタッフにこそ知ってほしいマイクの使い方 / 大吉祥寺.pm 2025
arthur1
1
290
Flutterでキャッチしないエラーはどこに行く
taiju59
0
220
複数サービスを支えるマルチテナント型Batch MLプラットフォーム
lycorptech_jp
PRO
0
210
生成AI時代のデータ基盤設計〜ペースレイヤリングで実現する高速開発と持続性〜 / Levtech Meetup_Session_2
sansan_randd
1
140
5年目から始める Vue3 サイト改善 #frontendo
tacck
PRO
3
200
オブザーバビリティが広げる AIOps の世界 / The World of AIOps Expanded by Observability
aoto
PRO
0
310
Bye-Bye Query Spaghetti: Write Queries You'll Actually Understand Using Pipelined SQL Syntax
tobiaslampertlotum
0
140
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
8.7k
今!ソフトウェアエンジニアがハードウェアに手を出すには
mackee
9
4.4k
開発者を支える Internal Developer Portal のイマとコレカラ / To-day and To-morrow of Internal Developer Portals: Supporting Developers
aoto
PRO
1
370
自作JSエンジンに推しプロポーザルを実装したい!
sajikix
1
160
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
40
2k
Statistics for Hackers
jakevdp
799
220k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.8k
Facilitating Awesome Meetings
lara
55
6.5k
Fireside Chat
paigeccino
39
3.6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
How GitHub (no longer) Works
holman
315
140k
Designing for Performance
lara
610
69k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Transcript
mackerel.io CloudNative 移行で実現した Mackerel における SaaS 開発 2023.10.11 Mackerel チーム
SRE テックリード 井口景子
アジェンダ • Mackerel とは • Mackerel の Control Plane •
Mackerel の CloudNative 移行の歩み • Control Plane ◦ 請求 ◦ メトリクス • まとめ • さいごに... 2
井口 景子 (id:heleeen) 略歴 • アプリケーションエンジニアとして就職 • 徐々にインフラやクラウド方面へ... • 2019年9月に
Mackerel に SRE としてジョイン • 現在は Mackerel の SRE テックリード 技術的なトピック • SRE, Serverless 自己紹介 3 一応実体はあります
Mackerel とは 4
SaaS 型サーバー監視サービス 5
Mackerel の特徴 6
Mackerel の Control Plane 7
Mackerel での SaaS control Plane • Mackerel はプールモデルのマルチテナント構成 ◦ 厳格な分離要件は今のところない
◦ 管理・運用・開発のしやすさ ◦ テナント分離はアプリケーションレイヤで実装 • プールモデルの運用が CloudNative 移行でどのように変化したかに ついてご紹介します 8
Mackerel の CloudNative 移行の歩み 9
Mackerel の CloudNative 移行の歩み • 2017年ごろ ◦ 主に EC2 を利用して
AWS へ移行 ◦ 時系列データベースではサーバレスアーキテクチャを採用 ▪ 詳細は 時系列データベースという概念をクラウドの技で再構築 する にて 10
Mackerel の CloudNative 移行の歩み • 2018~2019年ごろ ◦ kubernetes への移行と撤退 ▪
コンテナでの運用監視についてのプラクティスを提供するため、 ドッグフーディングとして Mackerel を k8s で運用する ▪ 人的リソースの不足により運用が困難になり EC2 へ戻る ▪ 詳細は MackerelにおけるKubernetes利用の取組みとこれから / Kubernetes Meetup Tokyo #22 にて ◦ 社内でも運用知見のある Amazon ECS へ EC2 から移行 ▪ コンテナによるシステム運用を担保する ▪ マネージドサービスにより運用負荷を削減する 11
Mackerel の CloudNative 移行の歩み • 2023年 ◦ すべてのシステムが CloudNative 環境やマネージドサービスへ
移行完了 ▪ ※サービスが稼働している部分に限る ▪ ※3年強のすべての時間を移行に費やせたわけではない ◦ 詳細はこちらにて ▪ MackerelにおけるCloud Nativeへ継続的な取り組み〜オンプレ からCloudNativeまで〜 ▪ MackerelにおけるEC2からFargate移行の軌跡とFargateの メリットデメリットについて 12
Mackerel の CloudNative 移行で得られたもの • GitOps ぽいもの ◦ GitHub の操作だけでリリースとロールバックができるように
▪ これまではさまざまな画面を行き来してさまざまな操作が 必要だった ◦ とても厳密にできているわけではない • 毎日リリース ◦ CloudNative 化によりリリース作業の負荷がとても下がったので リリース頻度をあげることができた ◦ リリースとロールバックの単位を小さくし, 固定のリリース日を 意識する生活は終わった 13
CloudNative 移行による Control Plane の変化 • Control Plane がテーマなので, そのうち請求とメトリクスを取り上げます
• どちらにも関連し CloudNative 移行で大きく変化したのが batch • Mackerel の batch で実行しているもの ◦ 通知 ◦ 請求処理 ◦ 不要データの削除 ◦ ... ほかにもいくつか • batch のアーキテクチャは EC2 から CloudNative な構成へ変化 14
• 移行前のアーキテクチャ batch の CloudNative 移行 15 Amazon EC2 Amazon
EC2 cron から HTTP リクエストを 定期実行 ジョブ実行 ジョブ実行 ジョブ実行 Application Load Balancer Amazon ElastiCache Amazon RDS
• 移行後のアーキテクチャ batch の CloudNative 移行 16 イベントを定期実行 ジョブ実行 ジョブ実行
ジョブ実行 Application Load Balancer Amazon ElastiCache Amazon RDS Amazon EventBridge Amazon ECS AWS Lambda イベントを定期実行 EC2 上の cron から移行 EC2 でのジョブ実行から ECS, Lambda へ変更
batch の CloudNative 移行 • CloudNative 移行での SaaS のモデルとして変化はない ◦
移行に関連してビジネス要件の変化はない • もとから HTTP リクエストによって実行されるように実装していたので 移行はしやすかった ◦ イベントの発行と処理を行う場所が変わっただけに近い • 一方で動作確認は大変 ◦ 可観測性が低い ▪ 何を正常な実行とするか • 例: 処理すべき請求データを全件処理できているか ▪ 処理量の変化をどのように計測するか • 例: メトリック投稿数の変化, 請求の処理件数 17
Control Plane: 請求 18
19 Mackerelのアーキテクチャ
20 料金プラン ※Mackerelは、ホスト台数に応じた従量課金制のサービスです。ホスト台数は1ヶ月間の平均で算出します。 ※お支払い方法は、クレジットカード払い、もしくは請求書払いからご選択いただけます。 フリー 無料 ホスト数 5台まで スタンダード 1,833
660 ホスト数 1台から (監視ホスト数上限なし) 円(税込) / スタンダードホスト月 円(税込) / マイクロホスト月
Control Plane: 請求 • Mackerel の課金形態について ◦ 従量課金 ▪ スタンダードホストは200メトリックで1スタンダードホスト
換算 ▪ マイクロホストは30メトリックで1マイクロホスト換算 ▪ サービスメトリックは200メトリックで1スタンダードホスト 換算 ▪ 外形監視は 20URL ごとに1スタンダードホスト換算 ▪ ユーザー数は無制限 ▪ … • ホスト数や設定数, メトリック投稿数など利用状況の変動を記録し 集計する必要がある 21
• メトリック投稿や設定数などをバッチで定期集計 • より長い周期で実行するバッチで, 集計されたデータを再度平均として集計 Control Plane: 請求 22 Mackerel
の 利用 利用状況を 記録 定期的に集計 月の利用料 として集計 請求 定期的にメトリック数や ホスト数を集計し保存 記録されたものを 1ヶ月の平均として算出 メトリック投稿時に 投稿状況を記録
Control Plane: メトリクス 23
Control Plane: メトリクス • 移行前は batch が正常終了しているかと課金や通知の記録用のログ くらいしかなかった ◦ ただし構造化されていないので機械的な集計は難しい
• ログに集計したい情報を出力し出力するかたちで可観測性を実現 24
Control Plane: メトリクス 25 batch を実行し ログ出力 集計 メトリクス化して Mackerel
へ投稿 保存 監視 定期チェック サポートケース 障害対応 Amazon CloudWatch AWS Lambda Amazon ECS Amazon CloudWatch Amazon S3
Control Plane: メトリクス • 例: 利用のあったホスト数をカウントするジョブの場合 ◦ 処理したデータごとにログを出力し, 集計して Mackerel
へ メトリクスとして投稿
Control Plane: メトリクス 27 • 例: Mackerel でのメトリクス化 ◦ ノイジーネイバーやキャパシティの変化の把握に利用
Control Plane: メトリクス • ログを集計できる形で出力しメトリクス化して投稿 ◦ 履歴の記録と有事の際の調査用 ◦ クラウドの技術でメトリクス化が実現できる •
監視や SLI の計測としても利用している 28
まとめ • CloudNative に移行したことによる SaaS Control Plane としての劇的な 変化はない •
移行での変化としては, ログとメトリクスにより可観測性を改善 ◦ ログによる履歴はクラウドでより堅牢に保管され検索しやすくなった ◦ メトリクス化することで不具合の検知, 適切なキャパシティの設定 などが行える • 改善が行えるように計測を行い, 変化しやすいアーキテクチャやツールを 選択するべき ◦ コンテナ, stdout … 29
さいごに... • Mackerel は OpenTelemetry への対応を進めています ◦ ベータ版テストの参加者を募集しています • Ask
the Speaker でぜひお話しましょう! ◦ 今回のトーク関連でも監視の話でも Mackerel への要望でも... 30