SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
https://hitto.jp/
俺のTerraform CI/CDライフサイクル
2021年9月30日
HiTTO株式会会社  https://hitto.jp/
AIソリューション事業部 SRE
本間 匡晃 m.homma@hitto.co.jp
1
https://hitto.jp/ 2
職 歴
株式会社ラクス
株式会社CyberAgen
t

株式会社ビズリーチ
HiTTO株式会社
自己紹介
S e l f - i n t r o d u c t i o n
本間 匡晃 ( m a s a t e r u h o m m a )
や って る こ と
SR
E

趣 味
FORTNITE/筋トレ
@HonMarkHunt
3
会 社 紹 介
https://hitto.jp/
商   号
所 在 地
設   立
代 表 者
資 本 金
事 業 内 容
H i T T O 株 式 会 社
東 京 都 千 代 田 区 神 田 錦 町 2 - 2 - 1 K A N D A S Q U A R E 1 1 F
2 0 0 6 年 3 月
代 表 取 締 役   C o - C E O 五 十 嵐 智 博
代 表 取 締 役   C o - C E O 木 村 彰 人
1 億 9 , 4 6 5 万 円 ( 資 本 準 備 金 を 含 む )
社 内 向 け H R チ ャ ッ ト ボ ッ ト 「 H i T T O 」 の 提 供
4
シ ゴ ト の ナ レ ッ ジ を 体 系 化 し 、 新 し い コ ミ ュ ニ ケ ー シ ョ ン を 創 り 出 す
5
国内初
人事/労務A
I

搭載
継続利用率
99.5% ※2 ※1:出典 調査研究レポート 業務自動化ツール市場マーケティング分析
   2019年5月 株式会社テクノ・システム・リサーチ調べ

※2:HiTTO株式会社 自社調べ(2020年3月∼2021年2月 継続利用率の平均値)
組織の生産性を向上させるHRチャットボットです
会 社 紹 介
6
24時間365日、従業員からの質問にHiTTOが自動で回答
従来の問合わせ対応 HiTTOでの問合せ対応
すべて人が対応 チャットボットが自動応答
人事部門
チャットボット
ハナコさん
人事部門
会 社 紹 介
7
1 . まえおき!
2 . C I / C Dライフサイクル
3 . C I / C D以外のケース
4 . 現状の課題
5 . まとめ
本日のアジェンダ
1 . ま え お き !
9
今日話すこと 話そうと思ったきっかけ
今日話さないこと
● コードを書いてからインフラに適応され
るまでの一連の流れ
● どのような狙いがあってそうしたのか
● アーキテクチャ
● 機能の紹介
TerraformとCI/CDを用いた
弊社での開発の流れ
各社どのように運用してい
るかあまり情報がなかった
Terraformそのものの
プラクティス
● サービスの種類/メンバーの熟練度/事業
のフェーズなどによってベストプラク
ティスはない
● 弊社の状況と自分がどういう意思決定
で構築したのかの情報を世に出すこと
に価値があると思った
● 調べてもあんまり出て来なくて困った
1 . ま え お き !
10
今日話すこと 話そうと思ったきっかけ
今日話さないこと
● コードを書いてからインフラに適応され
るまでの一連の流れ
● どのような狙いがあってそうしたのか
● アーキテクチャ
● 機能の紹介
TerraformとCI/CDを用いた
弊社での開発の流れ
各社どのように運用してい
るかあまり情報がなかった
Terraformそのものの
プラクティス
● サービスの種類/メンバーの熟練度/事業
のフェーズなどによってベストプラク
ティスはない
● 弊社の状況と自分がどういう意思決定
で構築したのかの情報を世に出すこと
に価値があると思った
● 調べてもあんまり出て来なくて困った
1 . ま え お き !
11
今日話すこと 話そうと思ったきっかけ
今日話さないこと
● コードを書いてからインフラに適応され
るまでの一連の流れ
● どのような狙いがあってそうしたのか
● アーキテクチャ
● 機能の紹介
TerraformとCI/CDを用いた
弊社での開発の流れ
各社どのように運用してい
るかあまり情報がなかった
Terraformそのものの
プラクティス
● サービスの種類/メンバーの熟練度/事業
のフェーズなどによってベストプラク
ティスはない
● 弊社の状況と自分がどういう意思決定
で構築したのかの情報を世に出すこと
に価値があると思った
● 調べてもあんまり出て来なくて困った
1 . ま え お き !
12
細かいのは省きます
CI IaC
コード管理
使用ツール・サービス
Cloud Provider
● モノレポ
● マイクロサービスでサービスごと
のリポジトリにインフラのコード
もあるみたいな構成ではない
● アプリケーションで採用されて
いたので同じく利用
● DEV, STG, PRD, XXXなどでアカ
ウントを分けているマルチアカ
ウント構成
● 流石にこれはそう
● V1.0.0
1 . ま え お き !
2 . C I / C D ラ イ フ サ イクル
14
a long long time ago…
2 . C I / C D ラ イ フ サ イ ク ル
$ terraform apply
構うもんかよ
15
a long long time ago…
2 . C I / C D ラ イ フ サ イ ク ル
$ terraform apply
俺しかいねえ
んだからよ….
開発者( 私) がローカルPC から

