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
400万ユーザーに価値を届けるエンジニアを を支えるインフラ基盤
Search
Atsushi Tanaka
May 24, 2024
3
290
400万ユーザーに価値を届けるエンジニアを を支えるインフラ基盤
https://wantedly.connpass.com/event/317603/
Atsushi Tanaka
May 24, 2024
Tweet
Share
More Decks by Atsushi Tanaka
See All by Atsushi Tanaka
KubernetesでDatadogを飼うならオートディスカバリーを使わないと損
bgpat
1
310
マイクロサービス基盤にフルマネージドサービスではなくKubernetesを選択する理由
bgpat
12
2.4k
Ruby製社内ツールのGo移行
bgpat
2
500
導入から5年が経って見えた Datadog APM 運用の課題
bgpat
3
1.1k
取っていてよかった Kubernetes のバックアップ
bgpat
1
520
Terraform と Kubernetes の共存による IaC の実践
bgpat
0
1.6k
Kubernetes Cluster Migration
bgpat
4
4.5k
k8sとNginxでオートスケール / Autoscaling with k8s and Nginx
bgpat
2
1.2k
GCPのgemにコントリビュートした話
bgpat
0
730
Featured
See All Featured
Six Lessons from altMBA
skipperchong
26
3.4k
YesSQL, Process and Tooling at Scale
rocio
167
14k
How GitHub Uses GitHub to Build GitHub
holman
473
290k
Navigating Team Friction
lara
183
14k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
41
9.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
3
230
A Modern Web Designer's Workflow
chriscoyier
692
190k
Teambox: Starting and Learning
jrom
131
8.7k
Art, The Web, and Tiny UX
lynnandtonic
296
20k
No one is an island. Learnings from fostering a developers community.
thoeni
19
2.9k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
327
21k
Transcript
© 2024 Wantedly, Inc. 400万ユーザー を⽀えるインフラ基盤 Wantedly TECH NIGHT 2024.5
May. 25 2024 - Atsushi Tanaka @bgpat
© 2024 Wantedly, Inc. 400万ユーザーに価値を届けるエンジニアを を⽀えるインフラ基盤 Wantedly TECH NIGHT 2024/5
May. 25 2024 - Atsushi Tanaka @bgpat
© 2024 Wantedly, Inc. $ whoami @bgpat / Atsushi Tanaka
ウォンテッドリー株式会社 Infrastructure Squad Leader Infrastructure Engineer Kubernetes / Terraform SRE / Platform Engineering
© 2024 Wantedly, Inc. 話すこと • ⽬指すインフラ像 • 取り組んでいること •
現状の課題
© 2024 Wantedly, Inc. Why: Wantedly のインフラの存在意義 『プロダクト開発の価値を⾼速に信頼性⾼く出⼒し続ける』 既存のプロダクト価値を絶え間なくユーザーに提供し、 プロダクト開発で⽣み出した新たな価値をできる限り早く
ユーザーに届けられるようにすることがミッションです。
© 2024 Wantedly, Inc. What: プラットフォームの提供により価値を出す 実現するためには • 変更しても壊れない (=
強い) システム • 開発者がビジネスロジックに集中できる環境 の2つが必要 ⇨ ウォンテッドリーの解は「プラットフォーム」
© 2024 Wantedly, Inc. What: プラットフォームの提供により価値を出す インフラや開発運⽤に関わる機能とプラクティスをプラットフォームとして提供していく
© 2024 Wantedly, Inc. What: プラットフォームの設計⽅針 • インフラがボトルネックにならない ◦ プロダクトチームが⾃律的に動ける
• 基盤の運⽤コストを極⼒下げる ◦ やりたいことの90%をカバーできる共通基盤 ◦ マイクロサービスのテンプレート‧ドキュメント整備
© 2024 Wantedly, Inc. How: プラットフォームの構成要素 マイクロサービス前提のプラットフォーム • Kubernetes (EKS)
• Terraform (tfaction) • 共通ライブラリ “servicex” • 内製ツール “kube” • CIサービス (GitHub Actions / CircleCI / Travis CI / Bitrise) • モニタリングサービス (Datadog / New Relic / Honeybadger)
© 2024 Wantedly, Inc. How: プラットフォームの構成要素 Kubernetes (EKS) • マイクロサービス基盤として利⽤
◦ オートスケールやクラスタ内通信の機能が標準で内蔵されている ◦ sidecar パターンにより基盤側で追加処理が可能 • 開発基盤のハブとしても活⽤ ◦ API 経由で操作できるため⾃動化しやすい ◦ 標準機能で⾜りない部分は Custom Controller を実装 ▪ kubefork ▪ CronJob 通知
© 2024 Wantedly, Inc. How: プラットフォームの構成要素 Terraform (tfaction) • インフラリソースをコードで管理
◦ 参照が記述できどこで利⽤されているのか⼀⽬瞭然 ◦ 機械的に扱いやすいフォーマットのため⾃動化も容易 • Terraform Module を整備することでセルフサービス化 ◦ 開発者が簡単に追加できる仕組み ◦ インフラはレビューするだけなので待ち時間も少ない • GitHub と組み合わせて統制フローとしても利⽤ ◦ plan 実⾏とレビューを必須にしている ◦ インフラの変更経緯が追跡可能に
© 2024 Wantedly, Inc. How: プラットフォームの構成要素 共通ライブラリ “servicex” • よく使う共通機能を提供
◦ サーバーのデフォルト設定や API クライアント等 • マイクロサービスの内側に基盤の処理を埋め込む ◦ 全体に共通の処理を⼊れたいときに注⼊できる場所があって便利 ◦ 例: ログやエラー通知等
© 2024 Wantedly, Inc. How: プラットフォームの構成要素 内製ツール “kube” • エンジニアが開発基盤を扱うためのツール
◦ Kubernetes クラスタの選択と認証の機能により簡単かつ安全に操作が可能 ◦ 社内ルールに沿ったデプロイフローの⾃動化を実現 • CI でも同じコマンドを利⽤ ◦ ローカル環境でも利⽤しているコマンドのため覚えることが少なくて済む ◦ 1箇所の変更で全体に反映されるため常にベストプラクティスが利⽤可能
© 2024 Wantedly, Inc. How: プラットフォームの構成要素 CIサービス (GitHub Actions /
CircleCI / Travis CI / Bitrise) • ⾃動テスト ◦ テストコードがあれば⾃動で実⾏して安全にリリースできるか確認 • ⾃動デプロイのトリガーとしても利⽤ ◦ コンテナイメージのビルドと Kubernetes へのデプロイを⾃動実⾏ ◦ リリースサイクルの⾼速化に貢献
© 2024 Wantedly, Inc. How: プラットフォームの構成要素 モニタリングサービス (Datadog / New
Relic / Honeybadger) • リリース後に問題なく動作していることを保証 ◦ servicex の機能により各サービスにメトリクスやログを送信 ◦ 問題があれば Slack 等に通知してエンジニアに対応を促す • 開発環境でも利⽤できデバッグ時に活⽤ ◦ マイクロサービス内部で何が起きているのか把握するのに便利 ◦ リリース前に問題に気付くことにも役⽴っている
© 2024 Wantedly, Inc. 課題: メンテナンスコストの増⼤ 持ち物が多すぎるため整理が必要 必要なものは⾃動化によりメンテナンスしやすく • 3ヶ⽉毎の
Kubernetes アップグレード • 30超の k8s cluster addon 管理 • 100超のデータベース管理 • 類似ツールの利⽤: Datadog vs New Relic
© 2024 Wantedly, Inc. 課題: PDCA サイクルが回せていない メンテナンスコストの増加等により 取り組める施策に制限がある •
とりあえず試すところまではできている • その先は他社事例のない新しい挑戦になりがち ◦ 試⾏錯誤が必要なので時間もかかる
© 2024 Wantedly, Inc. まとめ • 社内のエンジニアにプラットフォームを提供 ◦ ビジネスロジックに集中できる環境で頻繁なリリースが可能に ◦
横展開により信頼性の⾼いサービスを⼿軽に構築 • これからのインフラは選択と集中が鍵 ◦ まずはメンテナンスコストとの戦い ◦ とりあえず⼊れれば良くなる時代は終わった ◦ 組織やプロダクトに合わせた最適化が次の挑戦