SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
ビジネスプラットフォームを支えるCI/CDパイプライン
~エンタープライズのDevOpsを加速させる運用改善Tips~
2020年7月29日
NRIデジタル株式会社
安藤 裕紀
1Copyright (C) NRI digital, Ltd. All rights reserved.
◼安藤 裕紀(あんどう ゆうき)
⚫ NRIデジタル プラットフォームアーキテクト
(2011年 野村総合研究所入社、2017年よりNRIデジタル出向)
⚫ Webシステムのサーバ構築・運用を中心としたインフラエンジニアの仕事を
流通・金融・製造など様々な業種のお客様向けに経験。
⚫ 最近は、AWS上に構築されたECサイトやオンライン会員サービスの
開発・運用におけるSRE / DevOpsエンジニア寄りの仕事にシフト
– AWSアーキテクチャ設計
– Infrastructure as Codeによる自動化
– モニタリング・オンコールアラートの改善
– CI/CDパイプラインの整備(本日お話しする内容)
自己紹介:インフラエンジニア10年目、運用経験は結構あります
2020 APN AWS Top Engineers選出
2Copyright (C) NRI digital, Ltd. All rights reserved.
NRIデジタルについて
2016年8月に設立された
野村総合研究所の戦略子会社
NRIグループ内外から組織の壁を超えて
集結した多様なプロフェッショナルが
”ワンチーム”で、お客様と共に
デジタルによるビジネスモデル変革を推進
多様なプロフェッショナルが集結
新たなテクノロジー領域への挑戦
価値共創型のビジネス創出
3Copyright (C) NRI digital, Ltd. All rights reserved.
本日お話しすることの背景
4Copyright (C) NRI digital, Ltd. All rights reserved.
多くの企業が、ビジネス環境の激しい変化に対応するため、データと
デジタル技術を活用したビジネスモデルの変革(DX)に取り組んでいる
店頭販売
対面接客
オンライン会員サービス
デジタルマーケティング
ECサイト・ショッピングアプリ
定額制
サブスクリプションサービス
顧客接点のDX
販売手段のDX
5Copyright (C) NRI digital, Ltd. All rights reserved.
NRIデジタルはお客様のビジネスモデル変革の全てのフェーズに関わり、
さまざまな専門性を持つプロフェッショナルが協力してDXを支援している
構想・
企画
デザイン・設計
開発
テスト
リリース
モニタリング
データ収集・分析
可視化・
フィードバック
事業
運営
お客様
ビジネスデザイナー
(専門性の例)
• ビジネスコンサルタント
• システムコンサルタント
• サービスデザイナー
• UI/UXデザイナー
アプリケーションデベロッパー
(専門性の例)
• プロジェクトマネージャー
• システムエンジニア
• スクラムマスター
• スクラムデベロッパー
プラットフォームアーキテクト
(専門性の例)
• アーキテクト
• インフラエンジニア
• データサイエンティスト
• データエンジニア
6Copyright (C) NRI digital, Ltd. All rights reserved.
お客様のDXを支援する事業会社にいると、よく言われること
お客様
ビジネスデザイナー
早く効果を見て次の手を打ちたい
アプリケーション
デベロッパー
もっと早く楽にアプリをリリースしたい
早く新しいビジネスを成功させたい
7Copyright (C) NRI digital, Ltd. All rights reserved.
早く新しいビジネスを成功させたい
お客様のDXを支援する事業会社にいると、よく言われること
お客様
ビジネスデザイナー
早く効果を見て次の手を打ちたい
アプリケーション
デベロッパー
もっと早く楽にアプリをリリースしたい
8Copyright (C) NRI digital, Ltd. All rights reserved.
本日は、アプリケーションの開発・テスト・リリースのフェーズに
CI/CDを導入して、リリース運用を改善した事例と気づきをご紹介します
構想・
企画
デザイン・設計
開発
テスト
リリース
モニタリング
データ収集・分析
可視化・
フィードバック
事業
運営
お客様
ビジネスデザイナー
(専門性の例)
• ビジネスコンサルタント
• システムコンサルタント
• サービスデザイナー
• UI/UXデザイナー
アプリケーションデベロッパー
(専門性の例)
• プロジェクトマネージャー
• システムエンジニア
• スクラムマスター
• スクラムデベロッパー
プラットフォームアーキテクト
(専門性の例)
• アーキテクト
• インフラエンジニア
• データサイエンティスト
• データエンジニア
CI/CD導入による
• リリースの短期化
• 運用の軽負荷化
9Copyright (C) NRI digital, Ltd. All rights reserved.
目次
前置き(自己紹介/会社紹介/本日お話しすることの背景)
事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ
事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ
CI/CDによる
運用改善事例
まとめ
事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD
課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
10Copyright (C) NRI digital, Ltd. All rights reserved.
目次
前置き(自己紹介/会社紹介/本日お話しすることの背景)
事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ
事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ
CI/CDによる
運用改善事例
まとめ
事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD
課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
11Copyright (C) NRI digital, Ltd. All rights reserved.
(オンプレミスからAWSに移行した)
モノリシックなアプリケーション
12Copyright (C) NRI digital, Ltd. All rights reserved.
ECサイトにはさまざまな機能があり、
課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
◼ECサイトでありそうなWebページ遷移の構成
Users
ログイン 会員登録
トップページ
マイページ
カテゴリ・
商品一覧
会員情報
修正
商品詳細
検索結果
カート 注文 決済
ECサイト
13Copyright (C) NRI digital, Ltd. All rights reserved.
ECサイトにはさまざまな機能があり、用途によって開発を分担している
課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
◼ECサイトでありそうなWebページ遷移の構成
Users
ログイン 会員登録
トップページ
マイページ
カテゴリ・
商品一覧
会員情報
修正
商品詳細
検索結果
カート 注文
会員系
商品系 決済注文系
ECサイト アプリケーションデベロッパー
(注文系担当)
アプリケーションデベロッパー
(商品系担当)
アプリケーションデベロッパー
(会員系担当)
14Copyright (C) NRI digital, Ltd. All rights reserved.
モノリシックなJava EE構成では、単一のアプリケーションとしてデプロイ
課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
アプリケーションデベロッパー
(注文系担当)
アプリケーションデベロッパー
(商品系担当)
開発・ビルド・テスト
開発・ビルド・テスト
商品系.war
注文系.war
アプリケーションサーバ
アプリケーションデベロッパー
(会員系担当)
開発・ビルド・テスト 会員系.war
RHEL
OpenJDK
Java EE
アプリケーションサーバ
application.ear
商品系.war
注文系.war
会員系.war
earにパッケージング・
AMI作成用のEC2
インスタンスにデプロイ
AMI Auto Scaling
AMI化
起動設定更新
15Copyright (C) NRI digital, Ltd. All rights reserved.
モノリシックなJava EE構成では、単一のアプリケーションとしてデプロイ
課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
アプリケーションデベロッパー
(注文系担当)
アプリケーションデベロッパー
(商品系担当)
開発・ビルド・テスト
開発・ビルド・テスト
商品系.war
注文系.war
アプリケーションサーバ
アプリケーションデベロッパー
(会員系担当)
開発・ビルド・テスト 会員系.war
RHEL
OpenJDK
Java EE
アプリケーションサーバ
application.ear
商品系.war
注文系.war
会員系.war
earにパッケージング・
AMI作成用のEC2
インスタンスにデプロイ
AMI Auto Scaling
AMI化
起動設定更新
問題点:
◼ EC2のAuto Scaling を利用しているため、都
度AMIの再作成が必要で、Java EEアプリケー
ションの部分的なホットデプロイが不可能
◼ EJBを多用するフレームワークではアプリケーショ
ンサーバの再起動に時間がかかり、デプロイの確
認が長時間化。ロールバックにも時間がかかる
→定期リリース運用にならざるを得ない
16Copyright (C) NRI digital, Ltd. All rights reserved.
レガシーで高負荷なリリース運用
17Copyright (C) NRI digital, Ltd. All rights reserved.
Subversionを利用しており、ライブラリアンとJenkinsがビルド・デプロイ
課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
アプリケーションデベロッパー
(注文系担当)
アプリケーションデベロッパー
(商品系担当)
アプリケーションデベロッパー
(会員系担当)
開発ブランチ
(商品系)
開発ブランチ
(注文系)
開発ブランチ
(会員系)
ライブラリアン
(構成管理担当)
trunk
(master)
リリース準備
用ブランチ
手動マージ作業
ビルド デプロイ
ビルド パッケージ
Jenkins(CIサーバ)
trunkとの差分を確認
し、リリース準備用ブラ
ンチにマージのためのコ
ミットを追加
開発ブランチ
(商品系)
開発ブランチ
(注文系)
開発ブランチ
(会員系)
本番環境
ステージング環境
テスト環境
開発環境A
開発環境B
開発環境C
手動デプロイ
ライブラリアン
ビルド デプロイ
ビルド デプロイ
18Copyright (C) NRI digital, Ltd. All rights reserved.
Subversionを利用しており、ライブラリアンとJenkinsがビルド・デプロイ
課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
アプリケーションデベロッパー
(注文系担当)
アプリケーションデベロッパー
(商品系担当)
アプリケーションデベロッパー
(会員系担当)
開発ブランチ
(商品系)
開発ブランチ
(注文系)
開発ブランチ
(会員系)
ライブラリアン
(構成管理担当)
trunk
(master)
リリース準備
用ブランチ
手動マージ作業
ビルド デプロイ
ビルド パッケージ
Jenkins(CIサーバ)
trunkとの差分を確認
し、リリース準備用ブラ
ンチにマージのためのコ
ミットを追加
開発ブランチ
(商品系)
開発ブランチ
(注文系)
開発ブランチ
(会員系)
本番環境
ステージング環境
テスト環境
開発環境A
開発環境B
開発環境C
手動デプロイ
ライブラリアン
ビルド デプロイ
ビルド デプロイ
問題点:
◼ Subversionを利用しているため、並行開発のマージ
には手動で差分のコミットを作成する必要があり、
ライブラリアンの作業負荷が非常に高い
◼ Jenkinsによる部分的なCI/CDは導入されていたが、
緻密な権限管理や認証情報の一元管理も難しく、
ネットワークが分断されているため自動化は限定的
→定期リリースにも多くの工数がかかる
19Copyright (C) NRI digital, Ltd. All rights reserved.
• 定期リリース運用にならざるを得ない
• 定期リリースにも多くの工数がかかる
\この2つの課題をなんとかしたい/
アプリケーション
デベロッパー
もっと早く楽にアプリをリリースしたい
20Copyright (C) NRI digital, Ltd. All rights reserved.
DevOpsとCI/CD
21Copyright (C) NRI digital, Ltd. All rights reserved.
DevとOpsが協力することで1日10回以上のデプロイが可能になる
◼「Velocity 2009 – O’Reilly Conferences」でFlickr社のエンジニアによって発表された
DevOpsの象徴的なプレゼンテーション※
「10+ Deploys per Day: Dev and Ops Cooperation at Flickr 」(2009年)
https://www.slideshare.net/jallspaw/10-deploys-per-day-dev-and-ops-cooperation-at-flickr/
※ ジーン・キム、ジェズ・ハンブル、パトリック・ボア、ジョン・ウィリス「The DevOps ハンドブック 理論・原則・実践のすべて」のイントロダクションより
22Copyright (C) NRI digital, Ltd. All rights reserved.
DevOpsを効果的に実践しているチームのリードタイムは1/100以下
◼第三者機関&Google Coudの調査レポート「ACCELERATE State of DevOps 2019」
https://services.google.com/fh/files/misc/state-of-devops-2019.pdf
23Copyright (C) NRI digital, Ltd. All rights reserved.
1日10回以上、100倍のスピードでデプロイしたい
が、DevOpsは文化、コラボレーション、アーキテク
チャ、プラクティスなど非常に多岐にわたる概念
一度にすべてに取り組むのは難しい
24Copyright (C) NRI digital, Ltd. All rights reserved.
CI/CDがある場合
CI/CDがない場合
DevOpsのプラクティスの中でも、CI/CDが特に課題にマッチしていた
◼CI/CDはビルド、テスト、デプロイを自動化し、開発プロセス・サイクルを効率化・高速化すること
◼DevOpsが文化的規範や、アーキテクチャ、プラクティスなど幅広くカバーしているのに対して、
そのプラクティスの一つであるCI/CDはアプリケーションを高頻度で提供するための手法に特化
ビルド デプロイテスト
ビルド デプロイテスト
CI/CDパイプライン
ツールによる自動化で
開発プロセスを効率化
作業時間・待ち時間をなくし
開発サイクルを高速化
25Copyright (C) NRI digital, Ltd. All rights reserved.
CI/CDがある場合
CI/CDがない場合
DevOpsのプラクティスの中でも、CI/CDが特に課題にマッチしていた
◼CI/CDはビルド、テスト、デプロイを自動化し、開発プロセス・サイクルを効率化・高速化すること
◼DevOpsが文化的規範や、アーキテクチャ、プラクティスなど幅広くカバーしているのに対して、
そのプラクティスの一つであるCI/CDはアプリケーションを高頻度で提供するための手法に特化
ビルド デプロイテスト
ビルド デプロイテスト
CI/CDパイプライン
ツールによる自動化で
開発プロセスを効率化
作業時間・待ち時間をなくし
開発サイクルを高速化
新規のプロジェクトにCI/CDを導入し、
スモールスタートで知見の獲得に取り組んだ
26Copyright (C) NRI digital, Ltd. All rights reserved.
CI/CDツール
CI/CDツールはVCSとしてGitリポジトリの利用が前提。コードの変更が
行われるGitの操作をトリガーに、ビルド・テスト・デプロイを自動化する
リポジトリ
開発者PC
ローカル開発環境 VCS CI/CDパイプライン サービス実行環境
テスト環境
✓ ソースコード管理ソースコードの登録
(git push)
✓一連のワークフローを制御しジョブを自動実行する
✓Gitリポジトリの特定ブランチへの登録(Push)でトリガー
ステージング環境
本番環境
静的
解析
ビルド テスト デプロイ 開発環境
developブランチ
release/XXブランチ
ブラウザ操作
(git merge)
静的
解析
ビルド テスト デプロイ
静的
解析
ビルド テスト デプロイ
masterブランチ
静的
解析
ビルド テスト
リリース
準備
hotfix/XXブランチ
feature/XXブランチ
これらのツールを選定し
決定する必要がある
複数のプロダクトの中か
ら選定する必要がある
プロダクト選定の例:
27Copyright (C) NRI digital, Ltd. All rights reserved.
CI/CDツール
CI/CDツールはVCSとしてGitリポジトリの利用が前提。コードの変更が
行われるGitの操作をトリガーに、ビルド・テスト・デプロイを自動化する
リポジトリ
開発者PC
ローカル開発環境 VCS CI/CDパイプライン サービス実行環境
テスト環境
✓ ソースコード管理ソースコードの登録
(git push)
✓ 一連のワークフローを制御しジョブを自動実行する
✓ Gitリポジトリの特定ブランチへの登録(Push)でトリガー
ステージング環境
本番環境
静的
解析
ビルド テスト デプロイ 開発環境
developブランチ
release/XXブランチ
ブラウザ操作
(git merge)
静的
解析
ビルド テスト デプロイ
静的
解析
ビルド テスト デプロイ
masterブランチ
静的
解析
ビルド テスト
リリース
準備
hotfix/XXブランチ
feature/XXブランチ
これらのツールを選定し
決定する必要がある
複数のプロダクトから
選定する必要がある
プロダクト選定の例:
Gitリポジトリ × CI/CDツールの
選定によって運用時の使い勝手が
大きく変わってくることがわかった
28Copyright (C) NRI digital, Ltd. All rights reserved.
目次
前置き(自己紹介/会社紹介/本日お話しすることの背景)
事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ
事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ
CI/CDによる
運用改善事例
まとめ
事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD
課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
29Copyright (C) NRI digital, Ltd. All rights reserved.
サマリ:システム特性や開発サイクル・開発体制によって適正は異なる
CI/CDによる運用改善事例
項目 事例①:IoT向けAPIサービス 事例②:会員ID管理APIサービス 事例③:店舗向けAPIサービス
アーキテクチャ サーバーレス コンテナ サーバーレス
Gitリポジトリ GitLab AWS CodeCommit BitBucket
CI/CDツール GitLab CI/CD
GitLab Runner
AWS CodePipeline
AWS CodeBuid
AWS CodeDeploy
AWS CodePipeline
AWS CodeBuid
デプロイ戦略
- All at once
- Rolling
- Immutable
- Blue/Green
Immutable (AWS CDK) Blue/Green (CodeDeploy) Immutable (AWS CDK)
開発サイクル
(サービスローンチ後)
2週間~1ヶ月 数ヶ月 1~2週間
開発体制 10名前後 4~5名 3~4名
◼各事例で採用したプロダクト・ツール
30Copyright (C) NRI digital, Ltd. All rights reserved.
目次
前置き(自己紹介/会社紹介/本日お話しすることの背景)
事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ
事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ
CI/CDによる
運用改善事例
まとめ
事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD
課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
31Copyright (C) NRI digital, Ltd. All rights reserved.
開発者のGit操作・UIと親和性が高いGitLab CI/CD
事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD
◼開発者がGitLabの操作だけでビルド・デプロイができるようになった
開発PC
開発環境 リポジトリ ビルド デプロイ サービス実行環境
アプリケーションの
登録(git push)
アプリケーション
デベロッパー
プラットフォーム
アーキテクト
Gitリポジトリ・CI/CD実行サーバ
アプリケーション
開発PC
cdk deploy
.gitlab-ci.yml
テストビルド
デプロイ
Ubuntu
E2E
Lambda
DynamoDB
API Gateway
S3curl
CI/CD定義の
事前準備(git push)
Gitリポジトリと同じWeb画面上でCI/CDの進捗と結果を確認
32Copyright (C) NRI digital, Ltd. All rights reserved.
開発者のGit操作・UIと親和性が高いGitLab CI/CD
事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD
◼開発者がGitLabの操作だけでビルド・デプロイができるようになった
開発PC
開発環境 リポジトリ ビルド デプロイ サービス実行環境
アプリケーションの
登録(git push)
アプリケーション
デベロッパー
プラットフォーム
アーキテクト
Gitリポジトリ・CI/CD実行サーバ
アプリケーション
開発PC
cdk deploy
.gitlab-ci.yml
テストビルド
デプロイ
Ubuntu
E2E
Lambda
DynamoDB
API Gateway
S3curl
CI/CD定義の
事前準備(git push)
Gitリポジトリと同じWeb画面上でCI/CDの進捗と結果を確認
良かった点:
◼ アプリケーション開発者がコードの変更(=Git操作)の
みを行い、他のツールの使い方を覚える必要がない
ため、GitやCI/CDに不慣れでも開発に注力できた。
◼ ビルド・デプロイがJenkinsだった時代と比べて、
CI/CDパイプラインの定義が宣言的なYAMLになり、
アプリケーションのソースコードと一緒にバージョン管理
できるため、ブラックボックス化しづらくなった。
33Copyright (C) NRI digital, Ltd. All rights reserved.
開発者のGit操作・UIと親和性が高いGitLab CI/CD
事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD
◼開発者がGitLabの操作だけでビルド・デプロイができるようになった
開発PC
開発環境 リポジトリ ビルド デプロイ サービス実行環境
アプリケーションの
登録(git push)
アプリケーション
デベロッパー
プラットフォーム
アーキテクト
Gitリポジトリ・CI/CD実行サーバ
アプリケーション
開発PC
cdk deploy
.gitlab-ci.yml
テストビルド
デプロイ
Ubuntu
E2E
Lambda
DynamoDB
API Gateway
S3curl
CI/CD定義の
事前準備(git push)
Gitリポジトリと同じWeb画面上でCI/CDの進捗と結果を確認
不満だった点:
◼ せっかくサービス実行環境がサーバーレスなのに
バックアップ等GitLabサーバの管理が必要。
◼ 1台のサーバにRunner(Docker Executor)も相乗り
していたため、複数人で同時に利用すると
CI/CDパイプラインのジョブが滞留することがあった。
34Copyright (C) NRI digital, Ltd. All rights reserved.
目次
前置き(自己紹介/会社紹介/本日お話しすることの背景)
事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ
事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ
CI/CDによる
運用改善事例
まとめ
事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD
課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
35Copyright (C) NRI digital, Ltd. All rights reserved.
Blue/Greenデプロイによるリリースの信頼性向上を重視
事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ
◼サービスイン前の本番確認と、問題があった場合に即座に切り戻しができるようになった
Elastic ContainerService
Blue
Green
CodePipeline
CodeCommit CodeBuild CodeDeploy
Elastic Container Registry(ECR)
開発PC
開発環境 リポジトリ ビルド デプロイ サービス実行環境
アプリケーションの
登録(git push)
ベースコンテナイメージの
事前登録
(docker push)
ベースイメージ デプロイ用イメージ
旧バージョン
新バージョン
アプリケーション
デベロッパー
プラットフォーム
アーキテクト
新バージョンの
本番確認
Elastic Container Registry
アプリケーション、
Dockerfile
開発PC
buildspec.yml
appspec.yml
docker build
docker push
Elastic Load
Balancer
CI/CD定義の
事前準備(git push)
デプロイ
本番トラフィック
切り替え
ロールバック
判断待機
旧バージョン
終了
36Copyright (C) NRI digital, Ltd. All rights reserved.
Blue/Greenデプロイによるリリースの信頼性向上を重視
事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ
◼サービスイン前の本番確認と、問題があった場合に即座に切り戻しができるようになった
Elastic ContainerService
Blue
Green
CodePipeline
CodeCommit CodeBuild CodeDeploy
Elastic Container Registry(ECR)
開発PC
開発環境 リポジトリ ビルド デプロイ サービス実行環境
アプリケーションの
登録(git push)
ベースコンテナイメージの
事前登録
(docker push)
ベースイメージ デプロイ用イメージ
旧バージョン
新バージョン
アプリケーション
デベロッパー
プラットフォーム
アーキテクト
新バージョンの
本番確認
Elastic Container Registry
アプリケーション、
Dockerfile
開発PC
buildspec.yml
appspec.yml
docker build
docker push
Elastic Load
Balancer
CI/CD定義の
事前準備(git push)
デプロイ
本番トラフィック
切り替え
ロールバック
判断待機
旧バージョン
終了
良かった点:
◼ CodeDeployのBlue/Greenデプロイのワークフロー
がとても良く運用が考えられていて、かつロールバック
が高速だったため、デプロイの信頼性が向上した。
信頼性が重要なシステムなのでメリット大
◼ CodeBuildはDockerコンテナのビルド環境がオンデ
マンドに提供されるため、開発のピークでもGitLab時
代のジョブの滞留やスローダウンが発生しなくなった
37Copyright (C) NRI digital, Ltd. All rights reserved.
Blue/Greenデプロイによるリリースの信頼性向上を重視
事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ
◼サービスイン前の本番確認と、問題があった場合に即座に切り戻しができるようになった
Elastic ContainerService
Blue
Green
CodePipeline
CodeCommit CodeBuild CodeDeploy
Elastic Container Registry(ECR)
開発PC
開発環境 リポジトリ ビルド デプロイ サービス実行環境
アプリケーションの
登録(git push)
ベースコンテナイメージの
事前登録
(docker push)
ベースイメージ デプロイ用イメージ
旧バージョン
新バージョン
アプリケーション
デベロッパー
プラットフォーム
アーキテクト
新バージョンの
本番確認
Elastic Container Registry
アプリケーション、
Dockerfile
開発PC
buildspec.yml
appspec.yml
docker build
docker push
Elastic Load
Balancer
CI/CD定義の
事前準備(git push)
デプロイ
本番トラフィック
切り替え
ロールバック
判断待機
旧バージョン
終了
不満だった点:
◼ CodeCommitはGitによるコラボレーション機能が
かなり使いづらく操作性がイマイチ(2019年夏当時)
⚫ プルリクエストの通知が読みづらい(SNS→メールがJSON)
⚫ AWSコンソールのログインセッションが長続きしないので、
プルリクレビューのたびにMFAを入力しなければならない
⚫ IAMユーザにはメールアドレスが紐づいていないため、3-way
mergeの際に毎回メールアドレスを入力する必要がある
⚫ プルリクをマージする際に、元のブランチを消すにデフォルトで
チェックが入っている・・・
38Copyright (C) NRI digital, Ltd. All rights reserved.
目次
前置き(自己紹介/会社紹介/本日お話しすることの背景)
事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ
事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ
CI/CDによる
運用改善事例
まとめ
事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD
課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
39Copyright (C) NRI digital, Ltd. All rights reserved.
リポジトリをBitBucketに差し替え、Slack連携を追加
事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ
◼AWSの昨年末~今年のアップデートで新機能として追加された
⚫ (2019/12/18) AWS CodePipelineがAtlassian Bitbucket クラウド(ベータ版) のサポートを開始
https://aws.amazon.com/jp/about-aws/whats-new/2019/12/aws-codepipeline-now-supports-atlassian-bitbucket-cloud/
⚫ (2020/4/2) Slack での AWS CodeBuild、AWS CodeCommit、AWS CodeDeploy、AWS CodePipeline
の通知受け取りが開始に
https://aws.amazon.com/jp/about-aws/whats-new/2020/04/receive-notifications-for-aws-codebuild-codecommit-codedeploy-codepipeline-in-slack/
◼BitbucketはもともとJira、Confluenceなど他のAtlassianプロダクトと併用していた
→コラボレーションで使いづらいCodeCommitを使わなくて良くなる
◼もともと社内のチャットツールがSlack
→読みづらいJSONのメール通知を受け取らなくて良くなる
40Copyright (C) NRI digital, Ltd. All rights reserved.
開発サイクルが早いため、アジャイルに適したツールと連携
事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ
◼Atlassian×Slackとの連携強化により、CI/CDの異常に気づいてコミュニケーションが円滑に
CodePipeline
CodeBuild
開発PC
開発環境 リポジトリ ビルド デプロイ サービス実行環境
アプリケーションの
登録(git push)
アプリケーション
デベロッパー
プラットフォーム
アーキテクト
アプリケーション
開発PC
buildspec.yml
ビルド
ユニットテスト
CI/CD定義の
事前準備(git push)
cdk deploy
Lambda
DynamoDB
API Gateway
S3curl
デプロイ
E2Eテスト
Simple Notification Service
1
パイプラインの成功/失敗通知
チケット管理
Wiki/レポート
チャット
41Copyright (C) NRI digital, Ltd. All rights reserved.
開発サイクルが早いため、アジャイルに適したツールと連携
事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ
◼Atlassian×Slackとの連携強化により、CI/CDの異常に気づいてコミュニケーションが円滑に
CodePipeline
CodeBuild
開発PC
開発環境 リポジトリ ビルド デプロイ サービス実行環境
アプリケーションの
登録(git push)
アプリケーション
デベロッパー
プラットフォーム
アーキテクト
アプリケーション
開発PC
buildspec.yml
ビルド
ユニットテスト
CI/CD定義の
事前準備(git push)
cdk deploy
Lambda
DynamoDB
API Gateway
S3curl
デプロイ
E2Eテスト
Simple Notification Service
1
パイプラインの成功/失敗通知
チケット管理
Wiki/レポート
チャット
良かった点:
◼ 開発サイクルが早く少人数の開発体制だったので
Atlassian×Slackにすべての情報が連携されたこと
で機動力のある開発ができ、生産性も上がった。
(特に、COVID-19によるリモートワークで効果大)
42Copyright (C) NRI digital, Ltd. All rights reserved.
目次
前置き(自己紹介/会社紹介/本日お話しすることの背景)
事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ
事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ
CI/CDによる
運用改善事例
まとめ
事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD
課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
43Copyright (C) NRI digital, Ltd. All rights reserved.
本日お伝えしたかったこと
1. モノリシックなアプリケーション×レガシーで高負荷なリリース運用はつらいです。
新しい案件をきっかけにCI/CDに取り組んで、ビジネスの価値を高める活動にシフトしましょう
2. Gitリポジトリ×CI/CDツールは、仕様・ドキュメント上”つながる”組み合わせは数多くありますが、
「同じGitだと思って使ってみたら生産性が全然違った」ということがあります。ほとんどの場合で
Gitリポジトリを利用するユーザ数 > CI/CDツールを利用するユーザ数
となるため、使い慣れたGitリポジトリを変更する判断は慎重にしましょう
3. とはいえ、クラウドやSaaSは日々機能が追加され、使いやすくアップデートされていきます。
定期的に最新の機能をキャッチアップして、こまめにCI/CDパイプラインや運用をリファクタリング
していくことも重要です(でないと、成長しているサービスなのにSubversionが現役で
ずっとつらいリリース運用を続ける例のようになりかねません・・・)
44Copyright (C) NRI digital, Ltd. All rights reserved.
宣伝
◼ 本日の内容を補足する、弊社テックブログ記事
「CI/CD:アプリケーションを頻繁に提供する手法への取り組み」
https://www.nri-digital.jp/tech/20200318-1643/
→CI/CDツールの制約に対する考え方を記載しています。
45Copyright (C) NRI digital, Ltd. All rights reserved.
\ご清聴ありがとうございました/
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~