直接terraform コマンドを実行
terraform を触るのは

自分1 人のみ
16
a long long time ago…
2 . C I / C D ラ イ フ サ イ ク ル
$ terraform apply
01
03
自分以外のSREの方がjoinしてくれた時
にレビューフレンドリーな形にしておき
たい!
将来的にはSREではないアプリエンジニ
アもterraformを使って必要な修正が自分
たちでできるようにしたい
誰でも簡単に安心してインフラを変更で
きるようにしたい!
Applyの度にドキドキしたくない!
02
モチベーション
17
現在の構成 ~plan実行時~
2 . C I / C D ラ イ フ サ イ ク ル
$
terraform
plan
$ terraform plan
$ terraform plan
$ git push
on push
Result
18
現在の構成 ~plan実行時~
2 . C I / C D ラ イ フ サ イ ク ル
$
terraform
plan
$ terraform plan
$ terraform plan
$ git push
on push
Result
開発者が変更した
Te r r a f o r m のコードを
ブランチにpush
19
現在の構成 ~plan実行時~
2 . C I / C D ラ イ フ サ イ ク ル
$
terraform
plan
$ terraform plan
$ terraform plan
$ git push
on push
Result
Pushをトリガーに
C Iを起動
20
現在の構成 ~plan実行時~
2 . C I / C D ラ イ フ サ イ ク ル
$
terraform
plan
$ terraform plan
$ terraform plan
$ git push
on push
Result
tflintとterraform
fmt を実行し結果をPR
にコメント
21
現在の構成 ~plan実行時~
2 . C I / C D ラ イ フ サ イ ク ル
$
terraform
plan
$ terraform plan
$ terraform plan
$ git push
on push
Result
管理している全てのアカ
ウントにplan を実行し
結果をPR にコメント
22
現在の構成 ~plan実行時~
2 . C I / C D ラ イ フ サ イ ク ル
$
terraform
plan
$ terraform plan
$ terraform plan
$ git push
on push
Result
管理している全てのアカ
ウントにplan を実行し
結果をPR にコメント
23
現在の構成 ~plan実行時~
2 . C I / C D ラ イ フ サ イ ク ル
$
terraform
plan
$ terraform plan
$ terraform plan
$ git push
on push
Result
ここまででlint も OK で
Plan結果の差分もPR に
コメントされているので
レビュワーをアサイン
ビュイーは各種コメント
結果を見ながらレ
ビューを実施
24
現在の構成 ~apply実行時~
2 . C I / C D ラ イ フ サ イ ク ル
$
terraform
apply
$ terraform apply
$ terraform apply
Merge
on pus
h

only master
Result
25
現在の構成 ~apply実行時~
2 . C I / C D ラ イ フ サ イ ク ル
$
terraform
apply
$ terraform apply
$ terraform apply
Merge
on pus
h

only master
Result
レビューが終わっ たら
PR をm a s t e rブランチ
にマージ
26
現在の構成 ~apply実行時~
2 . C I / C D ラ イ フ サ イ ク ル
$
terraform
apply
$ terraform apply
$ terraform apply
Merge
on pus
h

only master
Result
m a s t e rブランチのみ
C Iでterraform appl
y

そ全環境向けに実行
27
現在の構成 ~apply実行時~
2 . C I / C D ラ イ フ サ イ ク ル
$
terraform
apply
$ terraform apply
$ terraform apply
Merge
on pus
h

