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
転職会議のマイクロサービスを支えるデプロイ基盤@yabaibuki.dev #2
Search
katainaka
September 26, 2024
1
280
転職会議のマイクロサービスを支えるデプロイ基盤@yabaibuki.dev #2
katainaka
September 26, 2024
Tweet
Share
More Decks by katainaka
See All by katainaka
CloudWatch Database Insightsで RDS関連の問題調査を行いやすくした(い)話 / yabaibuki cloudwatch database insights
katainaka0503
1
96
エンジニア採用広報チームの活動を紹介します / Engineer Recruitment PR Team
katainaka0503
1
230
マッハバイトのオンプレDBをAmazon Auroraに移行した話 / mach-db-transition-jaws
katainaka0503
2
430
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
katainaka0503
0
4.4k
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
Embracing the Ebb and Flow
colly
85
4.7k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
GitHub's CSS Performance
jonrohan
1031
460k
Agile that works and the tools we love
rasmusluckow
329
21k
Transcript
転職会議のマイクロサービスを ⽀えるデプロイ基盤 2024/09/26 令和最新版 他⼈に⾃慢したいヤバいCI/CD LT会 @ yabaibuki.dev #2 技術部インフラストラクチャーグループ
⼭﨑理弘 Copyright © Livesense Inc.
0 1 2 3 4 ⾃⼰紹介 転職会議について 前提: 転職会議のシステム構成 転職会議のデプロイ基盤
転職会議のデプロイ基盤のこれから Copyright © Livesense Inc.
⾃⼰紹介 SECTION 0 Copyright © Livesense Inc.
0. 自己紹介 • 株式会社リブセンス所属のSRE • 転職会議やマッハバイトなど様々な事業部に関わる • ⾼知県在住 • 趣味
◦ 釣り🎣 ◦ スーパー銭湯めぐり♨ ◦ 飲み歩き🍺など • たまに東京で暇しているので飲みに誘ってください🍻 ⼭崎 理弘 a.k.a. かたいなか Copyright © Livesense Inc.
0. 自己紹介 ゆるい雰囲気で肩肘張らずに SRE関連のトピックについて話す勉強会です。 初⼼者SREの⽅や、 他職種だがSREっぽいことをやっている⽅も ⼤歓迎です。🎉🎉🎉 次回 #8 は絶賛準備中です!
「ゆるSRE勉強会」定期的に開催してます! Copyright © Livesense Inc.
転職会議について SECTION 1 Copyright © Livesense Inc.
転職会議について SECTION 1 Copyright © Livesense Inc.
前提: 転職会議のシステム構成 SECTION 2 Copyright © Livesense Inc.
2. 前提: 転職会議のシステムについて • マイクロサービスアーキテクチャを採⽤ ◦ 当初はPHPのレガシーアプリケーションから段階的に脱却するため ◦ レガシー脱却が終わった今はマイクロサービスをまとめていく⽅向 •
EKSを採⽤ ◦ 多数のマイクロサービスを管理するため ◦ アプリケーションエンジニアも普通にYAMLを書いている! Copyright © Livesense Inc.
転職会議のデプロイ基盤 SECTION 3 Copyright © Livesense Inc.
設計時の考慮ポイント SECTION 3-1 Copyright © Livesense Inc.
3-1. 転職会議のデプロイ基盤 設計時の考慮ポイント • CIOps ◦ CIから変更をpushする • GitOps ◦
クラスタ上からGitHub等の設定情報をpullして同期する ◦ GitHubを⾒ることでほとんどの設定を確認できる • GUIでの設定の確認ができることなどのメリットを重視し、 ArgoCDによるGitOpsを採⽤ 設計時の考慮ポイント①: CIOpsにするか、GitOpsにするか Copyright © Livesense Inc.
3-1. 転職会議のデプロイ基盤 設計時の考慮ポイント • 環境変数やPodの台数などの設定のデプロイ ◦ ⽐較的頻度は少ない ◦ diffを⾒たい •
アプリケーションのコンテナイメージのデプロイ ◦ コードの変更のたびに必要なので頻度が多い ◦ インフラに詳しくないエンジニアが⾏うことが多い • 稀に両⽅を同時にデプロイしたいことも 設計時の考慮ポイント②: コンテナイメージと設定のデプロイの両⽴ Copyright © Livesense Inc.
3-1. 転職会議のデプロイ基盤 設計時の考慮ポイント • 双⽅のライフサイクルの違いを理解してどうやって両⽴させるかがポイント • 特にGitOpsではどうやって両⽴させるか考慮が必要 ◦ CIでKubernetes上のイメージの情報を書き換えても GitOpsツールがGitHub上のイメージの設定に戻してしまったり‧‧‧
◦ latestタグを指定して都度ローリングアップデートでも可能だが‧‧‧ • 転職会議では、ArgoCD Image Updaterを使って解決 ◦ 新しいイメージの情報を⾃動でGitHubにプッシュしてくれるツール ◦ GitHubに書き戻したらArgoCDが変更をクラスタに反映 設計時の考慮ポイント②: コンテナイメージと設定のデプロイの両⽴ Copyright © Livesense Inc.
アーキテクチャやフローの紹介 SECTION 3-2 Copyright © Livesense Inc.
3-2. 転職会議のデプロイ基盤 アーキテクチャやフローの紹介 設定のデプロイの全体像 Copyright © Livesense Inc.
3-2. 転職会議のデプロイ基盤 アーキテクチャやフローの紹介 • 環境ごとに同期させるブランチ ◦ developブランチ => ステージング環境 ◦
masterブランチ => 本番環境 • developブランチにマージしたらcherry-pickして ⾃動で本番リリース⽤のPull Request作成 ◦ 以前はdevelopからmasterにマージする流れだったが、 developブランチに複数の変更が近いタイミングでマージされたときの 調整が必要になったため。 • Pull Requestに差分情報を⾃動でコメント。変更内容をすぐ確認できるように 設定のデプロイフロー Copyright © Livesense Inc.
3-2. 転職会議のデプロイ基盤 アーキテクチャやフローの紹介 イメージのデプロイの全体像 Copyright © Livesense Inc.
イメージのデプロイフロー(ステージング) 3-2. 転職会議のデプロイ基盤 アーキテクチャやフローの紹介 • 各アプリケーションリポジトリのCircleCIからコンテナイメージをプッシュ ◦ (後述するようにGitHub Actionsに移⾏したい) •
ArgoCD Image UpdaterがGitHubにイメージ情報をプッシュ • ArgoCDが新しい設定をKubernetesに適⽤し、新しいイメージがデプロイされる Copyright © Livesense Inc.
イメージのデプロイフロー(ブランチデプロイ) 3-2. 転職会議のデプロイ基盤 アーキテクチャやフローの紹介 • 開発時にはPull Requestマージ前に動作確認したいことが多々あるため、 Pull Requestのブランチを⼀時的にステージング環境にデプロイできる仕組みを⽤意 •
具体的には ChatOpsでArgoCD Image Updaterが更新対象にするタグ名の情報を変更する ◦ イメージのタグにはブランチ名のプレフィックスをつけている。 ◦ 対象のブランチ名から始まるタグを対象にさせる。 Copyright © Livesense Inc.
イメージのデプロイフロー(本番) 3-2. 転職会議のデプロイ基盤 アーキテクチャやフローの紹介 • 各アプリケーションリポジトリのCircleCIからコンテナイメージをプッシュ ◦ (後述するようにGitHub Actionsに移⾏したい) •
ArgoCD Image Updater + GitHub ActionsでPull Request作成(本番のみ) • Pull Requestをマージすると ArgoCDが新しい設定をKubernetesに適⽤し、新しいイメージがデプロイされる Copyright © Livesense Inc.
転職会議のデプロイ基盤のこれから SECTION 4 Copyright © Livesense Inc.
アプリケーションリポジトリのCIを CircleCIからGitHub Actionsに移⾏したい • 理由 ◦ ワークフローをプライベートリポジトリ間で共有したい ◦ エコシステムが充実している •
実際にGitHub Actions使っている⽅で、 知⾒ある⽅、懇親会で相談させてください 4. 転職会議のデプロイ基盤のこれから Copyright © Livesense Inc.
• ブランチデプロイ時などにArgoCD Image Updaterの挙動のもっさり感が⽬⽴っている • ArgoCD Image Updaterの次のリリースで⾼速化につながりそうな機能が出そう ◦ Gitリポジトリのシャローフェッチなど
• 将来的には、Webhookを受け取って いい感じにタイミングよく動いてくれたらいいなぁ‧‧‧ ◦ ArgoCD Image Updaterのロードマップ上には予定あり イメージの更新を⾼速化したい 4. 転職会議のデプロイ基盤のこれから Copyright © Livesense Inc.
夢: プレビュー環境を実現したい 4. 転職会議のデプロイ基盤のこれから • Pull Requestがまだマージされていない状態で、 同時に複数のエンジニアが異なる機能の動作確認を⾏えるようにしたい! • ArgoCD
+ AWS Load Balancer Controllerで実現できないか検討中 ◦ ArgoCD Applications SetでIngressをデプロイして 複数のIngressを⼀つのALBにグルーピング機能でまとめることでルーティングを実 現する構想 • mirrordやtelepresenceなどのローカル環境と Kubernetes上のコンテナを接続するツールも導⼊できると尚良し Copyright © Livesense Inc.
最⾼のCI/CD環境づくりは まだまだ道半ば! Copyright © Livesense Inc.
None