[cloud onair]...
TRANSCRIPT
Cloud Onr
Cloud OnAir
Cloud OnAir
アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。2018 年 3 月 8 日 放送
Agenda
Cloud OnAir
1
3
2
“ビジネスに直結する開発” とは?
構築 / 計測 / 学習 を最適化
本日のまとめ
2
Cloud OnAir
Cloud OnAir
“ビジネスに直結する開発” とは?
Cloud OnAir
● IT を使ったビジネス変革
○ 開発の最適化
■ ものづくりのサイクルを短くする
■ 沢山の物を作る
○ 運用の最適化
■ 人的リソース
■ コンピューティングリソース
ビジネスインパクト
本日のテーマ
2018 年 2 月 8 日放送 のテーマ
Cloud OnAir
“ビジネスに直結する開発” とは?
● 開発の最適化
○ ものづくりのサイクルを短くする
○ 沢山の物を作る
= ビジネスに直結する開発?
Cloud OnAir
“ビジネスに直結する開発” とは?
ユーザのニーズも多様化しているし、どのアイディアがヒットするだろうか?
ヒットするかどうかわからないものに、大きな投資は難しい
いかにフィードバックから学べるか!
現場の声
Cloud OnAir
● IT を使ったビジネス変革
○ 開発の最適化
■ ものづくりのサイクルを短くする
■ 沢山の物を作る
○ 運用の最適化
■ 人的リソース
■ コンピューティングリソース
“ビジネスに直結する開発” とは?
フィードバックループを短くし、ユーザのフィードバックを取り込みながら、本当に必要なものを高速に開発する
本日の“真の”テーマ
Cloud OnAir
構築 - 計測 - 学習のフィードバックループ
引用: リーンスタートアップ
アイディア
製品データ
構築
計測
学習
構築 ~ 計測 ~ 学習のフィードバック
ループを短くすることで、
ユーザのフィードバックを得ながら、
本当に必要なものを高速に開発できる
Cloud OnAir
Cloud OnAir
構築を最適化
Cloud OnAir
早くユーザにプロダクトを届けるためには?
構築の最適化?
(1) 作業時間を削減(効率化)する
● 設計 / 構築 / テスト / リリース を高速化する
● 工程を省く
(2) リリース対象を分割する
● マイクロサービス
Cloud OnAir
(1) 作業時間を削減(効率化)する
● 設計 / 構築 / テスト / リリース を高速化する
○ CI / CDを活用する
● 工程を省く
○ マネージドサービスを活用することで、以下を削減
■ ログサーバのキャパシティ管理
■ スケーリング
■ HA構成
■ ディザスターリカバリー
■ etc.
構築の最適化 〜 (1) 作業時間を削減(効率化)する 〜
Cloud OnAir
継続的インテグレーション( CI: Continuous Integration)一日に何度もビルドを実行し、ソフトウェアをインテグレーションした時に発生する
様々な問題を早期に検出する
→フィードバックループを短くし、ソフトウェア開発の品質と生産性を向上させる
継続的デリバリー(CD: Continuous Delivery)ソフトウェア全体のライフサイクルを通じて、常に本番環境にリリースできる状態を保つ
→リリースまでの期間を短縮することで、フィードバックループを短くできる
構築の最適化 〜 (1) 作業時間を削減(効率化)する 〜
Trunk, Releasebranch/tag
git flow
CD
CILocal env, Feature
branch/PR
deploy to test envint teststrigger build +
unit test
artifact registry
bake/package sys tests deploy to
qa/staging/prodtriggerint teststrigger build + unit test
引用: [改訂第3版]Jenkins実践入門
Cloud OnAir
GCP では、CI / CDにおける自動化を実現するためのプロダクトを
簡単に利用可能。
構築の最適化 〜 (1) 作業時間を削減(効率化)する 〜
Container Builder
Container Registry
Cloud Source Repositories
CloudLauncher
また、普段使っているアプリケーションをワンクリックでデプロイしたり、組み
合わせて利用することも可能。
Cloud OnAir
構築の最適化 〜 (1) 作業時間を削減(効率化)する 〜
GCP を利用してCI / CDを実現した一例。
開発者は、アプリケーションに
フォーカス。自動化により、ユー
ザに新しい価値を届ける
までの時間を短縮。
Cloud OnAir
(1) 作業時間を削減(効率化)する
● 設計 / 構築 / テスト / リリース を高速化する
● 工程を省く
(2) リリース対象を分割する
● マイクロサービス
早くユーザにプロダクトを届けるためには?
構築の最適化?
Cloud OnAir
構築の最適化 〜 (2) リリース対象を分割する 〜
UIAUTH
ORDERSINVENTORY
ACTION PROC& more
UI AUTH
モノリス
UI
マイクロサービス
ORDERSINVENTORY
UI
ACTION PROC ACTION PROC
or
小さなサービスを組み合わせて、一つのアプリケーションを
開発するアプローチ。
Microservices: What?
Cloud OnAir
構築の最適化 〜 (2) リリース対象を分割する 〜
(異なる)最適な技術を採用可能
同時並行性 & 分割
集中した小さなチーム
再利用性 & 置き換えやすさ
マイクロサービス
UI AUTH
UI
ORDERSINVENTORY
UI
ACTION PROC ACTION PROC
Microservices: Why?
※ チームの状況などを考慮し、適切な大きさのサービスに 分割することが重要です
Cloud OnAir
構築の最適化 〜 (2) リリース対象を分割する 〜
Microservices: How?
※コンテナおよび GKE の詳細については、2017 年 第 2 回「GCPのアプリランタイム について学ぼう」をご覧ください。
Google Kubernetes Engineコンテナ中心のインフラを実現する
Kubernetes のマネージドサービス
コンテナ技術 と マイクロサービス は相性抜群!
コンテナ=コードと依存性をひと固まりにまとめることで、
● デプロイ単位の単純化
● アプリケーションとインフラの疎結合化
● 起動が速い
Cloud OnAir
Cloud OnAir
計測を最適化
Cloud OnAir
保存 分析処理収集
● 異なるアイディアを比較したい
→ A/B テスト
● 一部のユーザのみで比較したい
→ カナリアテスト
計測の最適化?
※データ分析に関する詳細は、2017 年 第 3 回放送「No-ops で大量データ処理基盤を簡単に構築する」をご覧ください。
Cloud OnAir
A/B テスト
異なるバージョンをリリースし、その
結果を元にアイディアの良し悪しを判断
カナリアテスト
一部のユーザのみに先行的にリリースし、デー
タを収集したり、安全にリリース
Load balancer
Version A50%50%
Version B
Version BVersion A
Load balancer
Production Fleet (95%) Canary test (5%)
Load balancer
Production Fleet
異なるアイディアを比較 一部のユーザのみで比較
計測の最適化 〜 アプローチ 〜
Cloud OnAir
Google App Engine Google Compute Engine
計測の最適化 〜 GCP ならこんなに簡単! 〜
GCP では、A/B テストやカナリアテストを簡単に設定可能。
切り戻しが簡単なこともポイント!
Cloud OnAir
Cloud OnAir
学習を最適化
Cloud OnAir
学習の最適化 〜 学習における課題 〜
分析する
準備作業を依頼する
課題
● 分析する人に応じて、様々な分析のニーズが存在
(ツール、分析手法 etc.)
● 準備作業の属人性
(ツールセットアップ etc.)
● 分析時の処理待ち時間意思決定する
分析方法を学ぶ学習コスト
待ち時間
待ち時間
Cloud OnAir
学習の最適化 〜 ビッグデータ基盤の全体像 〜
Cloud Logs
Google App Engine
Google Analytics Premium
Cloud Pub/Sub
BigQuery (テーブル)
Cloud Bigtable(NoSQL)
Cloud Storage(ファイル)
Cloud Dataflow
BigQuery Analytics(SQL)
収集 保存 分析
バッチ
Cloud DataStore
処理
ストリーム
Cloud Monitoring
Cloud Bigtable
リアルタイム アナリティクスおよびアラート
Cloud Dataflow
Data Studio 360
ML EngineTensorflow
Cloud OnAir
学習の最適化 〜 ビッグデータ基盤の全体像 〜
Cloud Logs
Google App Engine
Google Analytics Premium
Cloud Pub/Sub
BigQuery (テーブル)
Cloud Bigtable(NoSQL)
Cloud Storage(ファイル)
Cloud Dataflow
BigQuery Analytics(SQL)
収集 保存 分析
バッチ
Cloud DataStore
処理
ストリーム
Cloud Monitoring
Cloud Bigtable
リアルタイム アナリティクスおよびアラート
Cloud Dataflow
Data Studio 360
ML EngineTensorflow
分析する人に応じて、様々な分析のニーズが存在(ツール、分析手法 etc.)→ ニーズに応じたツール、使い慣れたツールとの連携により 学習コストを削減。
準備作業の属人性→ マネージドサービスの活用により、属人性を排除。
分析時の処理待ち時間→ BigQuery の活用により、待ち時間を圧倒的に削減
Cloud OnAir
Cloud OnAir
まとめ
Cloud OnAir
まとめ
28
● IT をビジネスに直結させるためには、
× 大量の機能・製品を高速に作る
○ フィードバックループを短くすることで、本当に必要なものだけを作る
GCP を活用することで、構築 ~ 計測 ~ 学習の
フィードバックループを短くし、
真に価値を生み出す作業にフォーカス
Cloud OnAir
まとめ
29
開発を最適化するためにクラウドならではの
機能を使いましょう
開発
マネージドサービス
自動化
分析基盤