only master
A p p l y結果を Sl ack にコ
メントして通知
Result
3 . C I / C D 以 外 の シ ーン
29
この構成で気づいたこと
3 . C I / C D 以 外 の シ ー ン
30
この構成で気づいたこと
3 . C I / C D 以 外 の シ ー ン
やっぱローカルで
terraformコマンド
打ちてえなぁ
…

$ terraform plan
$ terraform import
31
この構成で気づいたこと
$ terraform plan
$ terraform import
terraform 実行のため
のa w s c r e d e n t i a lが
ローカルに必要だが
IAM の管理とセキュリ
ティー麺が課題
3 . C I / C D 以 外 の シ ー ン
32
GSuiteアカウントでローカルから認証
GSuite をidP にして
ローカルPC でa w sの
時間制限付き
c r e d e n t i a lを発行で
きるようにした
3 . C I / C D 以 外 の シ ー ン
33
この構成で気づいたこと
GSuite をidP にして
ローカルPC を
https://product-blog.hitto.co.jp/
「GSuiteアカウントでらくらくaws認証!」 Common soon…
3 . C I / C D 以 外 の シ ー ン
4 . 現 状 の 課 題
4 . 現 状 の 課 題
1. Terraformのアップデート大変
2. 構成ドリフトの検知
4 . 現 状 の 課 題
1. Terraformのアップデート大変
2. 構成ドリフトの検知
renovateを
使ってみてぇなぁ
4 . 現 状 の 課 題
1. Terraformのアップデート大変
2. 構成ドリフトの検知
どうしたらいいのか
わかんねえなぁ…
5 . ま と め
5 . ま と め
1. planしてreview、mergeしてapply

という運用にしてみたら結構良かった
3. 2人目のSREを探しています!
2. ローカルでterraform触りたい日もある

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

SpringBootTest入門
SpringBootTest入門SpringBootTest入門
SpringBootTest入門
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開するKeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
 
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
 
これからのネイティブアプリにおけるOpenID Connectの活用
これからのネイティブアプリにおけるOpenID Connectの活用これからのネイティブアプリにおけるOpenID Connectの活用
これからのネイティブアプリにおけるOpenID Connectの活用
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
 
AWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグAWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグ
 

Semelhante a 俺のTerraform CI/CD ライフサイクル

プロレス クラウドExpo 20140515(公開版)
プロレス クラウドExpo 20140515(公開版)プロレス クラウドExpo 20140515(公開版)
プロレス クラウドExpo 20140515(公開版)
Daisuke Kawada
 

Semelhante a 俺のTerraform CI/CD ライフサイクル (20)

Freee kintone 200205
Freee kintone 200205Freee kintone 200205
Freee kintone 200205
 
いますぐできる!AdminのためのPardot導入準備
いますぐできる!AdminのためのPardot導入準備いますぐできる!AdminのためのPardot導入準備
いますぐできる!AdminのためのPardot導入準備
 
プロダクトがリリースされるまでを『見える化』することで組織体質を変えていった話
プロダクトがリリースされるまでを『見える化』することで組織体質を変えていった話プロダクトがリリースされるまでを『見える化』することで組織体質を変えていった話
プロダクトがリリースされるまでを『見える化』することで組織体質を変えていった話
 
20190920 hannaripython20
20190920 hannaripython2020190920 hannaripython20
20190920 hannaripython20
 
P4 Updates (2020) (Japanese)
P4 Updates (2020) (Japanese)P4 Updates (2020) (Japanese)
P4 Updates (2020) (Japanese)
 
Mulesoft meetup #02 Anypointで日本のクラウドサービスを繋いでみた!
Mulesoft meetup #02 Anypointで日本のクラウドサービスを繋いでみた!Mulesoft meetup #02 Anypointで日本のクラウドサービスを繋いでみた!
Mulesoft meetup #02 Anypointで日本のクラウドサービスを繋いでみた!
 
ディップ株式会社_kintonehive
ディップ株式会社_kintonehiveディップ株式会社_kintonehive
ディップ株式会社_kintonehive
 
Domino Voltアプリケーションを作成してみたよ!
Domino Voltアプリケーションを作成してみたよ!Domino Voltアプリケーションを作成してみたよ!
Domino Voltアプリケーションを作成してみたよ!
 