Más contenido relacionado

La actualidad más candente

イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡NTT Communications Technology Development
 
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったことAWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったことTakayuki Ishikawa
 
Concourseで快適な自動化の旅
Concourseで快適な自動化の旅Concourseで快適な自動化の旅
Concourseで快適な自動化の旅Kazuto Kusama
 
インフラ廻戦 品川事変 前夜編
インフラ廻戦 品川事変 前夜編インフラ廻戦 品川事変 前夜編
インフラ廻戦 品川事変 前夜編Toru Makabe
 
AWS Black Belt Tech シリーズ 2015 - Amazon Kinesis
AWS Black Belt Tech シリーズ 2015 - Amazon KinesisAWS Black Belt Tech シリーズ 2015 - Amazon Kinesis
AWS Black Belt Tech シリーズ 2015 - Amazon KinesisAmazon Web Services Japan
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)gree_tech
 
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリde:code 2017
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -Yoichi Kawasaki
 
分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方Recruit Lifestyle Co., Ltd.
 
Game Development on AWS (ゲーム開発環境を向上させるためのAWS活用術)
Game Development on AWS (ゲーム開発環境を向上させるためのAWS活用術)Game Development on AWS (ゲーム開発環境を向上させるためのAWS活用術)
Game Development on AWS (ゲーム開発環境を向上させるためのAWS活用術)Amazon Web Services Japan
 
