---
title: CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ～エンタープライズのDevOpsを加速させる運用改善Tips～
tags: 
author: [Yuki Ando](https://www.docswell.com/user/integrated1453)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/Z5JG4KKW7L.jpg?width=480
description: Cloud Operator Days Tokyo 2020(A-1-6) の発表内容です
published: July 29, 20
canonical: https://www.docswell.com/s/integrated1453/58NRPZ-codt2020-cicd-devopstips
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/Z5JG4KKW7L.jpg)

ビジネスプラットフォームを支えるCI/CDパイプライン
～エンタープライズのDevOpsを加速させる運用改善Tips～
安藤 裕紀
NRIデジタル株式会社
2020年7月29日


# Page. 2

![Page Image](https://bcdn.docswell.com/page/V47QGNNQEP.jpg)

自己紹介：インフラエンジニア10年目、運用経験は結構あります
◼安藤 裕紀（あんどう ゆうき）
⚫ NRIデジタル プラットフォームアーキテクト
（2011年 野村総合研究所入社、2017年よりNRIデジタル出向）
⚫ Webシステムのサーバ構築・運用を中心としたインフラエンジニアの仕事を
流通・金融・製造など様々な業種のお客様向けに経験。
⚫ 最近は、AWS上に構築されたECサイトやオンライン会員サービスの
開発・運用におけるSRE / DevOpsエンジニア寄りの仕事にシフト
– AWSアーキテクチャ設計
– Infrastructure as Codeによる自動化
– モニタリング・オンコールアラートの改善
– CI/CDパイプラインの整備(本日お話しする内容)
Copyright （C） NRI digital, Ltd. All rights reserved.
2020 APN AWS Top Engineers選出
1


# Page. 3

![Page Image](https://bcdn.docswell.com/page/DKE45GGY71.jpg)

NRIデジタルについて
多様なプロフェッショナルが集結
2016年8月に設立された
野村総合研究所の戦略子会社
NRIグループ内外から組織の壁を超えて
集結した多様なプロフェッショナルが
”ワンチーム”で、お客様と共に
デジタルによるビジネスモデル変革を推進
Copyright （C） NRI digital, Ltd. All rights reserved.
新たなテクノロジー領域への挑戦
価値共創型のビジネス創出
2


# Page. 4

![Page Image](https://bcdn.docswell.com/page/PL71WDDNEG.jpg)

本日お話しすることの背景
Copyright （C） NRI digital, Ltd. All rights reserved.
3


# Page. 5

![Page Image](https://bcdn.docswell.com/page/8G7W6Y8M72.jpg)

多くの企業が、ビジネス環境の激しい変化に対応するため、データと
デジタル技術を活用したビジネスモデルの変革（DX）に取り組んでいる
オンライン会員サービス
顧客接点のDX
デジタルマーケティング
対面接客
ECサイト・ショッピングアプリ
販売手段のDX
店頭販売
Copyright （C） NRI digital, Ltd. All rights reserved.
定額制
サブスクリプションサービス
4


# Page. 6

![Page Image](https://bcdn.docswell.com/page/W4JZYX8M73.jpg)

NRIデジタルはお客様のビジネスモデル変革の全てのフェーズに関わり、
さまざまな専門性を持つプロフェッショナルが協力してDXを支援している
ビジネスデザイナー
(専門性の例)
• ビジネスコンサルタント
• システムコンサルタント
• サービスデザイナー
• UI/UXデザイナー
事業
構想・
運営
企画
可視化・
フィードバック
お客様
デザイン・設計
データ収集・分析
プラットフォームアーキテクト
(専門性の例)
• アーキテクト
• インフラエンジニア
• データサイエンティスト
• データエンジニア
Copyright （C） NRI digital, Ltd. All rights reserved.
開発
モニタリング
テスト
リリース
アプリケーションデベロッパー
(専門性の例)
• プロジェクトマネージャー
• システムエンジニア
• スクラムマスター
• スクラムデベロッパー
5


# Page. 7

![Page Image](https://bcdn.docswell.com/page/KYE6D4P5JV.jpg)

お客様のDXを支援する事業会社にいると、よく言われること
お客様
ビジネスデザイナー
アプリケーション
デベロッパー
早く新しいビジネスを成功させたい
早く効果を見て次の手を打ちたい
もっと早く楽にアプリをリリースしたい
Copyright （C） NRI digital, Ltd. All rights reserved.
6


# Page. 8

![Page Image](https://bcdn.docswell.com/page/5GE53QKG74.jpg)

お客様のDXを支援する事業会社にいると、よく言われること
お客様
ビジネスデザイナー
アプリケーション
デベロッパー
早く新しいビジネスを成功させたい
早く効果を見て次の手を打ちたい
もっと早く楽にアプリをリリースしたい
Copyright （C） NRI digital, Ltd. All rights reserved.
7


# Page. 9

![Page Image](https://bcdn.docswell.com/page/V972ZPWDJR.jpg)

本日は、アプリケーションの開発・テスト・リリースのフェーズに
CI/CDを導入して、リリース運用を改善した事例と気づきをご紹介します
ビジネスデザイナー
(専門性の例)
• ビジネスコンサルタント
• システムコンサルタント
• サービスデザイナー
• UI/UXデザイナー
事業
構想・
運営
企画
可視化・
フィードバック
お客様
デザイン・設計
CI/CD導入による
• リリースの短期化
• 運用の軽負荷化
データ収集・分析
プラットフォームアーキテクト
(専門性の例)
• アーキテクト
• インフラエンジニア
• データサイエンティスト
• データエンジニア
Copyright （C） NRI digital, Ltd. All rights reserved.
開発
モニタリング
テスト
リリース
アプリケーションデベロッパー
(専門性の例)
• プロジェクトマネージャー
• システムエンジニア
• スクラムマスター
• スクラムデベロッパー
8


# Page. 10

![Page Image](https://bcdn.docswell.com/page/5DJYR5LM7M.jpg)

目次
前置き（自己紹介/会社紹介/本日お話しすることの背景）
課題：モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
事例①：IoT向けAPIサービス（サーバーレス） × GitLab CI/CD
CI/CDによる
運用改善事例
事例②：会員ID管理APIサービス（コンテナ） × AWS Codeシリーズ
事例③：店舗向けAPIサービス（サーバーレス） × AWS Codeシリーズ
まとめ
Copyright （C） NRI digital, Ltd. All rights reserved.
9


# Page. 11

![Page Image](https://bcdn.docswell.com/page/2V7NDN43E8.jpg)

目次
前置き（自己紹介/会社紹介/本日お話しすることの背景）
課題：モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
事例①：IoT向けAPIサービス（サーバーレス） × GitLab CI/CD
CI/CDによる
運用改善事例
事例②：会員ID管理APIサービス（コンテナ） × AWS Codeシリーズ
事例③：店舗向けAPIサービス（サーバーレス） × AWS Codeシリーズ
まとめ
Copyright （C） NRI digital, Ltd. All rights reserved.
10


# Page. 12

![Page Image](https://bcdn.docswell.com/page/GYJ9GRQP73.jpg)

(オンプレミスからAWSに移行した)
モノリシックなアプリケーション
Copyright （C） NRI digital, Ltd. All rights reserved.
11


# Page. 13

![Page Image](https://bcdn.docswell.com/page/5GJ8VWGXJD.jpg)

課題：モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
ECサイトにはさまざまな機能があり、
◼ECサイトでありそうなWebページ遷移の構成
ECサイト
検索結果
トップページ
カテゴリ・
商品一覧
商品詳細
カート
ログイン
会員登録
マイページ
会員情報
修正
Users
Copyright （C） NRI digital, Ltd. All rights reserved.
注文
決済
12


# Page. 14

![Page Image](https://bcdn.docswell.com/page/MLJL5NGNER.jpg)

課題：モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
ECサイトにはさまざまな機能があり、用途によって開発を分担している
◼ECサイトでありそうなWebページ遷移の構成
ECサイト
アプリケーションデベロッパー
(商品系担当)
アプリケーションデベロッパー
(注文系担当)
検索結果
トップページ
Users
カテゴリ・ 商品系
商品詳細
商品一覧
カート
注文系
注文
決済
アプリケーションデベロッパー
(会員系担当)
ログイン
Copyright （C） NRI digital, Ltd. All rights reserved.
会員登録 会員系 マイページ
会員情報
修正
13


# Page. 15

![Page Image](https://bcdn.docswell.com/page/547M3XQQJW.jpg)

課題：モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
モノリシックなJava EE構成では、単一のアプリケーションとしてデプロイ
アプリケーションデベロッパー
(商品系担当)
アプリケーションサーバ
開発・ビルド・テスト
application.ear
商品系.war
商品系.war
注文系.war
アプリケーションデベロッパー
(注文系担当)
会員系.war
開発・ビルド・テスト
注文系.war
earにパッケージング・
AMI作成用のEC2
インスタンスにデプロイ
Java EE
アプリケーションサーバ
OpenJDK
RHEL
アプリケーションデベロッパー
(会員系担当)
AMI化
開発・ビルド・テスト
起動設定更新
会員系.war
AMI
Copyright （C） NRI digital, Ltd. All rights reserved.
Auto Scaling
14


# Page. 16

![Page Image](https://bcdn.docswell.com/page/ZP7RQN8KE9.jpg)

課題：モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
モノリシックなJava EE構成では、単一のアプリケーションとしてデプロイ
問題点：
◼ EC2のAuto Scaling を利用しているため、都
度AMIの再作成が必要で、Java EEアプリケー
ションの部分的なホットデプロイが不可能
◼ EJBを多用するフレームワークではアプリケーショ
ンサーバの再起動に時間がかかり、デプロイの確
認が長時間化。ロールバックにも時間がかかる
→定期リリース運用にならざるを得ない
アプリケーションデベロッパー
(商品系担当)
アプリケーションサーバ
開発・ビルド・テスト
application.ear
商品系.war
商品系.war
注文系.war
アプリケーションデベロッパー
(注文系担当)
会員系.war
開発・ビルド・テスト
注文系.war
earにパッケージング・
AMI作成用のEC2
インスタンスにデプロイ
Java EE
アプリケーションサーバ
OpenJDK
RHEL
アプリケーションデベロッパー
(会員系担当)
AMI化
開発・ビルド・テスト
起動設定更新
会員系.war
AMI
Copyright （C） NRI digital, Ltd. All rights reserved.
Auto Scaling
15


# Page. 17

![Page Image](https://bcdn.docswell.com/page/NPJX5N85EX.jpg)

レガシーで高負荷なリリース運用
Copyright （C） NRI digital, Ltd. All rights reserved.
16


# Page. 18

![Page Image](https://bcdn.docswell.com/page/63JK6NKRJD.jpg)

課題：モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
Subversionを利用しており、ライブラリアンとJenkinsがビルド・デプロイ
アプリケーションデベロッパー
(商品系担当)
開発ブランチ
(商品系)
アプリケーションデベロッパー
(注文系担当)
開発ブランチ
(注文系)
アプリケーションデベロッパー
(会員系担当)
ライブラリアン
(構成管理担当)
手動マージ作業
trunkとの差分を確認
し、リリース準備用ブラ
ンチにマージのためのコ
ミットを追加
ライブラリアン
Copyright （C） NRI digital, Ltd. All rights reserved.
ステージング環境
Jenkins(CIサーバ)
リリース準備
用ブランチ
開発ブランチ
(商品系)
開発ブランチ
(注文系)
開発ブランチ
(会員系)
手動デプロイ
trunk
(master)
本番環境
開発ブランチ
(会員系)
テスト環境
ビルド
パッケージ
ビルド
デプロイ
開発環境A
ビルド
デプロイ
開発環境B
ビルド
デプロイ
開発環境C
17


# Page. 19

![Page Image](https://bcdn.docswell.com/page/4LE36VZGE5.jpg)

課題：モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
Subversionを利用しており、ライブラリアンとJenkinsがビルド・デプロイ
問題点：
◼ Subversionを利用しているため、並行開発のマージ
には手動で差分のコミットを作成する必要があり、
ライブラリアンの作業負荷が非常に高い
◼ Jenkinsによる部分的なCI/CDは導入されていたが、
緻密な権限管理や認証情報の一元管理も難しく、
ネットワークが分断されているため自動化は限定的
アプリケーションデベロッパー
(商品系担当)
開発ブランチ
(商品系)
アプリケーションデベロッパー
(注文系担当)
開発ブランチ
(注文系)
アプリケーションデベロッパー
(会員系担当)
ライブラリアン
(構成管理担当)
手動マージ作業
trunkとの差分を確認
し、リリース準備用ブラ
ンチにマージのためのコ
ミットを追加
ライブラリアン
手動デプロイ
trunk
(master)
リリース準備
用ブランチ
開発ブランチ
(商品系)
開発ブランチ
(会員系)
テスト環境
ビルド
パッケージ
ビルド
デプロイ
開発環境A
ビルド
デプロイ
開発環境B
→定期リリースにも多くの工数がかかる
Copyright （C） NRI digital, Ltd. All rights reserved.
ステージング環境
Jenkins(CIサーバ)
開発ブランチ
(注文系)
開発ブランチ
(会員系)
本番環境
ビルド
デプロイ
開発環境C
18


# Page. 20

![Page Image](https://bcdn.docswell.com/page/V8EDV8RNEG.jpg)

アプリケーション
デベロッパー
もっと早く楽にアプリをリリースしたい
• 定期リリース運用にならざるを得ない
• 定期リリースにも多くの工数がかかる
＼この2つの課題をなんとかしたい／
Copyright （C） NRI digital, Ltd. All rights reserved.
19


# Page. 21

![Page Image](https://bcdn.docswell.com/page/4V7PV8WN78.jpg)

DevOpsとCI/CD
Copyright （C） NRI digital, Ltd. All rights reserved.
20


# Page. 22

![Page Image](https://bcdn.docswell.com/page/L2JVZN8YEQ.jpg)

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 ハンドブック 理論・原則・実践のすべて」のイントロダクションより
Copyright （C） NRI digital, Ltd. All rights reserved.
21


# Page. 23

![Page Image](https://bcdn.docswell.com/page/Z5EG4K5WJL.jpg)

DevOpsを効果的に実践しているチームのリードタイムは1/100以下
◼第三者機関&amp;Google Coudの調査レポート「ACCELERATE State of DevOps 2019」
https://services.google.com/fh/files/misc/state-of-devops-2019.pdf
Copyright （C） NRI digital, Ltd. All rights reserved.
22


# Page. 24

![Page Image](https://bcdn.docswell.com/page/V4JQGNZQ7P.jpg)

1日10回以上、100倍のスピードでデプロイしたい
が、DevOpsは文化、コラボレーション、アーキテク
チャ、プラクティスなど非常に多岐にわたる概念
一度にすべてに取り組むのは難しい
Copyright （C） NRI digital, Ltd. All rights reserved.
23


# Page. 25

![Page Image](https://bcdn.docswell.com/page/DK745G3YJ1.jpg)

DevOpsのプラクティスの中でも、CI/CDが特に課題にマッチしていた
◼CI/CDはビルド、テスト、デプロイを自動化し、開発プロセス・サイクルを効率化・高速化すること
◼DevOpsが文化的規範や、アーキテクチャ、プラクティスなど幅広くカバーしているのに対して、
そのプラクティスの一つであるCI/CDはアプリケーションを高頻度で提供するための手法に特化
CI/CDがない場合
ビルド
テスト
ツールによる自動化で
開発プロセスを効率化
CI/CDパイプライン
CI/CDがある場合
ビルド
テスト
デプロイ
デプロイ
作業時間・待ち時間をなくし
開発サイクルを高速化
Copyright （C） NRI digital, Ltd. All rights reserved.
24


# Page. 26

![Page Image](https://bcdn.docswell.com/page/PLJ1WD1N7G.jpg)

DevOpsのプラクティスの中でも、CI/CDが特に課題にマッチしていた
◼CI/CDはビルド、テスト、デプロイを自動化し、開発プロセス・サイクルを効率化・高速化すること
◼DevOpsが文化的規範や、アーキテクチャ、プラクティスなど幅広くカバーしているのに対して、
そのプラクティスの一つであるCI/CDはアプリケーションを高頻度で提供するための手法に特化
新規のプロジェクトにCI/CDを導入し、
スモールスタートで知見の獲得に取り組んだ
CI/CDがない場合
ビルド
テスト
ツールによる自動化で
開発プロセスを効率化
CI/CDパイプライン
CI/CDがある場合
ビルド
テスト
デプロイ
デプロイ
作業時間・待ち時間をなくし
開発サイクルを高速化
Copyright （C） NRI digital, Ltd. All rights reserved.
25


# Page. 27

![Page Image](https://bcdn.docswell.com/page/8GJW6Y9MJ2.jpg)

CI/CDツールはVCSとしてGitリポジトリの利用が前提。コードの変更が
行われるGitの操作をトリガーに、ビルド・テスト・デプロイを自動化する
プロダクト選定の例：
ローカル開発環境
VCS
CI/CDパイプライン
複数のプロダクトの中か
これらのツールを選定し
ら選定する必要がある
決定する必要がある
リポジトリ
ソースコードの登録
(git push)
✓ ソースコード管理
feature/XXブランチ
開発者PC
ブラウザ操作
(git merge)
hotfix/XXブランチ
developブランチ
release/XXブランチ
masterブランチ
Copyright （C） NRI digital, Ltd. All rights reserved.
サービス実行環境
CI/CDツール
✓一連のワークフローを制御しジョブを自動実行する
✓Gitリポジトリの特定ブランチへの登録(Push)でトリガー
静的
解析
ビルド
テスト
デプロイ
開発環境
静的
解析
ビルド
テスト
デプロイ
テスト環境
静的
解析
ビルド
テスト
デプロイ
ステージング環境
静的
解析
ビルド
テスト
リリース
準備
本番環境
26


# Page. 28

![Page Image](https://bcdn.docswell.com/page/W4EZYX9MJ3.jpg)

CI/CDツールはVCSとしてGitリポジトリの利用が前提。コードの変更が
行われるGitの操作をトリガーに、ビルド・テスト・デプロイを自動化する
プロダクト選定の例：
Gitリポジトリ × CI/CDツールの
選定によって運用時の使い勝手が
大きく変わってくることがわかった
ローカル開発環境
VCS
CI/CDパイプライン
複数のプロダクトから
これらのツールを選定し
選定する必要がある
決定する必要がある
リポジトリ
ソースコードの登録
(git push)
✓ ソースコード管理
feature/XXブランチ
開発者PC
ブラウザ操作
(git merge)
hotfix/XXブランチ
developブランチ
release/XXブランチ
masterブランチ
Copyright （C） NRI digital, Ltd. All rights reserved.
サービス実行環境
CI/CDツール
✓ 一連のワークフローを制御しジョブを自動実行する
✓ Gitリポジトリの特定ブランチへの登録(Push)でトリガー
静的
解析
ビルド
テスト
デプロイ
開発環境
静的
解析
ビルド
テスト
デプロイ
テスト環境
静的
解析
ビルド
テスト
デプロイ
ステージング環境
静的
解析
ビルド
テスト
リリース
準備
本番環境
27


# Page. 29

![Page Image](https://bcdn.docswell.com/page/KY76D4K5EV.jpg)

目次
前置き（自己紹介/会社紹介/本日お話しすることの背景）
課題：モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
事例①：IoT向けAPIサービス（サーバーレス） × GitLab CI/CD
CI/CDによる
運用改善事例
事例②：会員ID管理APIサービス（コンテナ） × AWS Codeシリーズ
事例③：店舗向けAPIサービス（サーバーレス） × AWS Codeシリーズ
まとめ
Copyright （C） NRI digital, Ltd. All rights reserved.
28


# Page. 30

![Page Image](https://bcdn.docswell.com/page/5G753QPGJ4.jpg)

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
デプロイ戦略
Immutable (AWS CDK)
Blue/Green (CodeDeploy)
Immutable (AWS CDK)
開発サイクル
2週間～1ヶ月
数ヶ月
1～2週間
開発体制
10名前後
4～5名
3～4名
-
All at once
Rolling
Immutable
Blue/Green
(サービスローンチ後)
Copyright （C） NRI digital, Ltd. All rights reserved.
29


# Page. 31

![Page Image](https://bcdn.docswell.com/page/V9J2ZP6DER.jpg)

目次
前置き（自己紹介/会社紹介/本日お話しすることの背景）
課題：モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
事例①：IoT向けAPIサービス（サーバーレス） × GitLab CI/CD
CI/CDによる
運用改善事例
事例②：会員ID管理APIサービス（コンテナ） × AWS Codeシリーズ
事例③：店舗向けAPIサービス（サーバーレス） × AWS Codeシリーズ
まとめ
Copyright （C） NRI digital, Ltd. All rights reserved.
30


# Page. 32

![Page Image](https://bcdn.docswell.com/page/5DEYR59MJM.jpg)

事例①：IoT向けAPIサービス（サーバーレス） × GitLab CI/CD
開発者のGit操作・UIと親和性が高いGitLab CI/CD
◼開発者がGitLabの操作だけでビルド・デプロイができるようになった
開発環境
リポジトリ
ビルド
デプロイ
サービス実行環境
Gitリポジトリ・CI/CD実行サーバ
アプリケーション
デベロッパー
アプリケーションの
登録(git push)
開発PC
デプロイ
アプリケーション
ビルド
テスト
.gitlab-ci.yml
E2E
cdk deploy
S3
curl
API Gateway
Lambda
DynamoDB
Ubuntu
プラットフォーム
アーキテクト
Gitリポジトリと同じWeb画面上でCI/CDの進捗と結果を確認
開発PC
CI/CD定義の
事前準備(git push)
Copyright （C） NRI digital, Ltd. All rights reserved.
31


# Page. 33

![Page Image](https://bcdn.docswell.com/page/2VJNDNL378.jpg)

事例①：IoT向けAPIサービス（サーバーレス） × GitLab CI/CD
開発者のGit操作・UIと親和性が高いGitLab CI/CD
良かった点：
◼ アプリケーション開発者がコードの変更(=Git操作)の
みを行い、他のツールの使い方を覚える必要がない
Gitリポジトリ・CI/CD実行サーバ
ため、GitやCI/CDに不慣れでも開発に注力できた。
◼ ビルド・デプロイがJenkinsだった時代と比べて、
CI/CDパイプラインの定義が宣言的なYAMLになり、
アプリケーションのソースコードと一緒にバージョン管理
できるため、ブラックボックス化しづらくなった。
◼開発者がGitLabの操作だけでビルド・デプロイができるようになった
開発環境
アプリケーション
デベロッパー
アプリケーションの
登録(git push)
開発PC
リポジトリ
ビルド
デプロイ
サービス実行環境
デプロイ
アプリケーション
ビルド
テスト
.gitlab-ci.yml
E2E
cdk deploy
S3
curl
API Gateway
Lambda
DynamoDB
Ubuntu
プラットフォーム
アーキテクト
Gitリポジトリと同じWeb画面上でCI/CDの進捗と結果を確認
開発PC
CI/CD定義の
事前準備(git push)
Copyright （C） NRI digital, Ltd. All rights reserved.
32


# Page. 34

![Page Image](https://bcdn.docswell.com/page/GYE9GR4PJ3.jpg)

事例①：IoT向けAPIサービス（サーバーレス） × GitLab CI/CD
開発者のGit操作・UIと親和性が高いGitLab CI/CD
不満だった点：
◼開発者がGitLabの操作だけでビルド・デプロイができるようになった
開発環境
リポジトリ
ビルド
デプロイ
サービス実行環境
◼ せっかくサービス実行環境がサーバーレスなのに
Gitリポジトリ・CI/CD実行サーバ
バックアップ等GitLabサーバの管理が必要。
◼ 1台のサーバにRunner(Docker Executor)も相乗り
していたため、複数人で同時に利用すると
CI/CDパイプラインのジョブが滞留することがあった。
アプリケーション
デベロッパー
アプリケーションの
登録(git push)
開発PC
デプロイ
アプリケーション
ビルド
テスト
.gitlab-ci.yml
E2E
cdk deploy
S3
curl
API Gateway
Lambda
DynamoDB
Ubuntu
プラットフォーム
アーキテクト
Gitリポジトリと同じWeb画面上でCI/CDの進捗と結果を確認
開発PC
CI/CD定義の
事前準備(git push)
Copyright （C） NRI digital, Ltd. All rights reserved.
33


# Page. 35

![Page Image](https://bcdn.docswell.com/page/5GE8VWQXED.jpg)

目次
前置き（自己紹介/会社紹介/本日お話しすることの背景）
課題：モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
事例①：IoT向けAPIサービス（サーバーレス） × GitLab CI/CD
CI/CDによる
運用改善事例
事例②：会員ID管理APIサービス（コンテナ） × AWS Codeシリーズ
事例③：店舗向けAPIサービス（サーバーレス） × AWS Codeシリーズ
まとめ
Copyright （C） NRI digital, Ltd. All rights reserved.
34


# Page. 36

![Page Image](https://bcdn.docswell.com/page/MLEL5NXN7R.jpg)

事例②：会員ID管理APIサービス（コンテナ） × AWS Codeシリーズ
Blue/Greenデプロイによるリリースの信頼性向上を重視
◼サービスイン前の本番確認と、問題があった場合に即座に切り戻しができるようになった
開発環境
リポジトリ
ビルド
デプロイ
サービス実行環境
CodePipeline
アプリケーション
デベロッパー
アプリケーションの
登録(git push)
開発PC
CodeCommit
CodeBuild
CodeDeploy
アプリケーション、
Dockerfile
docker build
デプロイ
buildspec.yml
docker push
新バージョンの
本番確認
appspec.yml
プラットフォーム
アーキテクト
CI/CD定義の
事前準備(git push)
開発PC
ベースコンテナイメージの
事前登録
(docker push)
Copyright （C） NRI digital, Ltd. All rights reserved.
Elastic Container
Elastic
ContainerRegistry(ECR)
Registry
ベースイメージ
デプロイ用イメージ
本番トラフィック
切り替え
ロールバック
判断待機
Elastic ContainerService
Elastic Load
Balancer
Blue
旧バージョン
Green
新バージョン
旧バージョン
終了
35


# Page. 37

![Page Image](https://bcdn.docswell.com/page/54JM3XLQEW.jpg)

事例②：会員ID管理APIサービス（コンテナ） × AWS Codeシリーズ
Blue/Greenデプロイによるリリースの信頼性向上を重視
良かった点：
◼ CodeDeployのBlue/Greenデプロイのワークフロー
がとても良く運用が考えられていて、かつロールバック
が高速だったため、デプロイの信頼性が向上した。
信頼性が重要なシステムなのでメリット大
◼ CodeBuildはDockerコンテナのビルド環境がオンデ
マンドに提供されるため、開発のピークでもGitLab時
代のジョブの滞留やスローダウンが発生しなくなった
◼サービスイン前の本番確認と、問題があった場合に即座に切り戻しができるようになった
開発環境
リポジトリ
ビルド
デプロイ
サービス実行環境
CodePipeline
アプリケーション
デベロッパー
アプリケーションの
登録(git push)
開発PC
CodeCommit
CodeBuild
CodeDeploy
アプリケーション、
Dockerfile
docker build
デプロイ
buildspec.yml
docker push
新バージョンの
本番確認
appspec.yml
プラットフォーム
アーキテクト
CI/CD定義の
事前準備(git push)
開発PC
ベースコンテナイメージの
事前登録
(docker push)
Copyright （C） NRI digital, Ltd. All rights reserved.
Elastic Container
Elastic
ContainerRegistry(ECR)
Registry
ベースイメージ
デプロイ用イメージ
本番トラフィック
切り替え
ロールバック
判断待機
Elastic ContainerService
Elastic Load
Balancer
Blue
旧バージョン
Green
新バージョン
旧バージョン
終了
36


# Page. 38

![Page Image](https://bcdn.docswell.com/page/ZPJRQNKK79.jpg)

事例②：会員ID管理APIサービス（コンテナ） × AWS Codeシリーズ
Blue/Greenデプロイによるリリースの信頼性向上を重視
不満だった点：
◼◼サービスイン前の本番確認と、問題があった場合に即座に切り戻しができるようになった
CodeCommitはGitによるコラボレーション機能が
かなり使いづらく操作性がイマイチ(2019年夏当時)
開発環境
リポジトリ
ビルド
デプロイ
サービス実行環境
⚫ プルリクエストの通知が読みづらい(SNS→メールがJSON)
⚫ AWSコンソールのログインセッションが長続きしないので、
プルリクレビューのたびにMFAを入力しなければならない
新バージョンの
本番確認
⚫ IAMユーザにはメールアドレスが紐づいていないため、3-way
本番トラフィック
切り替え
mergeの際に毎回メールアドレスを入力する必要がある
ロールバック
判断待機
⚫ プルリクをマージする際に、元のブランチを消すにデフォルトで
旧バージョン
終了
チェックが入っている・・・
CodePipeline
アプリケーション
デベロッパー
アプリケーションの
登録(git push)
開発PC
CodeCommit
CodeBuild
CodeDeploy
アプリケーション、
Dockerfile
docker build
デプロイ
buildspec.yml
docker push
CI/CD定義の
事前準備(git push)
開発PC
ベースコンテナイメージの
事前登録
(docker push)
Copyright （C） NRI digital, Ltd. All rights reserved.
Elastic Container
Elastic
ContainerRegistry(ECR)
Registry
ベースイメージ
Elastic Load
Balancer
Blue
旧バージョン
Green
appspec.yml
プラットフォーム
アーキテクト
Elastic ContainerService
新バージョン
デプロイ用イメージ
37


# Page. 39

![Page Image](https://bcdn.docswell.com/page/NPEX5NL57X.jpg)

目次
前置き（自己紹介/会社紹介/本日お話しすることの背景）
課題：モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
事例①：IoT向けAPIサービス（サーバーレス） × GitLab CI/CD
CI/CDによる
運用改善事例
事例②：会員ID管理APIサービス（コンテナ） × AWS Codeシリーズ
事例③：店舗向けAPIサービス（サーバーレス） × AWS Codeシリーズ
まとめ
Copyright （C） NRI digital, Ltd. All rights reserved.
38


# Page. 40

![Page Image](https://bcdn.docswell.com/page/63EK6NLRED.jpg)

事例③：店舗向けAPIサービス（サーバーレス） × AWS Codeシリーズ
リポジトリをBitBucketに差し替え、Slack連携を追加
◼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のメール通知を受け取らなくて良くなる
Copyright （C） NRI digital, Ltd. All rights reserved.
39


# Page. 41

![Page Image](https://bcdn.docswell.com/page/4L736V3G75.jpg)

事例③：店舗向けAPIサービス（サーバーレス） × AWS Codeシリーズ
開発サイクルが早いため、アジャイルに適したツールと連携
◼Atlassian×Slackとの連携強化により、CI/CDの異常に気づいてコミュニケーションが円滑に
開発環境
リポジトリ
ビルド
デプロイ
サービス実行環境
チケット管理
CodePipeline
Wiki/レポート
アプリケーション
デベロッパー
アプリケーションの
登録(git push)
CodeBuild
cdk deploy
アプリケーション
ビルド
デプロイ
buildspec.yml
ユニットテスト
E2Eテスト
1
開発PC
チャット
S3
curl
API Gateway
パイプラインの成功／失敗通知
プラットフォーム
アーキテクト
CI/CD定義の
事前準備(git push)
開発PC
Copyright （C） NRI digital, Ltd. All rights reserved.
Lambda
DynamoDB
Simple Notification Service
40


# Page. 42

![Page Image](https://bcdn.docswell.com/page/V87DV84N7G.jpg)

良かった点：
開発サイクルが早いため、アジャイルに適したツールと連携
事例③：店舗向けAPIサービス（サーバーレス） × AWS Codeシリーズ
◼◼Atlassian×Slackとの連携強化により、CI/CDの異常に気づいてコミュニケーションが円滑に
開発サイクルが早く少人数の開発体制だったので
Atlassian×Slackにすべての情報が連携されたこと
で機動力のある開発ができ、生産性も上がった。
開発環境
リポジトリ
ビルド
デプロイ
サービス実行環境
チケット管理
CodePipeline
Wiki/レポート
（特に、COVID-19によるリモートワークで効果大）
アプリケーション
デベロッパー
アプリケーションの
登録(git push)
CodeBuild
cdk deploy
アプリケーション
ビルド
デプロイ
buildspec.yml
ユニットテスト
E2Eテスト
1
開発PC
チャット
S3
curl
API Gateway
パイプラインの成功／失敗通知
プラットフォーム
アーキテクト
CI/CD定義の
事前準備(git push)
開発PC
Copyright （C） NRI digital, Ltd. All rights reserved.
Lambda
DynamoDB
Simple Notification Service
41


# Page. 43

![Page Image](https://bcdn.docswell.com/page/4VJPV8MNJ8.jpg)

目次
前置き（自己紹介/会社紹介/本日お話しすることの背景）
課題：モノリシックなアプリケーションのレガシーで高負荷なリリース運用の例
事例①：IoT向けAPIサービス（サーバーレス） × GitLab CI/CD
CI/CDによる
運用改善事例
事例②：会員ID管理APIサービス（コンテナ） × AWS Codeシリーズ
事例③：店舗向けAPIサービス（サーバーレス） × AWS Codeシリーズ
まとめ
Copyright （C） NRI digital, Ltd. All rights reserved.
42


# Page. 44

![Page Image](https://bcdn.docswell.com/page/L2EVZN9Y7Q.jpg)

本日お伝えしたかったこと
1. モノリシックなアプリケーション×レガシーで高負荷なリリース運用はつらいです。
新しい案件をきっかけにCI/CDに取り組んで、ビジネスの価値を高める活動にシフトしましょう
2. Gitリポジトリ×CI/CDツールは、仕様・ドキュメント上”つながる”組み合わせは数多くありますが、
「同じGitだと思って使ってみたら生産性が全然違った」ということがあります。ほとんどの場合で
Gitリポジトリを利用するユーザ数 &gt; CI/CDツールを利用するユーザ数
となるため、使い慣れたGitリポジトリを変更する判断は慎重にしましょう
3. とはいえ、クラウドやSaaSは日々機能が追加され、使いやすくアップデートされていきます。
定期的に最新の機能をキャッチアップして、こまめにCI/CDパイプラインや運用をリファクタリング
していくことも重要です（でないと、成長しているサービスなのにSubversionが現役で
ずっとつらいリリース運用を続ける例のようになりかねません・・・）
Copyright （C） NRI digital, Ltd. All rights reserved.
43


# Page. 45

![Page Image](https://bcdn.docswell.com/page/Z57G4KZWEL.jpg)

宣伝
◼ 本日の内容を補足する、弊社テックブログ記事
「CI/CD：アプリケーションを頻繁に提供する手法への取り組み」
https://www.nri-digital.jp/tech/20200318-1643/
→CI/CDツールの制約に対する考え方を記載しています。
Copyright （C） NRI digital, Ltd. All rights reserved.
44


# Page. 46

![Page Image](https://bcdn.docswell.com/page/V4EQGNLQJP.jpg)

＼ご清聴ありがとうございました／
Copyright （C） NRI digital, Ltd. All rights reserved.
45


# Page. 47

![Page Image](https://bcdn.docswell.com/page/DKJ45GDYE1.jpg)



