SlideShare a Scribd company logo
ビジネスプラットフォームを支える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~

More Related Content

What's hot

OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方
Hitachi, Ltd. OSS Solution Center.
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
貴志 上坂
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト
Takahiro Moteki
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
Amazon Web Services Japan
 
Ingress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceIngress on Azure Kubernetes Service
Ingress on Azure Kubernetes Service
Toru Makabe
 
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
DeNAの動画配信サービスを支えるインフラの内部  #denatechconDeNAの動画配信サービスを支えるインフラの内部  #denatechcon
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
DeNA
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
 
Keycloak入門
Keycloak入門Keycloak入門
Keycloak入門
Hiroyuki Wada
 
AWS OpsWorksハンズオン
AWS OpsWorksハンズオンAWS OpsWorksハンズオン
AWS OpsWorksハンズオン
Amazon Web Services Japan
 
Kuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOpsKuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOps
shunki fujiwara
 
Goss入門
Goss入門Goss入門
Goss入門
ShuyaMotouchi1
 
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05都元ダイスケ Miyamoto
 
とにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みるとにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みる
Masatoshi Tada
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
NTT DATA Technology & Innovation
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
NTT DATA Technology & Innovation
 
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るbacklogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
Takeru Maehara
 

What's hot (20)

OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
Ingress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceIngress on Azure Kubernetes Service
Ingress on Azure Kubernetes Service
 
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
DeNAの動画配信サービスを支えるインフラの内部  #denatechconDeNAの動画配信サービスを支えるインフラの内部  #denatechcon
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
Keycloak入門
Keycloak入門Keycloak入門
Keycloak入門
 
AWS OpsWorksハンズオン
AWS OpsWorksハンズオンAWS OpsWorksハンズオン
AWS OpsWorksハンズオン
 
Kuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOpsKuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOps
 
Goss入門
Goss入門Goss入門
Goss入門
 
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
 
とにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みるとにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みる
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
 
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るbacklogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
 

Similar to 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.
DataWorks Summit/Hadoop Summit
 
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で実践するCaaS
DevOps Hub
 
20170705 apiをつくろう
20170705 apiをつくろう20170705 apiをつくろう
20170705 apiをつくろう
CData Software Japan
 
アイデアを形にする ③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 to 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活用事例
 
今なぜサーバーレスなのか
今なぜサーバーレスなのか今なぜサーバーレスなのか
今なぜサーバーレスなのか
 

Recently uploaded

LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
atsushi061452
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 

Recently uploaded (15)

LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 

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. \ご清聴ありがとうございました/