cloud native application on deis by using 12 factor

Post on 28-Jan-2018

7.793 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

自己紹介

日本マイクロソフト(株)Java エバンジェリスト寺田 佳央

ハッシュタグ #てらだよしおがんばれ

クラウドを有効活用できすアプリケーションを実装されてますか?

今のアプリケーションをそのままクラウドに移行する?

ところで昨今話題ですが

マイクロサービスは必要 ?

モノリシック?マイクロ?

一般的な企業システムの実装例

顧客管理 受注管理 物流管理 売り上げ管理

商品管理 レコメンド 顧客分析 経営分析

企業システム DB

どんどんマイクロ・サービス化

受注管理サービス

顧客管理 DB

物流管理サービス

顧客管理 DB

マイクロサービス

いち早くサービスを提供したい

柔軟にスケールさせたい

独立したサービス作りをおこないたい

耐障害性を高めたい変更に強いシステムを

作りたいとりあえず

MSA 化が必要

Docker を導入したい

何のためのマイクロ・サービス?

マイクロサービス

一番だめなパターン

とりあえずMSA 化が必要

Docker を導入したい

マイクロサービス

いち早くサービスを提供したい

柔軟にスケールさせたい

独立したサービス作りをおこないたい

MSA でなくてもできません?

マイクロサービス

耐障害性を高めたい(回復性を高める)

変更に強いシステムを作りたい

MSA が有効( 寺田の所感 )

https://jaxenter.com/microservices-trends-2017-survey-133265.html

既存サービスを

マイグレーションする

新規サービスで

導入導入済み

予定なし

12 Factor App

Reactor Manifest

組織作り

TDD

Agile

継続的インテグレーション

Infrastructure as Code

継続的デリバリ

https://12factor.net/ja/

© 2017 Microsoft Corporation. All rights reserved.

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

ちょっと宣伝させてください

Azure Container Service

クラウド・ネイティブなスケーラブル・アプリ開発のために

https://12factor.net/ja/

はじめに

Java SE の現在と将来

Java EE の現在と将来

ソースコード管理

ソースコード管理

どのようなソースコード管理 してます?

複数のモジュールを

1レポジトリで管理

サービス毎にレポジトリを作成しましょう

サービス毎の履歴管理や

把握が容易に !!

はじめに

Java SE の現在と将来

Java EE の現在と将来

どうやって実装?

今までの Web アプリケーション

ビジネス・ロジック

ビューとロジックを分離

ビジネス・ロジック

RESTful Web Services

JSON

Stateless

UI とバックエンド・サービスの分割

UI

Face Detect

warファイル

Emotional

UI サービス

Face Detect

Emotional

はじめに

Java SE の現在と将来

Java EE の現在と将来

並列処理非同期ノンブロッキング

同期?非同期?

Service C

Service C

Service C

Load Balancer

APIGateway

待ちによるスレッドの滞留を防ぐ

はじめに

Java SE の現在と将来

Java EE の現在と将来

共有ライブラリ

共有ライブラリ呪縛から解放されません?

顧客管理 受注管理 物流管理 売り上げ管理

商品管理 レコメンド 顧客分析 経営分析

共有ライブラリ

共有ライブラリ

顧客管理 受注管理 物流管理 売り上げ管理

商品管理 レコメンド 顧客分析 経営分析

共有ライブラリにバグがみつかった!!

えっ?!全部再テスト?

追加機能に影響が!!

リリース・スケジュール延期!!

顧客管理

受注管理

商品管理

レコメンド

共有ライブラリ

ライブラリ

顧客管理

ライブラリ

商品管理

ライブラリ

受注管理

ライブラリ

レコメンド

バグがみつかった!!

v1

顧客管理

v1

受注管理

v2

顧客管理

ビルド

プライベートレポジトリ建てましょう

https://youtu.be/Wj4yQpDxe_k

ライブラリ v1

商品管理

ライブラリ v2

レコメンド

ライブラリ v1

物流管理

ライブラリ v2

売り上げ管理

共有ライブラリ依存から脱却しましょう

はじめに

Java SE の現在と将来

Java EE の現在と将来

リソース設定を柔軟に !!

どこでも動くアプリを心掛けましょう

外部リソースの設定

サービス

JDBC メッセージ

プログラム?XML?

https://youtu.be/LVo_6AdC4wQ

はじめに

Java SE の現在と将来

Java EE の現在と将来

ビルドリリース実行

Build Release Run

$ mvn clean package

$ docker build .

$ mvn deploy

$ docker push

$ java –jar App.jar

$ docker run

https://youtu.be/e7hIwW9c4Es

https://youtu.be/N52zkq4hsFg

$ deis releases -a lonely-jokester=== lonely-jokester Releases

v6 2017-04-26T14:41:41Z yoterada added DATABASE_URL

v5 2017-04-26T14:27:08Z yoterada rolled back to v2

v4 2017-04-26T14:09:56Z yoterada changed healthcheck