初心者向けWebinar AWSで開発環境を構築しよう
初心者向けWebinar AWSで開発環境を構築しよう初心者向けWebinar AWSで開発環境を構築しよう
初心者向けWebinar AWSで開発環境を構築しようAmazon Web Services Japan
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと土岐 孝平
 
アプリ開発検証はLXC+Ansibleで楽ちんにやろう!
アプリ開発検証はLXC+Ansibleで楽ちんにやろう!アプリ開発検証はLXC+Ansibleで楽ちんにやろう!
アプリ開発検証はLXC+Ansibleで楽ちんにやろう!Mutsumi IWAISHI
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)NTT DATA Technology & Innovation
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ増田 亨
 
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?IIJ
 
失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験樽八 仲川
 
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video StreamsAmazon Web Services Japan
 

La actualidad más candente (20)

イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡
 
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったことAWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
 
Concourseで快適な自動化の旅
Concourseで快適な自動化の旅Concourseで快適な自動化の旅
Concourseで快適な自動化の旅
 
インフラ廻戦 品川事変 前夜編
インフラ廻戦 品川事変 前夜編インフラ廻戦 品川事変 前夜編
インフラ廻戦 品川事変 前夜編
 
AWS Black Belt Tech シリーズ 2015 - Amazon Kinesis
AWS Black Belt Tech シリーズ 2015 - Amazon KinesisAWS Black Belt Tech シリーズ 2015 - Amazon Kinesis
AWS Black Belt Tech シリーズ 2015 - Amazon Kinesis
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
 
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -
 
