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
270
転職会議のマイクロサービスを支えるデプロイ基盤@yabaibuki.dev #2
katainaka
September 26, 2024
Tweet
Share
More Decks by katainaka
See All by katainaka
エンジニア採用広報チームの活動を紹介します / Engineer Recruitment PR Team
katainaka0503
1
210
マッハバイトのオンプレDBをAmazon Auroraに移行した話 / mach-db-transition-jaws
katainaka0503
2
400
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
katainaka0503
0
4.2k
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
693
190k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.3k
Become a Pro
speakerdeck
PRO
26
5.1k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
GitHub's CSS Performance
jonrohan
1030
460k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
Designing for Performance
lara
604
68k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
The Invisible Side of Design
smashingmag
299
50k
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