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
DevOps実装初期フェーズの組織がTerraformとecspressoで求めるAma...
Search
Tocyuki
November 22, 2022
Technology
5.7k
11
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DevOps実装初期フェーズの組織がTerraformとecspressoで求めるAmazon ECS CICDの最適解/AWS ECS CICD with Terraform and ecspresso
Cloud Native Days Tokyo 2022
Tocyuki
November 22, 2022
More Decks by Tocyuki
See All by Tocyuki
HashiCorp製品導入の背景と今後の展望/Background of HashiCorp product introduction and future prospects
tocyuki
0
120
AEON TECH HUBで目指すもの/What we aim for with AEON TECH HUB
tocyuki
0
86
マイクロサービス導入により生まれた組織課題に対するソリューションとしてのTiDB/Developers Summit 2024 TiDB Sponsor Session
tocyuki
0
100
イオンがKubernetesを採用してどうなった/What happened when AEON adopted Kubernetes
tocyuki
0
110
FutureStack_Tokyo_NRUG_2周年特別版
tocyuki
0
70
ecspresso愛を語る/I Love ecspresso
tocyuki
0
3.5k
さいつよのEC2オートスケーリング環境CICDパイプライン2022オータム/Strongest EC2 Autoscaling Environment CI/CD Pipeline 2022 Autumn
tocyuki
5
4.4k
Terraformで作る分析用Aurora Readerインスタンス/Aurora Reader instance for analysis made with Terraform
tocyuki
0
510
Devに力を授けたいSREのあゆみ / SRE that wants to empower developers
tocyuki
4
1.4k
Other Decks in Technology
See All in Technology
型は壁、Rustでもバグを直すな、表現できなくせよ
nwiizo
13
2k
[2026-07-15] AI Ready なはずだったアーキテクチャと、見えてきた課題・次に目指す状態
wxyzzz
6
3.3k
SRE Next 2026 何でも屋からの脱却
bto
0
690
プロダクトだけじゃない、社内プロセスにおける自動化・省力化ノススメ
kakehashi
PRO
1
3.7k
人を動かすのは時間ではなく、納得感 〜新任EMが入社3ヶ月、組織を2回変えた話〜
kakehashi
PRO
3
220
“それは自分の仕事じゃない"を越えて行け
yuukiyo
0
270
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
0
130
Claude Code公式skillで 自分の仕事を少しずつ手放そう!(Claude Code開発ノウハウ大公開スペシャル by クラスメソッド)
kaym
1
330
貴方はどのエンジニアリングを磨くのか
hatyibei
0
130
誤解だらけの開発生産性 / Myths and Misconceptions about Developer Productivity
i35_267
1
250
Road to SRE NEXTの今までとこれから
hiroyaonoe
0
310
DMM.com 購入改善推進チーム におけるCodeRabbitを用いた レビューフロー改善の一例
ysknsid25
2
630
Featured
See All Featured
Bash Introduction
62gerente
615
220k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
330
Agile that works and the tools we love
rasmusluckow
331
22k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
890
Code Reviewing Like a Champion
maltzj
528
40k
Statistics for Hackers
jakevdp
799
230k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
970
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
410
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
180
Typedesign – Prime Four
hannesfritz
42
3.1k
Transcript
DevOps実装初期フェーズの組織が Terraformとecspressoで求める Amazon ECS CI/CDの最適解
自己紹介 名前:Tocyuki(としゆき) 所属:株式会社トラストバンク CTO室 SRE 経歴:Network→Infra→SRE 趣味:ギター、柔術(紫帯) SNS:@Tocyuki 2
会社紹介
会社概要 4 資本金 122,243,816円 親会社 株式会社チェンジ(東京証券取引所第一部) 100%連結子会社 子会社 株式会社Orb 決算期 3月 主な事業・サービス ふるさと納税ポータルサイト「ふるさとチョイス」 パブリテック事業 「LoGoシリーズ」 エネルギー事業 ふるさとエネルギーチョイス「えねちょ」
地域通貨事業 「chiica(チーカ)」
Vision 5 目指すは「自立した持続可能な地域をつくる」こと。 トラストバンクが目指す地域共創で実現する経済循環図
6 ふるさと納税事業 パブリテック事業 エネルギー事業 地域通貨事業 主な事業・サービス
SECTION 7 00 DevOps実装初期フェーズの組織がTerraform とecspressoで求める Amazon ECS CI/CDの最適解
聴講対象者 • 開発者にもインフラ、IaCに触れてほしい • DevOpsの実装例に興味がある • Amazon ECSでシンプルなCI/CDを実現したい 8
今回お話しすること • DevOps実装設計の肝 • CI/CDで採用したツール、サービス • Amazon ECSのCI/CD 9
10 DevOps実装初期フェーズの組織?
とある開発組織 11 バグで障害起こされたらやだから しっかりテストしてくれや リリースしたい新機能が盛りだくさ んだぜ Operator Developer テスト書けてないけど多分動くと 思うからリリースしようぜ
いや、そんなんリリースすんなし
とある開発組織 12 バグで障害起こされたらやだから しっかりテストしてくれや リリースしたい新機能が盛りだくさ んだぜ Operator Developer テスト書けてないけど多分動くと 思うからリリースしようぜ
いや、そんなんリリースすんなし 協力しようぜ!!
とある開発組織 13 よし、まずは踏み台サーバーに SSHして、アプリサーバーに SSH してgit pullしてと テストしたからリリースしてよ Operator Developer
はやくしてくれ〜 ふー、 あと100台同じことやらなきゃ
とある開発組織 14 よし、まずは踏み台サーバーに SSHして、アプリサーバーに SSH してgit pullしてと テストしたからリリースしてよ Operator Developer
はやくしてくれ〜 ふー、 あと100台同じことやらなきゃ 自動化しようぜ!!
DevOpsとは 15 ざっくり説明すると、開発チームと運用チームのサイロ化や様々 な場面での自動化プロセスの欠如により迅速なソフトウェアデリ バリーが実現できていないような状況を改善するための手法、文 化、思想
DevOpsで目指したいこと 16 OperatorとDeveloperが共にプロダクトに オーナーシップを持ち、開発、リーリース、運 用のサイクルを協力しながら迅速にまわして いく状態を目指したい
弊社のDevOps実装前の状況 17 • 開発者がインフラの構築や変更に関心がない • インフラ構築、変更は外部のMSPへ委託していた • 開発者が運用監視について関心がない • インフラ運用監視は外部のMSPへ委託していた
• 開発者が運用を考慮した設計、実装に関心がない • 開発者が運用に参加していないため、運用を考慮した発想が出ない • 各種運用が自動化されておらず作業工数負荷が高い • 運用改善や自動化の文化もリソースもなく惰性で対応
18 class SRE implements DevOps SREはDevOpsというinterfaceの実装である
DevOps実装を始めて弊社に起こった変化 19 • 開発者がIaCへコントリビュートを始める • AWSへの移行に伴いInfrastructure as Codeを実践 • 開発者が監視アラートやダッシュボードを仕込み始める
• New Relicをオブザーバビリティ基盤として導入 • 開発者が運用を考慮した設計、実装をし始める • 運用に参加する開発者が増え、運用を考慮し始める • 様々な運用が自動化され開発に割ける工数が増えた • デプロイ、ビルド、テスト等様々な部分を自動化
20 どのようにDevOpsを実装するか?
21 Amazon ECSのCI/CDの事例を元に DevOps実装の一例をご紹介します
SECTION 22 01 DevOps実装設計の肝
DevOpsが扱う5つの領域 23 Reduce organizational silos 組織のサイロを削減する Accept failure as normal
エラーが発生するのを許容する Implement gradual change 段階的に変更する Leverage tooling and automation ツールと自動化を活用する Measure everything すべてを計測する
24 Operator Developer なぜサイロ化が起こるのか インフラ 運用 監 視 障害対応 テスト
開発 機能追加 リリー ス 関心のスコープは関 与できる領域にしか 広がりにくい 関心のスコープ 関心のスコープ
25 Operator Developer なぜサイロ化が起こるのか インフラ 運用 監 視 障害対応 テスト
開発 機能追加 リリー ス 関心のスコープが異 なる組織は目的も異 なりやすい 関心のスコープ 関心のスコープ 多少のリスクは負っても新機能、 価値をユーザーへ届けたい ユーザーへ届けるべき一番の価 値は安定稼働
26 Operator Developer インフラ 運用 監 視 障害対応 テスト 開発
機能追加 リリー ス 関心のスコープ 関心のスコープ 関心のスコープの 共通化が有効 サイロ化を起こさせないために
27 インフラ 運用 監 視 障害対応 テスト 開発 機能追加 リリー
ス 関心のスコープ 理想の姿 Operator & Developer
28 千里の道も一歩から
段階的に共通化を広げていくことが大事 • お互いの関心のスコープに関与できるような仕組み作り • プログラムを共通言語とするInfrastructure as Codeの実践 • Infrastructure as
Codeを実践しやすいパブリッククラウドの採用 • いきなりすべてに関与することは難しいので切り出す • アプリケーションリポジトリにインフラの定義を一部持たせる • 利用しやすい仕組みとしてCI等で自動化する 29 とは言うものの、どう やって実現しよう?
DevOpsが扱う5つの領域 30 Reduce organizational silos 組織のサイロを削減する Accept failure as normal
エラーが発生するのを許容する Implement gradual change 段階的に変更する Leverage tooling and automation ツールと自動化を活用する Measure everything すべてを計測する
DevOps実装設計の肝まとめ 31 • 関心のスコープの共通化が有効 • 共通化の範囲は一気に広げず、段階的に適用していく
SECTION 32 02 CI/CDで採用したツール、サービス
採用したツール、サービス 33 名称 役割 Terraform HashiCorp社謹製のパブリッククラウドやオンプレミスのリソースを安全かつ 効率的に構築、変更バージョン管理するためのInfrastructure as Codeツー ル
ecspresso カヤック藤原さん謹製のAmazon ECS用のとても薄いレイヤーで作られた AWS APIラッパーなデプロイツールで「エスプレッソ」と読みます GitHub Actions GitHub謹製のCIツール
• ECSのサービス、タスク定義の管理に特化している • アプリケーションのライフサイクルに近い部分のみを切り出せる • アプリケーションリポジトリに定義を配置することで開発者が変更できる • tfstateファイル内の値を参照できる • tfstateのバックエンドにS3を利用している場合、Terraformで構築したAWSのリ
ソースを呼び出せるため、サービスやタスクを環境毎に分ける必要がなくDRYに 書ける • 開発者がTerraformのどこで定義されているか読み取ることができる ecspresso採用理由 34
• ECSのサービス、タスク定義の管理に特化している • アプリケーションのライフサイクルに近い部分のみを切り出せる • アプリケーションリポジトリに定義を配置することで開発者が変更できる • tfstateファイル内の値を参照できる • tfstateのバックエンドにS3を利用している場合、Terraformで構築したAWSのリ
ソースを呼び出せるため、サービスやタスクを環境毎に分ける必要がなくDRYに 書ける • 開発者がTerraformのどこで定義されているか読み取ることができる ecspresso採用理由 35 段階的且つ効果的にインフラの一部を開発者の 関心のスコープへ入れることができる
アプリケーションのリポジトリ構成 36
• ECSのサービス、タスク定義の管理に特化している • アプリケーションのライフサイクルに近い部分のみを切り出せる • アプリケーションリポジトリに定義を配置することで開発者が変更できる • tfstateファイル内の値を参照できる • tfstateのバックエンドにS3を利用している場合、Terraformで構築したAWSのリ
ソースを呼び出せるため、サービスやタスクを環境毎に分ける必要がなくDRYに 書ける • 開発者がTerraformのどこで定義されているか読み取ることができる ecspresso採用理由 37 ecspressoをハブにしたTerraformへの導線確保 を行うことで、今後さらに開発者の関心のスコープを 広げるための下地作りができる
こんな感じで参照できる 38
すると・・・? 39 開発者 DBの設定確認したいなぁ。 お、Terraformのこの定義を見に 行けばええんやな。 じぃ〜〜〜〜〜 なるほど、Terraformはこう書けば ええんやな。いっちょ PR出してみ
よか。
• ECS execもラップしてくれている • やっぱりコンテナ入りたいをecspressoで叶えてくれる • ECSタスクのイベントログを一括表示する機能がある • デバッグで超絶便利 ecspresso採用理由
40
たとえばこんな時 41 ecspresso 開発者 ローカルでは動くのに ECSだとうまく動かない のよなぁ。あー、こんなときに ECSのコンテナ 入ってデバッグできればなぁ。 ecspresso
execコマンドを使うのです … なんだ!??ecspresso exec??お、コンテナ 入れた!!!これで!!!かてる!!!
• ECS execもラップしてくれている • やっぱりコンテナ入りたいをecspressoで叶えてくれる • ECSタスクのイベントログを一括表示する機能がある • デバッグで超絶便利 ecspresso採用理由
42
たとえばこんな時 43 ecspresso 開発者 あー、ECSのデプロイがうまくいかないー。原因 もよくわからんし、そもそもどうやってデバッグす ればええんやー。つらー。 --traceでイベントログを出力させるのです … なんだ!??--traceオプション??お、イベント
ログが表示された!?また IAM権限不足!! 貴様か!!これで!!!かてる!!!
AWS Resources ECSオブジェクトとツールの関連図 44 ECS Cluster ECS Service ECS Task
definition Container definition Dockerfile ecspresso ecspresso Terraform Terraform
AWS Resources ECSオブジェクトとツールの関連図 45 ECS Cluster ECS Service ECS Task
definition Container definition Dockerfile ecspresso ecspresso Terraform Terraform アプリケーションリ ポジトリに配置 Terraform リポジトリに配置
CI/CDで採用したツール、サービスまとめ 46 • ecspressoはECSのサービス、タスク定義などのアプリケー ションのライフサイクルに近い部分を切り離して管理できる神 ツール • ecspressoをハブにTerraformへ誘導し、IaCへのコントリ ビュートにも参加してもらおう
SECTION 47 03 Amazon ECSのCI/CD
• Dockerコンテナのビルド • コンテナレジストリへのプッシュ • タスク定義のデプロイ Amazon ECSのデプロイで必要なこと 48
• Dockerコンテナのビルド • コンテナレジストリへのプッシュ • タスク定義のデプロイ Amazon ECSのデプロイで必要なこと 49
コンテナのビルドとECRへのプッシュ 50 開発者 GitHub GitHub Actions ECR push build push
• Dockerコンテナのビルド • コンテナレジストリへのプッシュ • タスク定義のデプロイ Amazon ECSのデプロイで必要なこと 51
ECS Cluster タスク定義のデプロイ 52 Service Task definition 開発者 GitHub
GitHub Actions ecspresso push deploy jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: kayac/ecspresso@v1 with: version: v1.7.14 - run: | ecspresso deploy --config ecspresso.yml
ECS Cluster CI/CD全体の流れ 53 Service Task definition 開発者 GitHub
GitHub Actions ECR ecspresso push build push deploy
• Blue/Greenデプロイが必要な要件がとくにない • ロールバックなどECSに任せることができる • なるべくシンプルなデプロイにしたい デプロイ方式はローリングアップデート 54
デプロイイメージ 55 ECS Cluster Service Task definition revision 1
ALB ユーザー
デプロイイメージ 56 ECS Cluster Service Task definition revision 1
Task definition revision 2 開発者 GitHub GitHub Actions ecspresso ALB ユーザー
デプロイイメージ 57 ECS Cluster Service Task definition revision 1
Task definition revision 2 ALB ユーザー
デプロイイメージ 58 ECS Cluster Service Task definition revision 1
Task definition revision 2 ALB ユーザー
デプロイイメージ 59 ECS Cluster Service Task definition revision 2
ALB ユーザー
ロールバックイメージ 60 ECS Cluster Service Task definition revision 1
Task definition revision 2 開発者 GitHub GitHub Actions ecspresso ALB ユーザー
ロールバックイメージ 61 ECS Cluster Service Task definition revision 1
Task definition revision 2 ALB ユーザー healthcheck failed
ロールバックイメージ 62 ECS Cluster Service Task definition revision 1
ALB ユーザー
Amazon ECSのCI/CDまとめ 63 • GitHub Actionsのシンプルで簡素な記述でDockerのビル ド、ECRへのプッシュ、ecspressoによるデプロイをシンプル に実装することができた • デプロイ方式もローリングアップデートにすることでロールバッ
クもECSのマネージドに任せることができシンプルでわかりや すいデプロイにすることができた
SECTION 64 04 まとめ
• DevOpsの意図をアーキテクチャに組み込むことで仕組みレ ベルでのDevOps推進を進めることができた • ecspressoとTerraformを使ったECS環境、CI/CDは DevOps実装の一歩目としてとても有効だと感じた • 組織のレベル、状況によって最適解は異なるので色々試して 自組織の最適解を模索してみてください まとめ
65
66 絶賛SRE募集中です!
None