info for proc type cmd

v3 2017-04-26T14:09:03Z yoterada added healthcheck

info for proc type cmd

v2 2017-04-26T12:29:44Z yoterada deployed 545623c

v1 2017-04-26T12:26:01Z yoterada created initial

release

$ deis rollback v2 -a lonely-jokester

Rolling back to v2... done, v5

$ deis releases -a lonely-jokester

=== lonely-jokester Releasesv5

2017-04-26T14:27:08Z yoterada rolled back to v2

V4 2017-04-26T14:09:56Z yoterada changed healthcheck

info for proc type cmd

V3 2017-04-26T14:09:03Z yoterada added healthcheck

info for proc type cmd

V2 2017-04-26T12:29:44Z yoterada deployed 545623c

V1 2017-04-26T12:26:01Z yoterada created initial

release

はじめに

Java SE の現在と将来

Java EE の現在と将来

廃棄容易性

起動時間の最小化

不意な停止に対応

素早い起動・停止

https://youtu.be/oXk4-LkQOfA

$ deis autoscale:set cmd

--min=3 --max=8 --cpu-percent=75 -a

lonely-jokesterApplying

autoscale settings for process type cmd

on lonely-jokester... Done

$ deis autoscale:list -a lonely-jokester

=== lonely-jokester Autoscale

--- cmd:

Min Replicas: 3 Max Replicas: 8 CPU: 75%

はじめに

Java SE の現在と将来

Java EE の現在と将来

自己完結型アプリケーション

自己完結で軽量に動くアプリにポートバインディングを通してサービスを公開

https://youtu.be/ag4edz5ff-Q

はじめに

Java SE の現在と将来

Java EE の現在と将来

開発・本番一致

開発と本番環境の環境は統一しましょう

開発環境 テスト環境 本番環境

Java JDK 8 u121 JDK 8 u72 JDK 8 u20

Ruby 2.3.0 2.2.4 2.2.4

MySQL 5.6 5.5 5.5

OS Win/Ubuntu RedHat RedHat

開発と本番環境の環境は統一しましょう

開発環境 テスト環境 本番環境

Java JDK 8 u121 JDK 8 u121 JDK 8 u121

Ruby 2.4.1 2.4.1 2.4.1

MySQL 5.7 5.7 5.7

OS Ubuntu Ubuntu Ubuntu

ホット・デプロイから継続的デプロイ

すべての変更を自動的に本番での検証

• Feature Flag

• Blue/Green Deploy

• A/B Test

• Canary Test

• Red/Black

Feature Flag

はじめに

Java SE の現在と将来

Java EE の現在と将来

運用・監視ログ

はじめに

Java SE の現在と将来

Java EE の現在と将来

さいごに

おきないように頑張る ?

起きても大丈夫なように作る?

障害はおきる!!

分散コンピューティングの落とし穴

誤った考えかた

https://blogs.oracle.com/jag/resource/Fallacies.html

分散コンピューティングを意識したシステム開発

どこで障害が発生する?仮想 IP

LB

App Server

ハートビート

HA-Cluster

ハートビート

仮想 IP

今だから再び !!オススメの一冊

マイクロ・サービス

Face API

Emotion API

Bot Framework

Azure Managed MySQL

VSTS

DEIS

Kubernetes

Azure Container Services

12 Factor App

Git Maven

Nexus 3

Payara Micro

Docker

Java

https://aka.ms/deis-k8s-acs

Microsoft OSS

セッションアンケートにご協力ください

専用アプリからご回答いただけます。

decode 2017

スケジュールビルダーで受講セッションを登録後、アンケート画面からご回答ください。

アンケートの回答時間はたったの 15 秒です!

Ask the Speaker のご案内

本セッションの詳細は『Ask the Speaker Room』各コーナーカウンタにて

ご説明させていただきます。是非、お立ち寄りください。

© 2017 Microsoft Corporation. All rights reserved.

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

はじめに

Java SE の現在と将来

Java EE の現在と将来

データベース連携

顧客管理 受注管理 物流管理 売り上げ管理

商品管理 レコメンド 顧客分析 経営分析

企業システム DB

顧客管理サービス

顧客管理 DB

受注管理サービス

受注管理 DB

物流管理サービス

物流管理 DB

売上管理サービス

売上管理 DB

JDBC 接続プール

JDBC 接続プール

JDBC 接続プール

JDBC 接続プール

受注管理サービス

顧客管理 DB

物流管理サービス

物流管理 DB

JDBC 接続プール

JDBC 接続プール

顧客管理 DB 物流管理 DB

受注管理サービス

物流管理サービス

JDBC 接続プール

JDBC 接続プール

受注完了

メッセージング・システム

メッセージ連携

受注発生

イベント処理

はじめに

Java SE の現在と将来

Java EE の現在と将来

その他

メッセージ駆動 (Message Driven)Consumer-Driven Contracts

https://github.com/DiUS/pact-jvm

top related