Slide 1

Slide 1 text

「10年もののアプリケーション」を運用・開発する アプリケーションエンジニアの Datadog 活用術 💪 マネーフォワードビジネスカンパニーERP開発本部・福岡第一開発部 Technical Lead 宮村 紅葉 / Miyamura Koyo

Slide 2

Slide 2 text

プロダクトの特徴 - バックエンドは Ruby on Rails で開発 - 10年以上の歴史を持つプロダクト - 現在でも活発に開発・運用中 - ユーザー数・導入社数も多い https://biz.moneyforward.com/expense/

Slide 3

Slide 3 text

自己紹介

Slide 4

Slide 4 text

- miyamu / 宮村紅葉 - @KoyoMiyamura (X) - koyo-miyamura (GitHub) - 推しのプログラミング言語 - Elixir - 出身 - 熊本 - 経歴 - 2019年4月 面白法人カヤックに新卒入社 - 2021年9月 マネーフォワード福岡拠点ガーディアングループ (CRE) - 2024年12月 クラウド経費テックリード 自己紹介

Slide 5

Slide 5 text

プロダクト紹介

Slide 6

Slide 6 text

運用・開発に携わっているプロダクト①「マネーフォワードクラウド 経費精算」 使った瞬間、経費精算されていたら、 
 入力ミスや規程違反が起きなかったら、 
 わたしたちは本来の業務に集中でき、 
 ワークスタイルはもっと豊かになるはずです。 
 
 マネーフォワード クラウド経費は、 
 ペーパーレス、キャッシュレス、オートメーション を軸に、
 企業の生産性向上と ガバナンス強化を同時に実現します。 
 使った瞬間、経費精算されている未来を目指して 
 経費精算は、自走する。 


Slide 7

Slide 7 text

運用・開発に携わっているプロダクト②「マネーフォワードクラウド 債務支払」 受領請求書の作業が圧倒的に楽になるソリューション 
 オンラインチェックで完了できる 承認ワークフロー 会計ソフト 請求費用の分析 担当者 上長 経理 
 
 API/CSV 
 
 
 取引先への振込 
 請求書受領・申請 
 承認
 支払処理・管理 
 事前・各種申請 支払依頼申請 紙の請求書を  受領・データ化 電子請求書を  アップロード 請求書のデータ化・ワークフロー・会計処理まで一元管理! 煩雑な紙の請求書処理をなくし、オンラインで完結することで、経理部の生産性が大きく向上できるサービスです。 


Slide 8

Slide 8 text

プロダクトの特徴 - バックエンドは Ruby on Rails で開発 - 10年以上の歴史を持つプロダクト - 現在でも活発に開発・運用中 - ユーザー数・導入社数も多い https://biz.moneyforward.com/expense/ つまり多機能な Datadog は便利!(笑)

Slide 9

Slide 9 text

活用事例紹介

Slide 10

Slide 10 text

運用編

Slide 11

Slide 11 text

運用編① 🤔 システムアラートを検知して通知したい

Slide 12

Slide 12 text

💪 Monitors (terraform で管理) 運用編①

Slide 13

Slide 13 text

運用編① 💪 専用の Slack チャンネルに通知!

Slide 14

Slide 14 text

運用編② 🤔 システムメトリクスを一覧でみたい

Slide 15

Slide 15 text

運用編② 💪 Dashboard で一覧化! -> 定期チェック

Slide 16

Slide 16 text

開発編

Slide 17

Slide 17 text

開発編① 🤔 要件定義時に非機能要件を考慮したい -> 現状はどうなっている?

Slide 18

Slide 18 text

開発編① 💪 Traces でリクエスト数・パフォーマンスをチェック

Slide 19

Slide 19 text

開発編② 🤔 パフォーマンスチューニングしたい -> 現状のパフォーマンスは?

Slide 20

Slide 20 text

開発編② 💪 Traces -> Span で N+1や不要な処理を特定

Slide 21

Slide 21 text

開発編② 💪 カスタムトレースも定義可能 def create custom_trace { HogeService.execute! } end private def custom_trace(&) custom_tags = { params: params, data: data } Datadog::Tracing.trace(trace_name, tags: custom_tags, &) end

Slide 22

Slide 22 text

私自身の活用事例

Slide 23

Slide 23 text

私自身の活用事例① 🤔 このエンドポイントってもう使われてないんだっけ ...?

Slide 24

Slide 24 text

私自身の活用事例① 💪 APM → Service -> rack.request でコントローラ名を検索! -> 0件であれば未使用

Slide 25

Slide 25 text

私自身の活用事例② 🤔 Ruby アップデートで DEPRECATION WARNING が 出ていないかを調査したい

Slide 26

Slide 26 text

私自身の活用事例② 💪 Log Explorer で一括で検索! 約8年開発されている Rails 製プロダクトを Ruby 3 にバージョンアップするために keyword parameters is deprecated を「網羅的に」検知する方法

Slide 27

Slide 27 text

まとめ

Slide 28

Slide 28 text

まとめ - 10年ものの SaaS アプリケーションでよく使っている機能を紹介しました - 多機能で長く運用しているプロダクトの需要を網羅的に満たしてくれること が Datadog の魅力 - 事例も多くて嬉しい(マネーフォワードは英語化しているので英語の記事の多さも魅力) - マネーフォワードは全社的に Datadog を使っているので、大規模なアプリケーションを Datadog でやり たい人はぜひ!

Slide 29

Slide 29 text

LT イベントやります https://moneyforward.connpass.com/event/352407/

Slide 30

Slide 30 text

LT イベントやります https://moneyforward.connpass.com/event/352407/