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
250
転職会議のマイクロサービスを支えるデプロイ基盤@yabaibuki.dev #2
katainaka
September 26, 2024
Tweet
Share
More Decks by katainaka
See All by katainaka
エンジニア採用広報チームの活動を紹介します / Engineer Recruitment PR Team
katainaka0503
1
200
マッハバイトのオンプレDBをAmazon Auroraに移行した話 / mach-db-transition-jaws
katainaka0503
2
380
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
katainaka0503
0
4.1k
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
136
6.6k
Designing Experiences People Love
moore
138
23k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
890
Fireside Chat
paigeccino
34
3k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
840
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
A Philosophy of Restraint
colly
203
16k
For a Future-Friendly Web
brad_frost
175
9.4k
Documentation Writing (for coders)
carmenintech
65
4.4k
Code Reviewing Like a Champion
maltzj
520
39k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
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