formBuilderによりフォームを簡単作成
formBuilderによりフォームを簡単作成formBuilderによりフォームを簡単作成
formBuilderによりフォームを簡単作成
 
Capa
CapaCapa
Capa
 
クラウドの進化とメディア理解の発展
クラウドの進化とメディア理解の発展クラウドの進化とメディア理解の発展
クラウドの進化とメディア理解の発展
 
Misrac20150523
Misrac20150523Misrac20150523
Misrac20150523
 
プロレス クラウドExpo 20140515(公開版)
プロレス クラウドExpo 20140515(公開版)プロレス クラウドExpo 20140515(公開版)
プロレス クラウドExpo 20140515(公開版)
 
今日から始めるProductManager
今日から始めるProductManager今日から始めるProductManager
今日から始めるProductManager
 
ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントと...
ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントと...ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントと...
ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントと...
 
formBuilderにより フォームを簡単作成(オープンセミナー版)
formBuilderにより フォームを簡単作成(オープンセミナー版)formBuilderにより フォームを簡単作成(オープンセミナー版)
formBuilderにより フォームを簡単作成(オープンセミナー版)
 
Alteryxの空間分析で学ぶ、最寄りの指定緊急避難場所と低水位地帯 Developers.IO Tokyo 2019
Alteryxの空間分析で学ぶ、最寄りの指定緊急避難場所と低水位地帯 Developers.IO Tokyo 2019Alteryxの空間分析で学ぶ、最寄りの指定緊急避難場所と低水位地帯 Developers.IO Tokyo 2019
Alteryxの空間分析で学ぶ、最寄りの指定緊急避難場所と低水位地帯 Developers.IO Tokyo 2019
 
GoによるiOSアプリの開発
GoによるiOSアプリの開発GoによるiOSアプリの開発
GoによるiOSアプリの開発
 
株式会社ニット:<台湾>2021年アジアのネット通販最新情報
株式会社ニット:<台湾>2021年アジアのネット通販最新情報株式会社ニット:<台湾>2021年アジアのネット通販最新情報
株式会社ニット:<台湾>2021年アジアのネット通販最新情報
 
GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話
 

Mais de HonMarkHunt

Mais de HonMarkHunt (12)

CircleCI vs. CodePipeline
CircleCI vs. CodePipelineCircleCI vs. CodePipeline
CircleCI vs. CodePipeline
 
Introduce Shinjuku.LT
Introduce Shinjuku.LTIntroduce Shinjuku.LT
Introduce Shinjuku.LT
 
I don't use kubernetes.
I don't use kubernetes.I don't use kubernetes.
I don't use kubernetes.
 
エンジニアのUI/UXはじめの一歩
エンジニアのUI/UXはじめの一歩エンジニアのUI/UXはじめの一歩
エンジニアのUI/UXはじめの一歩
 
怖くない!Implicit!
怖くない!Implicit!怖くない!Implicit!
怖くない!Implicit!
 
Netflixで見れるおすすめ作品10本
Netflixで見れるおすすめ作品10本Netflixで見れるおすすめ作品10本
Netflixで見れるおすすめ作品10本
 
アドテクやってるエンジニアだけど、どうしても伝えたいことがある。
アドテクやってるエンジニアだけど、どうしても伝えたいことがある。アドテクやってるエンジニアだけど、どうしても伝えたいことがある。
アドテクやってるエンジニアだけど、どうしても伝えたいことがある。
 
How to managed your kicks!!
How to managed your kicks!!How to managed your kicks!!
How to managed your kicks!!
 
新日本プロレスに学ぶエンジニアのキャリアプラン
新日本プロレスに学ぶエンジニアのキャリアプラン新日本プロレスに学ぶエンジニアのキャリアプラン
新日本プロレスに学ぶエンジニアのキャリアプラン
 
LINE Messaging apiと戯れる
LINE Messaging apiと戯れるLINE Messaging apiと戯れる
LINE Messaging apiと戯れる
 
正しい開発をする
正しい開発をする正しい開発をする
正しい開発をする
 
Java9新機能概要
Java9新機能概要Java9新機能概要
Java9新機能概要
 

俺のTerraform CI/CD ライフサイクル