Cloudflare を活用して変わったメルカリの開発体験 / How Cloudflare Changed Mercari's Development Experience
by
hatappi
×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
1 @hatappi Cloudflare を活用して変わったメルカリの開発体験 開発者が知っておきたい "コスト削減&効率化 両立の一手" ~Cloudflare活用編~
Slide 2
Slide 2 text
2 ● 株式会社メルカリ ● Platform Network ● 2019年入社 ● CDN や Cloud Networking を メインに社内インフラ基盤の 構築・運用を行っている @hatappi
Slide 3
Slide 3 text
3 Cloudflare を活用した開発の効率化とその効果 メルカリでの Cloudflare の活用事例 今日得られるもの 02 01
Slide 4
Slide 4 text
4 1. CDN 運用の課題と Cloudflare 採用の狙い 2. CDN as a Service 実現への取り組み 3. 開発体験の変化による効果 アジェンダ
Slide 5
Slide 5 text
5 ●サービス開始:2013年7月 ●対応OS:Android、iOS ※Webブラウザからも利用可能 ●利用料:無料 ※売れたときの手数料:販売価格の10% ●対応地域・言語:日本・日本語基本仕様 ●累計出品数:40億品を突破 (2024年9月) でなくなったモノが必要とする人に渡る喜びを感じ、また購入 者は豊富な出品数から「宝探し」感覚で魅力的な商品を見つけ ることを楽しんでいます。 さらに「メルカリ」は物の売買だけではなく出品者と購入者の コミュニケーションも重視し、チャットや絵文字、「いい ね!」機能の拡充などお客さまがより快適に取引を楽しめるた めの機能改善にも取り組んでいます。 「メルカリ」は、個人間での不要品の売買を簡単に行えるフリ マアプリです。エスクロー決済を活用した安心・安全な取引環 境の整備や、簡単かつ手頃な価格の配送オプションなど差別化 されたユニークなお客さま体験を提供しています。 現在、「メルカリ」では1秒間に7.9個の商品が売れています。 売れやすい環境が整う中、多くの出品者は、自分にとって必要 5 メルカリとは
Slide 6
Slide 6 text
6 6 CtoCの基盤を活用した事業成長
Slide 7
Slide 7 text
7 CDN 運用の課題と Cloudflare 採用の狙い
Slide 8
Slide 8 text
8 Cloudflare への移行前の CDN 運用と課題 依頼数が多い場合や優先度により 変更待ちが発生
Slide 9
Slide 9 text
9 ● 実装・運用コストの削減 ○ Cloudflare のほとんどの機能が API を通じて設定可能 ○ 事前調査により今まで自分たちで実装していたメルカリの ほぼ全ケースがAPI設定を使って実現可能 ● セキュリティ対策の強化 ○ DDoS Attack Protection, WAF, Rate Limiting, etc Cloudflare に期待したこと
Slide 10
Slide 10 text
10 ● 移行によって実装・運用コストは下がりそう ● 設定変更を行うのが Platform Network のままでは変更待ちの発生は 完全には解決はしない Cloudflare への移行だけで十分? CDN プロバイダの移行だけでなく 開発フローを変えていく必要がある 💪
Slide 11
Slide 11 text
11 CDN as a Service
Slide 12
Slide 12 text
12 CDN as a Service CDN設定のセルフサービス化 開発者が主体的に CDN 設定を変更可能に
Slide 13
Slide 13 text
13 CDN as a Service 実現への取り組み
Slide 14
Slide 14 text
14 CDN as a Service にむけた取り組み CF IAM CDN Kit Cloudflare ダッシュボードへの 権限付与の自動化を する仕組み メルカリ社内用の Terraform module
Slide 15
Slide 15 text
15 CDN Kit ● Cloudflare 設定の共通化・簡略化により、開発者の負担軽減と 設定の一貫性を担保 ● 開発者はシンプルな設定を記述するだけで、以下を実現: ○ Cloudflare: 公式 Provider を利用した各種リソースの作成 ○ ロギング: アクセスログを BigQuery へ格納 ○ モニタリング: Error Rate や Cache Hit Rate を監視する Datadog monitor の作成 メルカリ社内用の Terraform module
Slide 16
Slide 16 text
16 Cloudflare への移行前の CDN 運用と課題 Before
Slide 17
Slide 17 text
17 CDN Kit After
Slide 18
Slide 18 text
18 CDN Kit の設定例 最低限の設定
Slide 19
Slide 19 text
19 CDN Kit の設定例 キャッシュの有効化
Slide 20
Slide 20 text
20 CDN Kit の設定例 リクエスト・レスポンスヘッダーの操作
Slide 21
Slide 21 text
21 CDN Kit の苦労した点 ● CDN Kit は Zone-Scoped なリソースを管理 (e.g. Cache Rule) ● Account-Scoped なリソース (e.g. Cloudflare Workers) を CDN Kit で 使用するためには管理方法を検討する必要がある Account Scoped なリソースの管理 リソース名の Prefix に zone 名をつけることで Zone-Scoped なリソースとして管理
Slide 22
Slide 22 text
22 CF IAM ● ダッシュボードの使用用途 ○ リクエスト分析 ○ 問題の調査 ● ログ分析に比べて直感的に リクエストを分析できるので便利 Cloudflare ダッシュボードへの権限付与の自動化をする仕組み 意図しないブロック でないかを確認
Slide 23
Slide 23 text
23 ダッシュボードを社内に公開するためのチャレンジ ● 各 Zone はオーナーとなるチームによって管理されるため Account-Scoped な権限ではなく Zone-Scoped な権限を付与したい ● 変更は CDN Kit で行うためデフォルトの権限は Read Only にしたい 手動での管理は大変なので避けたい 🧐
Slide 24
Slide 24 text
24 CDN 関連のリソース管理 ● CODEOWNERS で各サービスごとの ディレクトリにオーナーチームが 設定されている ● CDN Kit の設定は各サービス下に配置 されているので Cloudflare Zone の オーナーチームも特定可能 ● チームメンバーは同じリポジトリ内の Team Kit(Terraform Module)で 管理されている
Slide 25
Slide 25 text
25 必要な情報はそろっている 自動化できそう!!
Slide 26
Slide 26 text
26 Cloudflare Dashboard への権限付与の自動化 ● CDN Kit / Team Kit の変更を トリガーに GitHub Actions を使って Cloudflare 権限を自動更新 ● 権限情報を Cloudflare とは別に もつことでいつでもあるべき状態に 戻すことが可能
Slide 27
Slide 27 text
27 開発体験の変化による効果
Slide 28
Slide 28 text
28 開発体験の変化による効果 ● 70%以上 の Pull Request が Platform Network の関与なしにリリース ● 多くの Pull Request が 1日以内 にマージされている ● 開発者が Cloudflare Dashboard を活用し自律的に障害調査を実施 ● 問い合わせ内容がレビューや実装依頼から Cloudflare 活用に関する 実装設計などの相談へと質的に変化
Slide 29
Slide 29 text
29 まとめ
Slide 30
Slide 30 text
30 ● Cloudflare 活用した仕組みを整備して CDN 設定の標準化と効率化を実現 ○ 社内 Terraform module (CDN Kit) ○ Cloudflare ダッシュボードへの権限付与の自動化 (CF IAM) ● CDN as a Service によって、開発者が自律的に CDN を活用できる 新しい開発体験を実現 まとめ
Slide 31
Slide 31 text
31 We are hiring https://apply.workable.com/mercari/j/08F0B7531B/