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
awswakaran.tokyo_CI_CD
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
y-ohgi
July 22, 2019
2
2.3k
awswakaran.tokyo_CI_CD
awswakaran.tokyo の登壇資料です
y-ohgi
July 22, 2019
Tweet
Share
More Decks by y-ohgi
See All by y-ohgi
EKS Auto-Mode with Kro
y0hgi
0
200
AWS Cloud Control API & AWSCC Provider
y0hgi
1
51
AWSとSRE 〜サービスの信頼性〜
y0hgi
2
350
re:Invent 2024 re:Cap コンピューティング&コンテナ
y0hgi
3
460
クラウドを今から学ぶには
y0hgi
0
560
クラウド・コンテナ・CI/CDわからん会
y0hgi
0
74
入門 Docker - JAWS-UG東京 ランチタイムLT会 #14
y0hgi
1
420
AWS CloudShell で開発したかった話 / i-cant-develop-in-cloudshell
y0hgi
1
2k
クラウド入門/Introduction Cloud
y0hgi
0
120
Featured
See All Featured
Thoughts on Productivity
jonyablonski
74
5k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
It's Worth the Effort
3n
188
29k
A designer walks into a library…
pauljervisheath
210
24k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
240
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
Building the Perfect Custom Keyboard
takai
2
690
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Invisible Side of Design
smashingmag
302
51k
The Pragmatic Product Professional
lauravandoore
37
7.1k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
Transcript
CI/CDわからん awswakaran.tokyo #1
• 大木 裕介 (24) ◦ SRE • すき ◦ アニメ/Node.js/Cloud
• Twitter ◦ @_y_ohgi だれ
• CI/CDわからん • CI/CDやってみようぜ • まとめ はなすこと
• CI/CDわからん • CI/CDやってみようぜ • まとめ はなすこと
CI/CDわからん サービス開発がいい感じになるらしい
サービス開発の流れ 開発 テスト リリース 監視
• 継続的インテグレーション • 開発物の品質担保 • 自動でビルド&テストを実行 ◦ gitのコミットを起点とするなど Continuous Integration
開発 テスト リリース 監視
• 開発時から意識しておくこともある • 自動テストは可能か ◦ そもそもテスト書いてますか? • 開発者間の事前の合意 ◦ 各バージョン・コーディング規約
◦ PRはCIを通してからレビューするなど • CIツールの選定 ◦ CI上でDBなどを動かしたい ◦ 複数バージョンのテストをしたい Continuous Integration 開発 テスト リリース 監視
- 継続的デプロイメント(/デリバリ) - ビルド&テストが終わった成果物を自動的 にリリース Continuous Deployment(/Delivery) 開発 テスト リリース
監視
• 監視も必要 • 環境差分がある ◦ テストが通っても環境差分でエラーは起きる • バージョン差異に気づける仕組み ◦ デプロイした直後など、複数バージョンが入り交じる状
況が起きる ◦ エラーログを見るときに、新旧バージョン見分けられる 仕組みが必要 Continuous Deployment(/Delivery) 開発 テスト リリース 監視
サービス開発の流れ 開発 テスト リリース 監視
サービス開発の流れ 開発 テスト リリース 監視 ぐるぐる
• CI/CDわからん • CI/CDやってみようぜ • まとめ はなすこと
とりあえず やってみよーぜ!
ツールにあてはめてみる 開発 テスト リリース 監視
ツールにあてはめてみる 開発 テスト リリース 監視 • GitHub Enterprise ◦ みんな大好きGitHubの商用版
• docker-compose ◦ ローカル用dockerオーケストレーション ツール ◦ 起動コマンドを統一可能 ◦ 複数コンテナの起動可能
ツールにあてはめてみる 開発 テスト リリース 監視 • CircleCI Enterprise ◦ CIサービス
◦ GitHub Enterpriseと連携が用意 ◦ 基本的にcircleci.comと遜色なく使用 可能
ツールにあてはめてみる 開発 テスト リリース 監視 Amazon ECS Code 兄弟 •
Code兄弟 ◦ マネージドなCDサービス ◦ CodePipeline/CodeBuild/CodeDeployを利用 • Amazon ECS ◦ コンテナオーケストレーションツール ◦ データプレーンにはFargateを活用
ツールにあてはめてみる 開発 テスト リリース 監視 Amazon ECS Code 兄弟 •
Datadog ◦ 複数の環境(AWS/オンプレ/GCP/etc)を統合的に監 視可能 ◦ メトリクスだけじゃなく、ロギングやトレースも可能
ツールにあてはめてみる 開発 テスト リリース 監視 Amazon ECS Code 兄弟 作ってみたらまだまだあった!
ツールにあてはめてみる 開発 テスト リリース 監視 Amazon ECS Code 兄弟 ここらへんがつらい
〜CIとCDの狭間〜
• 環境差分 ◦ ステージングや本番など、どのフェーズ(ツール)で環境差分を吸収する? • migrationの実行 ◦ DBのmigrationをどこで、だれが、いつ実行するのか • サービス間の疎通
◦ マイクロサービス化していると、サービス間の疎通がつらい • デプロイ手法の混在 ◦ サービスによってデプロイ方法が違う CI/CDの狭間
環境差分 • 環境は複数存在 ◦ 本番/ステージング/QA/負荷試験/etc…、用途によって 複数存在 • いつCI/CD実行する? ◦ ブランチをマージしたタイミング?
◦ タグを付けたタイミング? ◦ Dockerをpushしたタイミング? • とりあえず増やせるようにする ◦ 本番/ステージングの2パターンだけ考慮して いると、あとからQAや負荷試験の要求が来た ときに詰む ◦ とりあえず増やせるようにしておく master develop
• 1デプロイ1回 ◦ 1回のデプロイサイクルで1度だけ実行されるようにす ることが重要 ◦ コンテナ起動時にmigrationを行うとコンテナ起動毎に 実行されて死ぬ • CDのサイクルの1部に組み込む
◦ 例えばCodeBuildのような任意のコードを実行できる 場所で行う ◦ ECRのイメージを使ったり、タスク定義からコンテナを 実行したり、既存の成果物を使用すると楽 migrationの実行 CodePipeline CodeBuild CodeDeploy Amazon ECS migrationの実行
• 複数のデプロイ手法が混在 ◦ サービスが複数存在するようになってくるとデプロイ手 法が別れてくる ◦ 「masterブランチにマージしたら」「tagをつけたら」 「Jenkinsから」とかとか... • どうなるのか
◦ デプロイが混在すると安易にデプロイできなくなる ◦ ドキュメントをあさり続けることに(1週間後には忘却) • 統一する ◦ 隣のエンジニアに「ooをしたら本番にデプロイされる」こ とを教えなくて良い世界線へ デプロイ手法の混在 ?
• サービス間の疎通 ◦ マイクロサービス化されていると複数のサービスが通 信できる必要がある • 接続方法はいろいろある ◦ 「エンドポイントは?」「ステージングだけIP開放申 請?」「認証認可は?」「プロトコルは?」
• API Gateway ◦ AWSのAPI Gatewayサービスじゃなく、microservice のAPI Gatewayパターン • ServiceMesh ◦ AppMeshとかIstioとか、サービス間の通信をいい感じ にしてくれる サービス間の疎通 https://www.appcentrica.com/the-rise-of-microservices/ App Mesh
• CI/CDわからん • CI/CDやってみようぜ • まとめ はなすこと
まとめ とりあえず やってみよーぜ!