分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方
 
Game Development on AWS (ゲーム開発環境を向上させるためのAWS活用術)
Game Development on AWS (ゲーム開発環境を向上させるためのAWS活用術)Game Development on AWS (ゲーム開発環境を向上させるためのAWS活用術)
Game Development on AWS (ゲーム開発環境を向上させるためのAWS活用術)
 
入門!Jenkins
入門!Jenkins入門!Jenkins
入門!Jenkins
 
初心者向けWebinar AWSで開発環境を構築しよう
初心者向けWebinar AWSで開発環境を構築しよう初心者向けWebinar AWSで開発環境を構築しよう
初心者向けWebinar AWSで開発環境を構築しよう
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
 
アプリ開発検証はLXC+Ansibleで楽ちんにやろう!
アプリ開発検証はLXC+Ansibleで楽ちんにやろう!アプリ開発検証はLXC+Ansibleで楽ちんにやろう!
アプリ開発検証はLXC+Ansibleで楽ちんにやろう!
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
 
失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験
 
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
 

Similar a CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~

2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト
2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト
2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェストIssei Hiraoka
 
20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリングInnova Inc.
 
Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.Recruit Technologies
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?Developers Summit
 
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発Developers Summit
 
ニフティクラウドC4SA_ご紹介資料ver.1.1
ニフティクラウドC4SA_ご紹介資料ver.1.1ニフティクラウドC4SA_ご紹介資料ver.1.1
ニフティクラウドC4SA_ご紹介資料ver.1.1Satoshi Ueno
 
