20150421 qcon tokyo 2015 azureが切り開く新時代のソフトウェア開発・設計
TRANSCRIPT
自己紹介
上坂貴志(うえさかたかし)
株式会社ネクストスケープ
エヴァンジェリストアーキテクトScrumMaster
東京出身、43歳
最近の話題
今更Androidに入門、IoTおもしろい
目がけいれんする、揚げ物食べられない辛さ
2015 02 デブサミ登壇2015 02 SanSan勉強会発表
最近記事書いてないなー書く暇ないなー
会社紹介
配信ソリューション
Microsoft Azure導入支援
DRMソリューション(PlayReady)
システム・インテグレーション
Sitecore(CMS)導入支援
Microsoft Azure パートナーアワード SI部門
3年連続受賞
でも時代は変わった!
クラウドの登場
スケールアップ=後からのサーバー増強が可能
スケールアウト=後から大量処理が可能
膨大なストレージ
サーバのEOSはもうない!
Windows 2008 Server 2008~2020
Windows 2012 Server 2012~2023
Windows Server vNext 2015?~
※Windows Server の EOS
長く使い続けるシステムを構築するために
MicroServicesは解のひとつ
• 9つの特性(今日は解説しない)
1.システムを独立したサービスに分割
2.サービス毎に適切なプラットフォームや技術の採用
3.各サービスごとにデータを管理
4.サービスが落ちてもシステムは落とさない
5.サービスは交換可能
今日注目する特性
1.独立したサービスに分割
思ったよりサービスが大きかったみたい。役割が
多い
他と重複してる箇所がある
汎用性が大事!(予想以上に時間かかる)
どういう指針で分割したらいいのかよくわからない。サブシステム的な?とりあえずやってみる。
汎用性大事!(やっぱり時間かかる)
まずい、思ったより実装量が多い
もう一周・・・できる?
スケジュール延びる開発費膨らむ
Icon made by Freepik from www.flaticon.com
システムを分割
IF設計する
実装
あれなんか違う
仕方がない、一部は再設計だ
サービス分割の難しさ=SOA失敗の一因
商品管理システム
Domain Driven Design
一つの指針=「境界付けられたコンテキスト」
在庫 出荷
ドメイン問題領域
在庫コンテキスト
在庫
出荷コンテキスト
出荷
認証
コンテキスト解決領域
認証コンテキスト
認証巨大な泥団子
(サービス毎に)2.適切なプラットフォームや技術
サービス毎に最適なものを
大量の同時リクエスト=Node.js
高速レスポンスのストレージ=NoSQL
分析集計ドメイン=RDBMS
例えば。
一人じゃ無理!=社内に選任チームが必要
(サービス毎に)3.データの管理
各サービスがデータを持つ
データの連携にはイベント駆動アーキテクチャ
買い物サービス 請求サービス
ユーザーサービス
event raise
上顧客ユーザ↓
一般ユーザ
割引ユーザ↓
定価ユーザ
業務ロジック起動
サービス間のイベント駆動の課題
データ変更側(イベント発火側)
データ同期側(イベント通知側)
• リクエストの到達• リクエストの処理状態
• リクエストの正当性• 処理対象判定• 冪等性
イベント=非同期通信
Reactive Programming
Aサービス
Bサービス
ドメインイベント発火
時間
時間
データ変更
監視役Observable
通知受け取り役Observer
Push!
イベントを監視
サービス間のイベント駆動の実装に最適
.NETならもっと簡単!Task-based Asynchronous Pattern
async, await
4.サービスが落ちてもシステムは落とさない
巨大な泥団子
マイクロサービス
システム継続利用=キャッシュの利用
サービス復活への対応
Retry CircuitBreaker Scheduler Agent Supervisor
サービスは交換可能
Aサービス
Cサービス
新Bサービス
犠牲的アーキテクチャの適用
メリット汎用性の削除=無駄が無くなる
トレンドにあった作り直し
デメリット やりすぎると、システム劣化が早まる
Bサービス
Azure と MicroServices
Api Apps のリリース(2015/3/24)
Azure上でREST のWebApiアプリをホスト
スケーリング対応
ASP.NET、Java、PHP、Node.js、または Pythonを使用可能
公開用のメタデータはSwagger 2.0 (http://swagger.io/)
アクセス制御機能
MarcketPlaceへの公開