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
IaCのCI/CDを考えよう / JAWS-UG_Okayama_IaC_CICD
Search
sasaki
June 03, 2023
Technology
2
1.4k
IaCのCI/CDを考えよう / JAWS-UG_Okayama_IaC_CICD
JAWS-UG Okayama 2023 IaC/のCI/CDを考えよう
sasaki
June 03, 2023
Tweet
Share
More Decks by sasaki
See All by sasaki
組織の変化とSREの役割進化 責務拡大にどう応えるか / globis_sre
taishin
0
100
Lambdaの運用についてのなにか / lambda_unyo
taishin
0
110
おすすめAWSコスト対策 / AWS Startup Meetup Osaka AWS Cost
taishin
1
320
プラットフォームってつくることより計測することが重要なんじゃないかという話 / Platform Engineering Meetup #8
taishin
1
1k
ECS Runtime Monitoring で コンテナランタイムセキュリティに入門 / nakanoshima-dev-ecs-runtime-monitoring
taishin
0
180
JAWS-UG-Osaka-guardrail
taishin
0
280
成長を続けるSaaSのAWSコスト管理において 開発者としてできること / AWS DevDay SaaS Cost
taishin
11
2.8k
目指せCoverage100%! AutoScale環境におけるSavings Plans購入戦略 / JAWS-UG_SRE_Coverage
taishin
1
2.1k
SLO策定までの道とChaosEngineeringを使った最適解の見つけ方 / SLO ChaosEngineering
taishin
1
2k
Other Decks in Technology
See All in Technology
Bounded Context: Problem or Solution?
ewolff
1
210
【Developers Summit 2025】プロダクトエンジニアから学ぶ、 ユーザーにより高い価値を届ける技術
niwatakeru
2
890
30分でわかる『アジャイルデータモデリング』
hanon52_
9
2.2k
『衛星データ利用の方々にとって近いようで触れる機会のなさそうな小話 ~ 衛星搭載ソフトウェアと衛星運用ソフトウェア (実物) を動かしながらわいわいする編 ~』 @日本衛星データコミニティ勉強会
meltingrabbit
0
120
オブザーバビリティの観点でみるAWS / AWS from observability perspective
ymotongpoo
7
1k
技術負債の「予兆検知」と「状況異変」のススメ / Technology Dept
i35_267
1
1k
7日間でハッキングをはじめる本をはじめてみませんか?_ITエンジニア本大賞2025
nomizone
2
1.4k
第13回 Data-Centric AI勉強会, 画像認識におけるData-centric AI
ksaito_osx
0
360
スクラムのイテレーションを導入してチームの雰囲気がより良くなった話
eccyun
0
110
Ask! NIKKEI RAG検索技術の深層
hotchpotch
13
2.8k
ハッキングの世界に迫る~攻撃者の思考で考えるセキュリティ~
nomizone
12
4.5k
Kubernetes x k6 で負荷試験基盤を開発して 負荷試験を民主化した話 / Kubernetes x k6
sansan_randd
2
730
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
47
7.3k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
RailsConf 2023
tenderlove
29
1k
Designing for humans not robots
tammielis
250
25k
A designer walks into a library…
pauljervisheath
205
24k
Done Done
chrislema
182
16k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
10
1.3k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Designing Experiences People Love
moore
139
23k
Transcript
© Chatwork IaCのCI/CDを考えよう 2023年6月3日 SRE部 佐々木真也 Chatwork株式会社 JAWS-UG Okayama 2023
自己紹介 2 • 名前 ◦ 佐々木真也 • 所属 ◦ Chatwork株式会社
▪ 2020年6月〜 ▪ SRE部 マネージャー • Twitter ◦ @taishin • 趣味 ◦ サッカー観戦
会社概要 3 会社名 Chatwork株式会社 代表取締役CEO 山本 正喜 グループ従業員数 379名(2023年3月末日時点) 所在地
東京、大阪 設立 2004年11月11日
Chatworkとは 4 効率的に情報共有できる グループチャット 仕事の見える化ができる タスク管理 見落としがなくなる ファイル管理 いつでも会議ができる ビデオ/音声通話
* BOXIL SaaS AWARD 2022「ランキング部門 コラボレーション部門賞」「ベスト評価賞 (初期設定の容易さNo.1、価格の満足度No.1)」を受賞 BOXIL「Chatwork」口コミ評価 * Nielsen NetView 及びNielsen Mobile NetView Customized Report 2022年5月度調べ月次利用者(MAU:Monthly Active User)調査。 * 調査対象はChatwork、Microsoft Teams、Slack、LINE WORKS、Skypeを含む47サービスをChatwork株式会社にて選定。
Chatworkは利用者数No.1*のビジネスチャット 5 3月 リリース 10万社 突破! 20万社 突破! 導入社数 39万7000社以上!
(2023年3月末日時点) 30万社 突破! * Nielsen NetView 及びNielsen Mobile NetView Customized Report 2022年5月度調べ月次利用者(MAU:Monthly Active User)調査。 調査対象はChatwork、Microsoft Teams、Slack、LINE WORKS、Skypeを含む47サービスをChatwork株式会社にて選定
IaCにCI/CD環境は必要? ChatworkのIaC環境(2年前) IaCのCI/CD環境の検討と導入した環境 サービスの進化と今ならどうするか? 導入後のCI/CDフローの拡張 まとめ 2 3 4 5
AGENDA アジェンダ 1 6
IaCにCI/CD環境は必要? ChatworkのIaC環境(2年前) IaCのCI/CD環境の検討と導入した環境 サービスの進化と今ならどうするか? 導入後のCI/CDフローの拡張 まとめ 2 3 4 5
AGENDA アジェンダ 1 6
Infrastructure as Code(IaC)環境にCI/CDがあると・・・ 8 • レビュー/承認 • 作業履歴 • 権限
• 環境依存
CI/CDがないとき 9 Deploy コード管理 コード管理 コード管理 Deploy Deploy
CI/CDがないとき 10 Deploy コード管理 コード管理 コード管理 Deploy Deploy • レビュー/承認
◦ Githubでレビューはできるが、承認がなくてもデプロイ可能 • 作業履歴 ◦ 残らない • 権限 ◦ Deployする人全員に強い権限が必要 • 環境依存 ◦ 作業者環境によるバージョン差異
CI/CDがあるとき 11 CI/CD Deploy コード管理/コマンド 実行 コード管理/コマンド コード管理/コマンド
CI/CDがあるとき 12 CI/CD Deploy コード管理/コマンド 実行 コード管理/コマンド コード管理/コマンド • レビュー/承認
◦ GithubのPRでレビュー、Deployは承認を必須にできる • 作業履歴 ◦ GithubのPRを見れば、履歴が分かる • 権限 ◦ CI/CD環境にのみ権限が必要で、作業者には権限が不要 • 環境依存 ◦ 誰が実行しても同じ結果
IaC環境にCI/CDは必要? 13 • 複数人で作業する ◦ 一人でやるだけならそれほど必要ないかも • 構成の管理、変更等の運用が必要 ◦ 初期導入だけの目的ならいらないかも
IaCにCI/CD環境は必要? ChatworkのIaC環境(2年前) IaCのCI/CD環境の検討と導入した環境 サービスの進化と今ならどうするか? 導入後のCI/CDフローの拡張 まとめ 2 3 4 5
AGENDA アジェンダ 1 6
以前のChatworkでは 15 • ツール ◦ Terraformを採用 • 管理 ◦ コード(tfファイル)はGithub
◦ tfstateもGithub • フロー ◦ 開発者 ( ≒ ReadOnly権限) ▪ 開発者がコードを作成し、Readonly権限でplan実施 ▪ GithubでPRを作成し、plan実行結果をGithubのコメントに貼り付け ▪ SREチームにレビュー依頼 ◦ SREチーム ( ≒ Administrator権限) ▪ PRレビュー ▪ ローカル環境でapply ▪ tfstateをPush ▪ PRをマージ
以前のChatworkでは 16 • 課題 ◦ 手間 ▪ 依頼する側も作業する側も ◦ バージョンの差異
▪ 作業時に異なるTerraform、AWS Providerのバージョンで実施 してしまい、なんかおかしなことになる ◦ apply後のtfstateのPushし忘れ ▪ 次回作業時に?なdiffが出る ▪ 慌てて前回のtfstateをプッシュ
IaCにCI/CD環境は必要? ChatworkのIaC環境(2年前) IaCのCI/CD環境の検討と導入した環境 サービスの進化と今ならどうするか? 導入後のCI/CDフローの拡張 まとめ 2 3 4 5
AGENDA アジェンダ 1 6
CI/CDツール選定 18 • 考慮点 ◦ 料金 ◦ モノレポでマルチアカウント対応 ◦ IAMキー
◦ Github上で操作 ◦ インフラ管理 ▪ 外部公開(インターネットからのアクセス) ◦ tfstateの保存場所 ◦ ロック機能
CI/CDツール候補 19 • Terraform Cloud • Github Actions • Atlantis
実際はGithub Actions + SelfHosted Runner や PipeCDも検討
Terraform Cloud 20 • Terraformの開発元のHashiCorp社が提供しているマネージ ドサービス • tfstateの保存と管理 • Gitサービスと連携し、自動化を提供
• GUIで設定も簡単 • tfstateの差分が見れたり、通知機能もあったり色々便利
Terraform Cloud 21 Deploy コード管理/コマンド実行 tfstate .tf 確認
Github Actions 22 • Github Actionsを使ってTerraform Workflowを実行 ◦ setup-terraform ▪
Hashicorp社が提供しているAction • https://github.com/hashicorp/setup-terraform • ユーザーが開発している便利なActionも多い ◦ tfaction ▪ https://github.com/suzuki-shunsuke/tfaction ◦ tfmigrate ▪ https://github.com/minamijoyo/tfmigrate
Github Actions 23 Deploy コード管理/コマンド実行 .tf tfstate
Atlantis 24 • Terraform Workflowを実行するOSS ◦ https://www.runatlantis.io/ ▪ インフラはユーザー側で用意
Atlantis 25 Deploy コード管理/コマンド実行 tfstate .tf Webhook
比較 26 Terraform Cloud Github Actions Atlantis 料金 5ユーザーまで無料 それ以降は一人$20/月
(※) Github Actions利用料 AWSインフラ利用料 モノレポでマルチアカウント対応 ディレクトリごとにWorkspaceを作 成するので、設定を変えれる ディレクトリごとに設定変更を変えれ る 機能はないが、terraform内でアカウ ントごとにassume-roleすれば使える IAMキー 必要 (※) 必要 (※) 不要 Github上で操作 PR作成でplan PRマージでapply PR作成でplan PRマージでapply PR作成でplan コメントにコマンド入力でapply インフラ管理 不要 不要 必要 設定のGit管理 ✕ ◯ ◯ 外部公開 (インターネットからのアクセス) 考慮なし 考慮なし GithubからのWebhookを受け付ける 必要があるため公開する必要あり tfstateの保存場所 Terraform Cloud S3(他も可) S3(他も可) ロック機能 あり DynamoDB等で作成が必要 あり (※) 導入検討時
CI/CDツール選定 27 • Atlantisを採用 ◦ IAMキー運用を避けたい ▪ 強い権限を持つIAMキーを外部に置きたくない ▪ 今後、監査とかで問題になるかも
◦ コード以外は自AWS環境に閉じれる • その他落選理由 ◦ Terraform Cloud ▪ 高い、5人以内とか無理 ◦ Github Actions ▪ Githubが旧プランのままだったので、すぐにGithub Actionsが使え なかった
構築したAtlantis 構成 28 Deploy assume role tfstate Deploy tfstate Deploy
tfstate Webhook 111111111111 app1 app2 app3 app4 app5 app6 222222222222 333333333333 main.tf provider "aws" { assume_role { role_arn = "arn:aws:iam::〜" } } AccountID:111111111111 AccountID:222222222222 AccountID:333333333333 • 各アカウントに必要なIAM RoleやS3バケットは、アカウント作成時に StackSetsで自動作成
Atlantisの実行結果 29 • PRを作成するとPlan結果が表示される
Atlantisの実行結果 30 • atlantis applyコメントでApply実施 → マージ → クローズ
導入後のフロー 31 • 管理 ◦ コード(tfファイル)はGithub ◦ tfstateもGithub • フロー
◦ 開発者 ( ≒ ReadOnly権限) ▪ 開発者がコードを作成し、 Readonly権限でplan実施 ▪ GithubにPRを作成し、plan実行結 果をコメントに貼り付け ▪ SREチームにレビュー依頼 ◦ SREチーム ( ≒ Administrator権限) ▪ PRレビュー ▪ ローカル環境でapply ▪ tfstateをPush ▪ PRをマージ • 管理 ◦ コード(tfファイル)はGithub ◦ tfstateは各アカウントのS3 • フロー ◦ 開発者 ( ≒ ReadOnly権限) ▪ 開発者がコードを作成し、PRを 作成すると、自動的にplanが実行 され、Githubのコメントに結果 を表示される ▪ 自チーム内でレビュー ▪ Githubのコメントでapplyを実施 ▪ 自動でPRがマージ、クローズさ れる
導入後のフロー 32 • 管理 ◦ コード(tfファイル)はGithub ◦ tfstateもGithub • フロー
◦ 開発者 ( ≒ ReadOnly権限) ▪ 開発者がコードを作成し、 Readonly権限でplan実施 ▪ GithubにPRを作成し、plan実行結 果をコメントに貼り付け ▪ SREチームにレビュー依頼 ◦ SREチーム ( ≒ Administrator権限) ▪ PRレビュー ▪ ローカル環境でapply ▪ tfstateをPush ▪ PRをマージ • 管理 ◦ コード(tfファイル)はGithub ◦ tfstateは各アカウントのS3 • フロー ◦ 開発者 ( ≒ ReadOnly権限) ▪ 開発者がコードを作成し、PRを 作成すると、自動的にplanが実行 され、Githubのコメントに結果 を表示される ▪ 自チーム内でレビュー ▪ Githubのコメントでapplyを実施 ▪ 自動でPRがマージ、クローズさ れる 開発者のみで完結
IaCにCI/CD環境は必要? ChatworkのIaC環境(2年前) IaCのCI/CD環境の検討と導入した環境 サービスの進化と今ならどうするか? 導入後のCI/CDフローの拡張 まとめ 2 3 4 5
AGENDA アジェンダ 1 6
IAM Keyの問題 34 • 2021/11 Github ActionsでOIDCがサポートされ、IAM Keyが不要に https://docs.github.com/ja/actions/deployment/security-hardeni ng-your-deployments/configuring-openid-connect-in-amazon-web
-services https://aws.amazon.com/jp/blogs/security/u se-iam-roles-to-connect-github-actions-to-a ctions-in-aws/
IAM Keyの問題 35 • 2023/3 Terraform CloudでもOIDCがサポートされ、IAM Keyが不要に https://www.hashicorp.com/blog/terraform-cloud-adds-dynamic-provider-credentials-vault-official-cloud-providers
Terraform Cloudの費用 36 • 2023/5 ユーザー数による料金体系 → リソース数による料金体系に変更 https://www.hashicorp.com/blog/terraform-cloud-updates-plans-with-an-enhanced-free-tier-and-more-flexibility
今選定するなら・・・ (個人の意見) 37 • Github Actionsかな・・・ ◦ IAM RoleでKeyの発行必要なし ◦
プランも変更されている ◦ 費用もそれほどかからない ◦ インフラ運用必要なし ◦ 新サービス(Terraform Cloud)の導入の検討も不要
IaCにCI/CD環境は必要? ChatworkのIaC環境(2年前) IaCのCI/CD環境の検討と導入した環境 サービスの進化と今ならどうするか? 導入後のCI/CDフローの拡張 まとめ 2 3 4 5
AGENDA アジェンダ 1 6
ガードレール1 CODEOWNERSによるレビューの必須化 39 • GithubのCODEOWNERSの機能で、IAM Policyの変更等の 重要な変更については、SREチームやセキュリティーチー ムのレビューを必須にする https://docs.github.com/ja/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
ガードレール2 Conftestによるポリシーの強制 40 • ポリシーをOpen Policy Agentで作成、Plan結果をConftestでチェックし、ポリ シーに違反している場合はapplyできないようにする ◦ 現在は指定したタグがついているかのチェックを実施している
◦ その他検討中
コストの表示 Infracost 41 • Infracost(https://www.infracost.io/)を組み込み、作成リソースの金額の差分を表示
IaCにCI/CD環境は必要? ChatworkのIaC環境(2年前) IaCのCI/CD環境の検討と導入した環境 サービスの進化と今ならどうするか? 導入後のCI/CDフローの拡張 まとめ 2 3 4 5
AGENDA アジェンダ 1 6
まとめ 43 • IaCのCI/CD環境の必要性 ◦ 複数人で作業や、構成の管理が必要な場合はあった方がよい • ツールと選定の考慮点 • 導入によるフローの変化
• フロー拡張の例
We are Hiring !!! 45 https://hrmos.co/pages/chatwork/jobs/1020019
働くをもっと楽しく、創造的に