基調講演「データのグループウェア化」
基調講演「データのグループウェア化」基調講演「データのグループウェア化」
基調講演「データのグループウェア化」Cybozucommunity
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops裕貴 荒井
 
Docker Enterprise Editionで実践するCaaS
Docker Enterprise Editionで実践するCaaSDocker Enterprise Editionで実践するCaaS
Docker Enterprise Editionで実践するCaaSDevOps Hub
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座DIVE INTO CODE Corp.
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座DIVE INTO CODE Corp.
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーションYuta Matsumura
 
チラシルiOSでの広告枠開発
チラシルiOSでの広告枠開発チラシルiOSでの広告枠開発
チラシルiOSでの広告枠開発Satoshi Takano
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版DIVE INTO CODE Corp.
 
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果Hideaki Tokida
 
20200717 kanazawauniv takasu キャリア、コミュニティとアカデミア、そして事業開発
20200717 kanazawauniv takasu  キャリア、コミュニティとアカデミア、そして事業開発20200717 kanazawauniv takasu  キャリア、コミュニティとアカデミア、そして事業開発
20200717 kanazawauniv takasu キャリア、コミュニティとアカデミア、そして事業開発Nico-Tech Shenzhen/ニコ技深圳コミュニティ
 
リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例Recruit Technologies
 
今なぜサーバーレスなのか
今なぜサーバーレスなのか今なぜサーバーレスなのか
今なぜサーバーレスなのか真吾 吉田
 

Similar a CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~ (20)

2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト
2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト
2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト
 
20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング
 
Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.
 
Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
 
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
 
ニフティクラウドC4SA_ご紹介資料ver.1.1
ニフティクラウドC4SA_ご紹介資料ver.1.1ニフティクラウドC4SA_ご紹介資料ver.1.1
ニフティクラウドC4SA_ご紹介資料ver.1.1
 
基調講演「データのグループウェア化」
基調講演「データのグループウェア化」基調講演「データのグループウェア化」
基調講演「データのグループウェア化」
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops
 
Docker Enterprise Editionで実践するCaaS
Docker Enterprise Editionで実践するCaaSDocker Enterprise Editionで実践するCaaS
Docker Enterprise Editionで実践するCaaS
 
20170705 apiをつくろう
20170705 apiをつくろう20170705 apiをつくろう
20170705 apiをつくろう
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
 
チラシルiOSでの広告枠開発
チラシルiOSでの広告枠開発チラシルiOSでの広告枠開発
チラシルiOSでの広告枠開発
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
 
20200717 kanazawauniv takasu キャリア、コミュニティとアカデミア、そして事業開発
20200717 kanazawauniv takasu  キャリア、コミュニティとアカデミア、そして事業開発20200717 kanazawauniv takasu  キャリア、コミュニティとアカデミア、そして事業開発
20200717 kanazawauniv takasu キャリア、コミュニティとアカデミア、そして事業開発
 
リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例
 
今なぜサーバーレスなのか
今なぜサーバーレスなのか今なぜサーバーレスなのか
今なぜサーバーレスなのか
 

Último

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 

Último (9)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 

CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~

  • 2. 1Copyright (C) NRI digital, Ltd. All rights reserved. ◼安藤 裕紀(あんどう ゆうき) ⚫ NRIデジタル プラットフォームアーキテクト (2011年 野村総合研究所入社、2017年よりNRIデジタル出向) ⚫ Webシステムのサーバ構築・運用を中心としたインフラエンジニアの仕事を 流通・金融・製造など様々な業種のお客様向けに経験。 ⚫ 最近は、AWS上に構築されたECサイトやオンライン会員サービスの 開発・運用におけるSRE / DevOpsエンジニア寄りの仕事にシフト – AWSアーキテクチャ設計 – Infrastructure as Codeによる自動化 – モニタリング・オンコールアラートの改善 – CI/CDパイプラインの整備(本日お話しする内容) 自己紹介:インフラエンジニア10年目、運用経験は結構あります 2020 APN AWS Top Engineers選出
  • 3. 2Copyright (C) NRI digital, Ltd. All rights reserved. NRIデジタルについて 2016年8月に設立された 野村総合研究所の戦略子会社 NRIグループ内外から組織の壁を超えて 集結した多様なプロフェッショナルが ”ワンチーム”で、お客様と共に デジタルによるビジネスモデル変革を推進 多様なプロフェッショナルが集結 新たなテクノロジー領域への挑戦 価値共創型のビジネス創出
  • 4. 3Copyright (C) NRI digital, Ltd. All rights reserved. 本日お話しすることの背景
  • 5. 4Copyright (C) NRI digital, Ltd. All rights reserved. 多くの企業が、ビジネス環境の激しい変化に対応するため、データと デジタル技術を活用したビジネスモデルの変革(DX)に取り組んでいる 店頭販売 対面接客 オンライン会員サービス デジタルマーケティング ECサイト・ショッピングアプリ 定額制 サブスクリプションサービス 顧客接点のDX 販売手段のDX
  • 6. 5Copyright (C) NRI digital, Ltd. All rights reserved. NRIデジタルはお客様のビジネスモデル変革の全てのフェーズに関わり、 さまざまな専門性を持つプロフェッショナルが協力してDXを支援している 構想・ 企画 デザイン・設計 開発 テスト リリース モニタリング データ収集・分析 可視化・ フィードバック 事業 運営 お客様 ビジネスデザイナー (専門性の例) • ビジネスコンサルタント • システムコンサルタント • サービスデザイナー • UI/UXデザイナー アプリケーションデベロッパー (専門性の例) • プロジェクトマネージャー • システムエンジニア • スクラムマスター • スクラムデベロッパー プラットフォームアーキテクト (専門性の例) • アーキテクト • インフラエンジニア • データサイエンティスト • データエンジニア
  • 7. 6Copyright (C) NRI digital, Ltd. All rights reserved. お客様のDXを支援する事業会社にいると、よく言われること お客様 ビジネスデザイナー 早く効果を見て次の手を打ちたい アプリケーション デベロッパー もっと早く楽にアプリをリリースしたい 早く新しいビジネスを成功させたい
  • 8. 7Copyright (C) NRI digital, Ltd. All rights reserved. 早く新しいビジネスを成功させたい お客様のDXを支援する事業会社にいると、よく言われること お客様 ビジネスデザイナー 早く効果を見て次の手を打ちたい アプリケーション デベロッパー もっと早く楽にアプリをリリースしたい
  • 9. 8Copyright (C) NRI digital, Ltd. All rights reserved. 本日は、アプリケーションの開発・テスト・リリースのフェーズに CI/CDを導入して、リリース運用を改善した事例と気づきをご紹介します 構想・ 企画 デザイン・設計 開発 テスト リリース モニタリング データ収集・分析 可視化・ フィードバック 事業 運営 お客様 ビジネスデザイナー (専門性の例) • ビジネスコンサルタント • システムコンサルタント • サービスデザイナー • UI/UXデザイナー アプリケーションデベロッパー (専門性の例) • プロジェクトマネージャー • システムエンジニア • スクラムマスター • スクラムデベロッパー プラットフォームアーキテクト (専門性の例) • アーキテクト • インフラエンジニア • データサイエンティスト • データエンジニア CI/CD導入による • リリースの短期化 • 運用の軽負荷化
  • 10. 9Copyright (C) NRI digital, Ltd. All rights reserved. 目次 前置き(自己紹介/会社紹介/本日お話しすることの背景) 事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ 事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ CI/CDによる 運用改善事例 まとめ 事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD 課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
  • 11. 10Copyright (C) NRI digital, Ltd. All rights reserved. 目次 前置き(自己紹介/会社紹介/本日お話しすることの背景) 事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ 事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ CI/CDによる 運用改善事例 まとめ 事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD 課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
  • 12. 11Copyright (C) NRI digital, Ltd. All rights reserved. (オンプレミスからAWSに移行した) モノリシックなアプリケーション
  • 13. 12Copyright (C) NRI digital, Ltd. All rights reserved. ECサイトにはさまざまな機能があり、 課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例 ◼ECサイトでありそうなWebページ遷移の構成 Users ログイン 会員登録 トップページ マイページ カテゴリ・ 商品一覧 会員情報 修正 商品詳細 検索結果 カート 注文 決済 ECサイト
  • 14. 13Copyright (C) NRI digital, Ltd. All rights reserved. ECサイトにはさまざまな機能があり、用途によって開発を分担している 課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例 ◼ECサイトでありそうなWebページ遷移の構成 Users ログイン 会員登録 トップページ マイページ カテゴリ・ 商品一覧 会員情報 修正 商品詳細 検索結果 カート 注文 会員系 商品系 決済注文系 ECサイト アプリケーションデベロッパー (注文系担当) アプリケーションデベロッパー (商品系担当) アプリケーションデベロッパー (会員系担当)
  • 15. 14Copyright (C) NRI digital, Ltd. All rights reserved. モノリシックなJava EE構成では、単一のアプリケーションとしてデプロイ 課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例 アプリケーションデベロッパー (注文系担当) アプリケーションデベロッパー (商品系担当) 開発・ビルド・テスト 開発・ビルド・テスト 商品系.war 注文系.war アプリケーションサーバ アプリケーションデベロッパー (会員系担当) 開発・ビルド・テスト 会員系.war RHEL OpenJDK Java EE アプリケーションサーバ application.ear 商品系.war 注文系.war 会員系.war earにパッケージング・ AMI作成用のEC2 インスタンスにデプロイ AMI Auto Scaling AMI化 起動設定更新
  • 16. 15Copyright (C) NRI digital, Ltd. All rights reserved. モノリシックなJava EE構成では、単一のアプリケーションとしてデプロイ 課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例 アプリケーションデベロッパー (注文系担当) アプリケーションデベロッパー (商品系担当) 開発・ビルド・テスト 開発・ビルド・テスト 商品系.war 注文系.war アプリケーションサーバ アプリケーションデベロッパー (会員系担当) 開発・ビルド・テスト 会員系.war RHEL OpenJDK Java EE アプリケーションサーバ application.ear 商品系.war 注文系.war 会員系.war earにパッケージング・ AMI作成用のEC2 インスタンスにデプロイ AMI Auto Scaling AMI化 起動設定更新 問題点: ◼ EC2のAuto Scaling を利用しているため、都 度AMIの再作成が必要で、Java EEアプリケー ションの部分的なホットデプロイが不可能 ◼ EJBを多用するフレームワークではアプリケーショ ンサーバの再起動に時間がかかり、デプロイの確 認が長時間化。ロールバックにも時間がかかる →定期リリース運用にならざるを得ない
  • 17. 16Copyright (C) NRI digital, Ltd. All rights reserved. レガシーで高負荷なリリース運用
  • 18. 17Copyright (C) NRI digital, Ltd. All rights reserved. Subversionを利用しており、ライブラリアンとJenkinsがビルド・デプロイ 課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例 アプリケーションデベロッパー (注文系担当) アプリケーションデベロッパー (商品系担当) アプリケーションデベロッパー (会員系担当) 開発ブランチ (商品系) 開発ブランチ (注文系) 開発ブランチ (会員系) ライブラリアン (構成管理担当) trunk (master) リリース準備 用ブランチ 手動マージ作業 ビルド デプロイ ビルド パッケージ Jenkins(CIサーバ) trunkとの差分を確認 し、リリース準備用ブラ ンチにマージのためのコ ミットを追加 開発ブランチ (商品系) 開発ブランチ (注文系) 開発ブランチ (会員系) 本番環境 ステージング環境 テスト環境 開発環境A 開発環境B 開発環境C 手動デプロイ ライブラリアン ビルド デプロイ ビルド デプロイ
  • 19. 18Copyright (C) NRI digital, Ltd. All rights reserved. Subversionを利用しており、ライブラリアンとJenkinsがビルド・デプロイ 課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例 アプリケーションデベロッパー (注文系担当) アプリケーションデベロッパー (商品系担当) アプリケーションデベロッパー (会員系担当) 開発ブランチ (商品系) 開発ブランチ (注文系) 開発ブランチ (会員系) ライブラリアン (構成管理担当) trunk (master) リリース準備 用ブランチ 手動マージ作業 ビルド デプロイ ビルド パッケージ Jenkins(CIサーバ) trunkとの差分を確認 し、リリース準備用ブラ ンチにマージのためのコ ミットを追加 開発ブランチ (商品系) 開発ブランチ (注文系) 開発ブランチ (会員系) 本番環境 ステージング環境 テスト環境 開発環境A 開発環境B 開発環境C 手動デプロイ ライブラリアン ビルド デプロイ ビルド デプロイ 問題点: ◼ Subversionを利用しているため、並行開発のマージ には手動で差分のコミットを作成する必要があり、 ライブラリアンの作業負荷が非常に高い ◼ Jenkinsによる部分的なCI/CDは導入されていたが、 緻密な権限管理や認証情報の一元管理も難しく、 ネットワークが分断されているため自動化は限定的 →定期リリースにも多くの工数がかかる
  • 20. 19Copyright (C) NRI digital, Ltd. All rights reserved. • 定期リリース運用にならざるを得ない • 定期リリースにも多くの工数がかかる \この2つの課題をなんとかしたい/ アプリケーション デベロッパー もっと早く楽にアプリをリリースしたい
  • 21. 20Copyright (C) NRI digital, Ltd. All rights reserved. DevOpsとCI/CD
  • 22. 21Copyright (C) NRI digital, Ltd. All rights reserved. DevとOpsが協力することで1日10回以上のデプロイが可能になる ◼「Velocity 2009 – O’Reilly Conferences」でFlickr社のエンジニアによって発表された DevOpsの象徴的なプレゼンテーション※ 「10+ Deploys per Day: Dev and Ops Cooperation at Flickr 」(2009年) https://www.slideshare.net/jallspaw/10-deploys-per-day-dev-and-ops-cooperation-at-flickr/ ※ ジーン・キム、ジェズ・ハンブル、パトリック・ボア、ジョン・ウィリス「The DevOps ハンドブック 理論・原則・実践のすべて」のイントロダクションより
  • 23. 22Copyright (C) NRI digital, Ltd. All rights reserved. DevOpsを効果的に実践しているチームのリードタイムは1/100以下 ◼第三者機関&Google Coudの調査レポート「ACCELERATE State of DevOps 2019」 https://services.google.com/fh/files/misc/state-of-devops-2019.pdf
  • 24. 23Copyright (C) NRI digital, Ltd. All rights reserved. 1日10回以上、100倍のスピードでデプロイしたい が、DevOpsは文化、コラボレーション、アーキテク チャ、プラクティスなど非常に多岐にわたる概念 一度にすべてに取り組むのは難しい
  • 25. 24Copyright (C) NRI digital, Ltd. All rights reserved. CI/CDがある場合 CI/CDがない場合 DevOpsのプラクティスの中でも、CI/CDが特に課題にマッチしていた ◼CI/CDはビルド、テスト、デプロイを自動化し、開発プロセス・サイクルを効率化・高速化すること ◼DevOpsが文化的規範や、アーキテクチャ、プラクティスなど幅広くカバーしているのに対して、 そのプラクティスの一つであるCI/CDはアプリケーションを高頻度で提供するための手法に特化 ビルド デプロイテスト ビルド デプロイテスト CI/CDパイプライン ツールによる自動化で 開発プロセスを効率化 作業時間・待ち時間をなくし 開発サイクルを高速化
  • 26. 25Copyright (C) NRI digital, Ltd. All rights reserved. CI/CDがある場合 CI/CDがない場合 DevOpsのプラクティスの中でも、CI/CDが特に課題にマッチしていた ◼CI/CDはビルド、テスト、デプロイを自動化し、開発プロセス・サイクルを効率化・高速化すること ◼DevOpsが文化的規範や、アーキテクチャ、プラクティスなど幅広くカバーしているのに対して、 そのプラクティスの一つであるCI/CDはアプリケーションを高頻度で提供するための手法に特化 ビルド デプロイテスト ビルド デプロイテスト CI/CDパイプライン ツールによる自動化で 開発プロセスを効率化 作業時間・待ち時間をなくし 開発サイクルを高速化 新規のプロジェクトにCI/CDを導入し、 スモールスタートで知見の獲得に取り組んだ
  • 27. 26Copyright (C) NRI digital, Ltd. All rights reserved. CI/CDツール CI/CDツールはVCSとしてGitリポジトリの利用が前提。コードの変更が 行われるGitの操作をトリガーに、ビルド・テスト・デプロイを自動化する リポジトリ 開発者PC ローカル開発環境 VCS CI/CDパイプライン サービス実行環境 テスト環境 ✓ ソースコード管理ソースコードの登録 (git push) ✓一連のワークフローを制御しジョブを自動実行する ✓Gitリポジトリの特定ブランチへの登録(Push)でトリガー ステージング環境 本番環境 静的 解析 ビルド テスト デプロイ 開発環境 developブランチ release/XXブランチ ブラウザ操作 (git merge) 静的 解析 ビルド テスト デプロイ 静的 解析 ビルド テスト デプロイ masterブランチ 静的 解析 ビルド テスト リリース 準備 hotfix/XXブランチ feature/XXブランチ これらのツールを選定し 決定する必要がある 複数のプロダクトの中か ら選定する必要がある プロダクト選定の例:
  • 28. 27Copyright (C) NRI digital, Ltd. All rights reserved. CI/CDツール CI/CDツールはVCSとしてGitリポジトリの利用が前提。コードの変更が 行われるGitの操作をトリガーに、ビルド・テスト・デプロイを自動化する リポジトリ 開発者PC ローカル開発環境 VCS CI/CDパイプライン サービス実行環境 テスト環境 ✓ ソースコード管理ソースコードの登録 (git push) ✓ 一連のワークフローを制御しジョブを自動実行する ✓ Gitリポジトリの特定ブランチへの登録(Push)でトリガー ステージング環境 本番環境 静的 解析 ビルド テスト デプロイ 開発環境 developブランチ release/XXブランチ ブラウザ操作 (git merge) 静的 解析 ビルド テスト デプロイ 静的 解析 ビルド テスト デプロイ masterブランチ 静的 解析 ビルド テスト リリース 準備 hotfix/XXブランチ feature/XXブランチ これらのツールを選定し 決定する必要がある 複数のプロダクトから 選定する必要がある プロダクト選定の例: Gitリポジトリ × CI/CDツールの 選定によって運用時の使い勝手が 大きく変わってくることがわかった
  • 29. 28Copyright (C) NRI digital, Ltd. All rights reserved. 目次 前置き(自己紹介/会社紹介/本日お話しすることの背景) 事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ 事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ CI/CDによる 運用改善事例 まとめ 事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD 課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
  • 30. 29Copyright (C) NRI digital, Ltd. All rights reserved. サマリ:システム特性や開発サイクル・開発体制によって適正は異なる CI/CDによる運用改善事例 項目 事例①:IoT向けAPIサービス 事例②:会員ID管理APIサービス 事例③:店舗向けAPIサービス アーキテクチャ サーバーレス コンテナ サーバーレス Gitリポジトリ GitLab AWS CodeCommit BitBucket CI/CDツール GitLab CI/CD GitLab Runner AWS CodePipeline AWS CodeBuid AWS CodeDeploy AWS CodePipeline AWS CodeBuid デプロイ戦略 - All at once - Rolling - Immutable - Blue/Green Immutable (AWS CDK) Blue/Green (CodeDeploy) Immutable (AWS CDK) 開発サイクル (サービスローンチ後) 2週間~1ヶ月 数ヶ月 1~2週間 開発体制 10名前後 4~5名 3~4名 ◼各事例で採用したプロダクト・ツール
  • 31. 30Copyright (C) NRI digital, Ltd. All rights reserved. 目次 前置き(自己紹介/会社紹介/本日お話しすることの背景) 事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ 事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ CI/CDによる 運用改善事例 まとめ 事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD 課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
  • 32. 31Copyright (C) NRI digital, Ltd. All rights reserved. 開発者のGit操作・UIと親和性が高いGitLab CI/CD 事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD ◼開発者がGitLabの操作だけでビルド・デプロイができるようになった 開発PC 開発環境 リポジトリ ビルド デプロイ サービス実行環境 アプリケーションの 登録(git push) アプリケーション デベロッパー プラットフォーム アーキテクト Gitリポジトリ・CI/CD実行サーバ アプリケーション 開発PC cdk deploy .gitlab-ci.yml テストビルド デプロイ Ubuntu E2E Lambda DynamoDB API Gateway S3curl CI/CD定義の 事前準備(git push) Gitリポジトリと同じWeb画面上でCI/CDの進捗と結果を確認
  • 33. 32Copyright (C) NRI digital, Ltd. All rights reserved. 開発者のGit操作・UIと親和性が高いGitLab CI/CD 事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD ◼開発者がGitLabの操作だけでビルド・デプロイができるようになった 開発PC 開発環境 リポジトリ ビルド デプロイ サービス実行環境 アプリケーションの 登録(git push) アプリケーション デベロッパー プラットフォーム アーキテクト Gitリポジトリ・CI/CD実行サーバ アプリケーション 開発PC cdk deploy .gitlab-ci.yml テストビルド デプロイ Ubuntu E2E Lambda DynamoDB API Gateway S3curl CI/CD定義の 事前準備(git push) Gitリポジトリと同じWeb画面上でCI/CDの進捗と結果を確認 良かった点: ◼ アプリケーション開発者がコードの変更(=Git操作)の みを行い、他のツールの使い方を覚える必要がない ため、GitやCI/CDに不慣れでも開発に注力できた。 ◼ ビルド・デプロイがJenkinsだった時代と比べて、 CI/CDパイプラインの定義が宣言的なYAMLになり、 アプリケーションのソースコードと一緒にバージョン管理 できるため、ブラックボックス化しづらくなった。
  • 34. 33Copyright (C) NRI digital, Ltd. All rights reserved. 開発者のGit操作・UIと親和性が高いGitLab CI/CD 事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD ◼開発者がGitLabの操作だけでビルド・デプロイができるようになった 開発PC 開発環境 リポジトリ ビルド デプロイ サービス実行環境 アプリケーションの 登録(git push) アプリケーション デベロッパー プラットフォーム アーキテクト Gitリポジトリ・CI/CD実行サーバ アプリケーション 開発PC cdk deploy .gitlab-ci.yml テストビルド デプロイ Ubuntu E2E Lambda DynamoDB API Gateway S3curl CI/CD定義の 事前準備(git push) Gitリポジトリと同じWeb画面上でCI/CDの進捗と結果を確認 不満だった点: ◼ せっかくサービス実行環境がサーバーレスなのに バックアップ等GitLabサーバの管理が必要。 ◼ 1台のサーバにRunner(Docker Executor)も相乗り していたため、複数人で同時に利用すると CI/CDパイプラインのジョブが滞留することがあった。
  • 35. 34Copyright (C) NRI digital, Ltd. All rights reserved. 目次 前置き(自己紹介/会社紹介/本日お話しすることの背景) 事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ 事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ CI/CDによる 運用改善事例 まとめ 事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD 課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
  • 36. 35Copyright (C) NRI digital, Ltd. All rights reserved. Blue/Greenデプロイによるリリースの信頼性向上を重視 事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ ◼サービスイン前の本番確認と、問題があった場合に即座に切り戻しができるようになった Elastic ContainerService Blue Green CodePipeline CodeCommit CodeBuild CodeDeploy Elastic Container Registry(ECR) 開発PC 開発環境 リポジトリ ビルド デプロイ サービス実行環境 アプリケーションの 登録(git push) ベースコンテナイメージの 事前登録 (docker push) ベースイメージ デプロイ用イメージ 旧バージョン 新バージョン アプリケーション デベロッパー プラットフォーム アーキテクト 新バージョンの 本番確認 Elastic Container Registry アプリケーション、 Dockerfile 開発PC buildspec.yml appspec.yml docker build docker push Elastic Load Balancer CI/CD定義の 事前準備(git push) デプロイ 本番トラフィック 切り替え ロールバック 判断待機 旧バージョン 終了
  • 37. 36Copyright (C) NRI digital, Ltd. All rights reserved. Blue/Greenデプロイによるリリースの信頼性向上を重視 事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ ◼サービスイン前の本番確認と、問題があった場合に即座に切り戻しができるようになった Elastic ContainerService Blue Green CodePipeline CodeCommit CodeBuild CodeDeploy Elastic Container Registry(ECR) 開発PC 開発環境 リポジトリ ビルド デプロイ サービス実行環境 アプリケーションの 登録(git push) ベースコンテナイメージの 事前登録 (docker push) ベースイメージ デプロイ用イメージ 旧バージョン 新バージョン アプリケーション デベロッパー プラットフォーム アーキテクト 新バージョンの 本番確認 Elastic Container Registry アプリケーション、 Dockerfile 開発PC buildspec.yml appspec.yml docker build docker push Elastic Load Balancer CI/CD定義の 事前準備(git push) デプロイ 本番トラフィック 切り替え ロールバック 判断待機 旧バージョン 終了 良かった点: ◼ CodeDeployのBlue/Greenデプロイのワークフロー がとても良く運用が考えられていて、かつロールバック が高速だったため、デプロイの信頼性が向上した。 信頼性が重要なシステムなのでメリット大 ◼ CodeBuildはDockerコンテナのビルド環境がオンデ マンドに提供されるため、開発のピークでもGitLab時 代のジョブの滞留やスローダウンが発生しなくなった
  • 38. 37Copyright (C) NRI digital, Ltd. All rights reserved. Blue/Greenデプロイによるリリースの信頼性向上を重視 事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ ◼サービスイン前の本番確認と、問題があった場合に即座に切り戻しができるようになった Elastic ContainerService Blue Green CodePipeline CodeCommit CodeBuild CodeDeploy Elastic Container Registry(ECR) 開発PC 開発環境 リポジトリ ビルド デプロイ サービス実行環境 アプリケーションの 登録(git push) ベースコンテナイメージの 事前登録 (docker push) ベースイメージ デプロイ用イメージ 旧バージョン 新バージョン アプリケーション デベロッパー プラットフォーム アーキテクト 新バージョンの 本番確認 Elastic Container Registry アプリケーション、 Dockerfile 開発PC buildspec.yml appspec.yml docker build docker push Elastic Load Balancer CI/CD定義の 事前準備(git push) デプロイ 本番トラフィック 切り替え ロールバック 判断待機 旧バージョン 終了 不満だった点: ◼ CodeCommitはGitによるコラボレーション機能が かなり使いづらく操作性がイマイチ(2019年夏当時) ⚫ プルリクエストの通知が読みづらい(SNS→メールがJSON) ⚫ AWSコンソールのログインセッションが長続きしないので、 プルリクレビューのたびにMFAを入力しなければならない ⚫ IAMユーザにはメールアドレスが紐づいていないため、3-way mergeの際に毎回メールアドレスを入力する必要がある ⚫ プルリクをマージする際に、元のブランチを消すにデフォルトで チェックが入っている・・・
  • 39. 38Copyright (C) NRI digital, Ltd. All rights reserved. 目次 前置き(自己紹介/会社紹介/本日お話しすることの背景) 事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ 事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ CI/CDによる 運用改善事例 まとめ 事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD 課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
  • 40. 39Copyright (C) NRI digital, Ltd. All rights reserved. リポジトリをBitBucketに差し替え、Slack連携を追加 事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ ◼AWSの昨年末~今年のアップデートで新機能として追加された ⚫ (2019/12/18) AWS CodePipelineがAtlassian Bitbucket クラウド(ベータ版) のサポートを開始 https://aws.amazon.com/jp/about-aws/whats-new/2019/12/aws-codepipeline-now-supports-atlassian-bitbucket-cloud/ ⚫ (2020/4/2) Slack での AWS CodeBuild、AWS CodeCommit、AWS CodeDeploy、AWS CodePipeline の通知受け取りが開始に https://aws.amazon.com/jp/about-aws/whats-new/2020/04/receive-notifications-for-aws-codebuild-codecommit-codedeploy-codepipeline-in-slack/ ◼BitbucketはもともとJira、Confluenceなど他のAtlassianプロダクトと併用していた →コラボレーションで使いづらいCodeCommitを使わなくて良くなる ◼もともと社内のチャットツールがSlack →読みづらいJSONのメール通知を受け取らなくて良くなる
  • 41. 40Copyright (C) NRI digital, Ltd. All rights reserved. 開発サイクルが早いため、アジャイルに適したツールと連携 事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ ◼Atlassian×Slackとの連携強化により、CI/CDの異常に気づいてコミュニケーションが円滑に CodePipeline CodeBuild 開発PC 開発環境 リポジトリ ビルド デプロイ サービス実行環境 アプリケーションの 登録(git push) アプリケーション デベロッパー プラットフォーム アーキテクト アプリケーション 開発PC buildspec.yml ビルド ユニットテスト CI/CD定義の 事前準備(git push) cdk deploy Lambda DynamoDB API Gateway S3curl デプロイ E2Eテスト Simple Notification Service 1 パイプラインの成功/失敗通知 チケット管理 Wiki/レポート チャット
  • 42. 41Copyright (C) NRI digital, Ltd. All rights reserved. 開発サイクルが早いため、アジャイルに適したツールと連携 事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ ◼Atlassian×Slackとの連携強化により、CI/CDの異常に気づいてコミュニケーションが円滑に CodePipeline CodeBuild 開発PC 開発環境 リポジトリ ビルド デプロイ サービス実行環境 アプリケーションの 登録(git push) アプリケーション デベロッパー プラットフォーム アーキテクト アプリケーション 開発PC buildspec.yml ビルド ユニットテスト CI/CD定義の 事前準備(git push) cdk deploy Lambda DynamoDB API Gateway S3curl デプロイ E2Eテスト Simple Notification Service 1 パイプラインの成功/失敗通知 チケット管理 Wiki/レポート チャット 良かった点: ◼ 開発サイクルが早く少人数の開発体制だったので Atlassian×Slackにすべての情報が連携されたこと で機動力のある開発ができ、生産性も上がった。 (特に、COVID-19によるリモートワークで効果大)
  • 43. 42Copyright (C) NRI digital, Ltd. All rights reserved. 目次 前置き(自己紹介/会社紹介/本日お話しすることの背景) 事例②:会員ID管理APIサービス(コンテナ) × AWS Codeシリーズ 事例③:店舗向けAPIサービス(サーバーレス) × AWS Codeシリーズ CI/CDによる 運用改善事例 まとめ 事例①:IoT向けAPIサービス(サーバーレス) × GitLab CI/CD 課題:モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
  • 44. 43Copyright (C) NRI digital, Ltd. All rights reserved. 本日お伝えしたかったこと 1. モノリシックなアプリケーション×レガシーで高負荷なリリース運用はつらいです。 新しい案件をきっかけにCI/CDに取り組んで、ビジネスの価値を高める活動にシフトしましょう 2. Gitリポジトリ×CI/CDツールは、仕様・ドキュメント上”つながる”組み合わせは数多くありますが、 「同じGitだと思って使ってみたら生産性が全然違った」ということがあります。ほとんどの場合で Gitリポジトリを利用するユーザ数 > CI/CDツールを利用するユーザ数 となるため、使い慣れたGitリポジトリを変更する判断は慎重にしましょう 3. とはいえ、クラウドやSaaSは日々機能が追加され、使いやすくアップデートされていきます。 定期的に最新の機能をキャッチアップして、こまめにCI/CDパイプラインや運用をリファクタリング していくことも重要です(でないと、成長しているサービスなのにSubversionが現役で ずっとつらいリリース運用を続ける例のようになりかねません・・・)
  • 45. 44Copyright (C) NRI digital, Ltd. All rights reserved. 宣伝 ◼ 本日の内容を補足する、弊社テックブログ記事 「CI/CD:アプリケーションを頻繁に提供する手法への取り組み」 https://www.nri-digital.jp/tech/20200318-1643/ →CI/CDツールの制約に対する考え方を記載しています。
  • 46. 45Copyright (C) NRI digital, Ltd. All rights reserved. \ご清聴ありがとうございました/