[Microsoft Tech Summit 2016] Linux の PaaS がついに登場! Azure App Service on Linux...
-
Upload
daiyu-hatakeyama -
Category
Technology
-
view
703 -
download
11
Transcript of [Microsoft Tech Summit 2016] Linux の PaaS がついに登場! Azure App Service on Linux...
#mstechsummit16
Linux の PaaS がついに登場 ! Azure App Service on Linux徹底解説日本マイクロソフト株式会社デベロッパーエバンジェリズム統括本部テクニカル エバンジェリスト畠山 大有
Session ID: APP011
https://www.facebook.com/dahatake/https://twitter.com/dahatake/https://github.com/dahatake/https://daiyuhatakeyama.wordpress.com/
#mstechsummit16ご自由にどうぞ !
ソーシャル撮影
#mstechsummit16本セッションの内容
• App Service on Linux を知る• 何が出来るのか ?
• App Service を本番環境で使うための知識を得る• Linux に限定せずに
• Architecture を知り、より効果的に使う
Public Preview (2016 年 11 月 2 日現在 ) 本番でのご利用は推奨されません
#mstechsummit16
#mstechsummit16
Microsoft Tech Summit
Why App Services on Linux?今の Windows 版で十分でしょ ?
#mstechsummit16
1
2
3
4
5
6
7
8
9
10
11
0 2 4 6 8 10 12 14 16 18 20 2222
33
44
566
820
時間(年)
驚異的なスピード
スマ
ート
フォ
ン
$499$10
2007
2015
単価
ドロ
ーン $100,000
$7002007
2013
単価
3D プ
リン
ター
$40,000$100
2007
2014
同程度の機能を実現する機器の単価
DNA
検査 $2.7BN
$10M$1,000
2000
2007
一回あたりの検査費用
2014
テクノロジーの製造コスト ビジネスが 10 億ドル規模に拡大するまでに要する時間
Source: World Economic Forum
#mstechsummit16
+ Agileこれまで通りの
開発・運用スタイルに加えてAgile / DevOps もサポートしたい !
OpennessWindows でも Linux でも
アプリケーションが動けばよい !
Stable運用管理はセキュリティ・
コンプライアンスもよしなにやって
#mstechsummit16
Why Linux !?Microsoft people !?
#mstechsummit16
https://feedback.azure.com/forums/169385-web-apps-formerly-websites/suggestions/8362119-support-linux-for-paas
#mstechsummit16Why Linux?
• 皆さんのフィードバック !!!• feedback.azure.com
• 移植ではない – Just it Works!• Linux じゃないと動かない Framework / binary• Ruby on Rails• Docker
• “pass too long” NPM でのエラー…• web.config• .htaccess じゃないの ?
• など…
#mstechsummit16
IaaS
PaaS
実は Linux の Azure PaaS はこれが初めてではない !
仮想マシン Container Service Azure Batch [Public Preview]
HDInsight
仮想マシンスケールセット
App Service Service Fabric[Public Preview]
#mstechsummit16
Microsoft Tech Summit
App Service on Linux
#mstechsummit16
Microsoft Tech Summit
DemoWeb App on Linux をポータルから作成
#mstechsummit16Web App のみ…
Web アプリ
ビジネスに合わせてスケールするWeb アプリ
Mobile アプリ
あらゆるデバイス向けのモバイル アプリを構築
Logic アプリ
SaaS とオンプレミスにわたるビジネスプロセスを自動化
API アプリ
クラウドで簡単にAPI を構築、利用
Functions
サーバーレスアーキテクチャによるイベント処理
#mstechsummit16
開発環境• NET, PHP, Python, Node,
Java• リモートデバッグ• DevOps ( 一部 )• ステージングデプロイのため
のサイトスロット• サイトエクステンション
ギャラリー• ブラウザーベースのエディタ• Kudu ( 一部 )• など
Web Apps Mobile Apps API Apps Functions
フルマネージ• スケールアップ、
スケールアウト• オートスケール• WW のデーターセンター• ロードバランサー• モニタリング ( 一部 ) &
アラート• Web ジョブ (WebJobs)• MySQL in App• など
Enterprise• Enterprise グレードの SLA• セキュリティと コンプライアンス• ロールベースアクセスコントロー
ル• バックアップスケジュール• カスタムドメイン、 SSL 証明書• Azure Active Directory 統合• オンプレミス統合 VNET 統合 /
ハイブリッド接続• App Service Environment• など
Logic Apps
現在は機能限定
同じ App Service の一部
#mstechsummit16
2) Repository
1) 開発
4) Deploy (staging)
5) テスト
7) 監視
3) Build 6) Publish ( スワップ )
DevOps 対応も強く意識 !
Azure App Service を使用したアジャイル ソフトウェア開発 : https://azure.microsoft.com/ja-jp/documentation/articles/app-service-agile-software-development/
#mstechsummit16
OS
今の主要戦士たち5.6.237.0.64.4.7, 4.5.06.2.2, 6.6.02.4.18
16.04 LTS / 64bit
Web
Languageポータルの表記は7.0.8 ですが…
#mstechsummit16そもそも 出来ない事 !
• 管理者権限なし• アプリケーションのインストール• No Sudu !!!
• マルチテナント環境• Port / Web Socket の制限• Express Route VPN との併用
PaaS ゆえの制限
#mstechsummit16
Microsoft Tech Summit
皆さんの手足となるためのツール や サービス
#mstechsummit16状態を知るためのツール / サービス
• コマンドライン• 繰り返し実行 / 自動化• サーバー構築・削除• アプリケーション / 設定ファイルの Deploy
• ログ出力• このために設定がある !
• 監視• 設定したキャパシティの妥当性確認
#mstechsummit16ファイル構造 と ログ出力
• ファイルシステム• /home• Azure Blob にマップ。インスタンス間で共有
• それ以外 VM インスタンス毎
• ログの種類と置き場所• Azure Blob を 推奨• アプリケーションログ
• ファイルシステム• Web Server• 詳細なエラーログ• 失敗した要求のトレース
#mstechsummit16Apache への設定 ! ついにこの日が来た !
• .htaccess• 設定したい任意のディレクトリ• アクセス制御• IP フィルタリング• エラーメッセージのカスタマイズ• など…
ErrorDocument 401 /err/err401.htmlErrorDocument 403 /err/err402.htmlErrorDocument 404 /err/err404.htmlErrorDocument 500 /err/err500.html
おもてなしのサイトのための一工夫
#mstechsummit16PHP 設定
• user.ini• ルートディレクトリ
• すぐ反映させる場合は再起動• 既定では 300秒に 1 度
; Example Settings display_errors=Onupload_max_filesize=10M; OPTIONAL: Turn this on to write errors to d:\home\LogFiles\php_errors.log log_errors=On
アプリケーションログは、自分で有効にしないと出力されない !!!
#mstechsummit16
繰り返し処理にはコマンドライン !
#mstechsummit16Azure CLI 環境整備
• 事前準備• Node.js, NPM
• Microsoft Azure Cross-Platform Command Line Tools v0.10.6• 0.10.5 をアンインストールしてから
• npm install -g azure-cli• コマンドリファレンス• https://aka.ms/webapp-cli
#mstechsummit16ARM Template ではこちら…
{"type": "Microsoft.Web/serverfarms","sku": {
"name": "S1","tier": "Standard","size": "S1","family": "S","capacity": 1},
"kind": "linux", "name": "[parameters('serverfarms_dahatakeapplinux_name')]", "apiVersion": "2015-08-01","location": "Southeast Asia","properties": {
"name": "[parameters('serverfarms_dahatakeapplinux_name')]","numberOfWorkers": 1
},"resources": [],"dependsOn": []},
#mstechsummit16
Microsoft Tech Summit
DemoCLI での Web App作成 ->Git->Deploy
#mstechsummit16Azure CLI (1)
--// 1. Login Azure-- azure login -- azure group create dahatakemsts16 SouthEastAsia
--// 2. Create App Services Planazure appserviceplan list dahatakemsts16azure appserviceplan create --help--azure appserviceplan create dahatakemsts16 dahatakelinux "Southeast Asia" S2 -x true
--// 3.Create WebAppazure webapp list dahatakemsts16azure webapp create dahatakemsts16 dahatakeweb02 "Southeast Asia" dahatakelinux// Configuration WebAppazure webapp config show dahatakemsts16 dahatakeweb02azure webapp config set dahatakemsts16 dahatakeweb02 --phpversion 5.6.23
#mstechsummit16Azure CLI (2)
--// 4. Deploy Appazure webapp publishingprofile show dahatakemsts16 dahatakeweb02git clone https://[username]:[password]@dahatakeweb02.scm.azurewebsite.net .git add *git commit -m "add node.js files"git push
#mstechsummit16
#mstechsummit16Azure CLI 2.0 プレビュー !
• 簡単なインストール• POSIX互換• Open Source• 最新
Azure コマンド ライン インターフェイス (Azure CLI) 2.0 プレビューを発表 :https://blogs.msdn.microsoft.com/devamm/2016/11/01/azure-%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89-%e3%83%a9%e3%82%a4%e3%83%b3-%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%bc%e3%83%95%e3%82%a7%e3%82%a4%e3%82%b9-azure-cli-2-0-%e3%83%97%e3%83%ac%e3%83%93%e3%83%a5/
#mstechsummit16
Microsoft Tech Summit
アーキテクチャを知れば設計・運用がわかる
#mstechsummit16App Service Plan
• App Service のホスティング単位• VM に極めて近い• スケールの単位• Windows 版 と Linux 版
App Service PlanS1
Web1
Web2
S1
Web1
Web2
インスタンス : S1 x 2- Web1 x 2- Web2 x 2
#mstechsummit16App Service Plan - Web App 中心で
無料 Shared Basic Standard PremiumWeb、 Mobile、API、 API Apps 10 100 無制限 無制限 無制限
ディスク領域 1 GB 1 GB 10 GB 50 GB 500 GB 最大インスタンス数 -- -- 最大 3 最大 10 最大 50SLA -- -- 99.95% 99.95% 99.95% オートスケール -- -- -- サポート対象 サポート対象 地理的に分散したデプロイ -- -- -- サポート対象 サポート対象
VPN ハイブリッド接続 -- -- -- サポート対象 サポート対象
ステージング環境 -- -- -- 5 20 カスタム ドメイン -- サポート対象 サポート対象 サポート対象 サポート対象
SSL 証明書 -- -- SNI SSL 証明書は無制限
SNI SSL 証明書は無制限、 1 IP SSL を含む 1
SNI SSL 証明書は無制限、 1 IP SSL を含む 1
自動バックアップ (/ 日 ) -- -- -- 2 50
https://azure.microsoft.com/ja-jp/pricing/details/app-service/plans/本番はこちら
#mstechsummit16App Service Environment
• 専用環境 - Linux 版はまだ…• フロントエンド と Worker• 高スケール : Premium のみ。最大 50 の Worker• 分離 - 仮想ネットワークの中に作成する
App Service EnvironmentP1
Web1
Web2
P1
Web1
Web2
インスタンス : P1 x 2- Web1 x 2- Web2 x 2
#mstechsummit16多くの App をデプロイする際の注意点
• VM を共有• アプリの特性を考える• CPU / メモリ / Disk etc…• Network ポート数
• 一度に多くデプロイしない• CPU スパイク
• スケールアップ• 大き目
• スケールアウト• App Services Plan の追加 = 追加の VM• Traffic Manager によるスケールアウトも
• メガ環境での推奨事項• App Service Environment• プランとアプリを 1:1 に紐づける• ARM Template
Azure App Service での高密度ホスティング :https://azure.microsoft.com/ja-jp/documentation/articles/app-service-high-density-hosting/
"perSiteScaling": true
"properties": { "numberOfWorkers": "1" }
#mstechsummit16
App Service EnvironmentApp Service Plan
App Service Architecture
Azure LB
Frontend(IIS ARR)
Runtime DB(SQL
Database)
API Endpoint
Deployment Endpoint
Worker
File Server Blob
Site DB(SQL
Database)
/home
File
エンドユーザー
開発者
Blob
SQL Databaseなど
/home環境、アプリの設定
#mstechsummit16Inside Linux Worker Role
Apache + PHP
Proxy
Docker Image Repository
Site Routing
Docker Container (App)
Docker Container (App)
FrontEnd/home
Site Info
Docker Container
(SCM)/home
File Server
BlobFile
#mstechsummit16
Microsoft Tech Summit
Demo
DockerHub
GitHub Web App
#mstechsummit16普通の Docker コマンドで
docker logindocker build -t dahatake/helloruby:0.5docker ruby_helloworlddocker push dahatake/helloruby:0.5
#mstechsummit16
Microsoft Tech Summit
まとめ
#mstechsummit16
早熟にして大器晩成よ !
#mstechsummit16本気の Linux PaaS を試してください !
• 手元の Linux Web アプリ• 移植作業が不要
• Windows 版の Web App も• App Service 機能を知る
• feedback.azure.com
#mstechsummit16
Visual Studio & Azure 開発者向けオンライン イベント
Connect(); // 2016日本時間 2016 年 11 月 16 日 (水 ) 深夜
http://connectevent.microsoft.com/
#mstechsummit16
Microsoft Tech Summit
Appendix
#mstechsummit16
Microsoft Tech Summit
IaaS と PaaS の違い
#mstechsummit16IaaS が最良の場合もある
最高速の Compute
柔軟な技術の選択肢
隅々までアクセス
#mstechsummit16IaaS を本番環境で使う上の
必須知識…障害ドメイン
Blob ストレージの単一ファイルのスループット
ディスクキャッシュ
ロードバランサーIP Address 管理
可用性セット
バックアップ・リストア監視項目と閾値。そのアクション
セキュリティ監視用の別サーバー
アプリケーションのインストール
アプリケーションのリポジトリ設定済みで
運用されているため、「殆ど」考慮する必要がない
#mstechsummit16PaaS を選択する理由
メンテナンスフリー
ベストプラクティスによる安定したインフラ
新技術の取り込み
差別化のための、サービス開発へリソース投入
#mstechsummit16スケールアウト との遭遇
• やり始めると、考慮事項は増えるApp設定
ログ
開発者Web
パフォーマンス
IT Pro???
??
#mstechsummit16IaaS と PaaS は サイジング の概念が違
う• パフォーマンスと容量。そしてオンデマンドで変えられる
IaaSハードウェア リソース
PaaS処理量 : トランザクション、容
量DTU – SQL Databaseコア数、メモリ、ディスク
QPS – Azure Search
と、言いながらアプリケーションのワークロードが様々なのでApp Service は IaaS よりサイジング
#mstechsummit16
Microsoft Tech Summit
App Service 機能
#mstechsummit16多様な Deploy 方法をサポート
• ftp• 既存の FTP を使ったワークフロー
• Git (local)• GitHub• Source Code Control• Continues Integration
#mstechsummit16機能限定だけど Kudu あり !
• Kudu: Git デプロイメント、サイト管理、デバッグ等の機能を提供• Kudu ダッシュボードへのアクセス
※ scm (Site Control Manager)
• Environment 情報• Debug Console• Process Explorer• Diagnostic dump, Log stream,
WebJobs dashboard, Web hooks• Download deployment script• Site Extensions
https://{ サイト名 }.scm.azurewebsites.net
#mstechsummit16Session Affinity
• State 管理• デフォルト – ON• ユーザーは同じサーバーに
• Off
#mstechsummit16ファイルシステムの
ローカルキャッシュ• Local Cache• ファイル読み書きの高速化• ファイルサーバーリブート影響回避• デフォルトはオフ• WEBSITE_LOCAL_CACHE_OPTION = Always• 読み書き設定
• 大事なファイルは置かない• VM再起動でクリアされる
• サイズ上限 : 300MB@Web App• 最大 1GB
App Service PlanWorker
File ServerBlobFile
/home
/home
DriveMapping +
Local Cache
Azure App Service のローカル キャッシュの概要 :https://azure.microsoft.com/ja-jp/documentation/articles/app-service-local-cache/
#mstechsummit16進化するドキュメント
リソース正常性• [問題の診断と解決 ] が最強 !• [ リソース正常性 ] から
[ トラブルシューティングツール ]
ドキュメントとツールの一体化 !
#mstechsummit16スロット
• Continuous Deployment – Linux 版はまだ…• Source Code の Repository は Staging と紐づけ• 最後にうまくいった環境もとっておく• Production• Staging• Last Known Good
#mstechsummit16スワップ
Production Staging
Last Known Good
Source Code Repository
#mstechsummit16スワップ
Old Productio
n
New Productio
n
Last Known Good
Source Code Repository
#mstechsummit16スワップ
Old Productio
n
New Productio
nNew
Staging
Source Code Repository
#mstechsummit16
Microsoft Tech Summit
App Service だけで頑張らない !Azure 関連サービス群
#mstechsummit16Web + Mobile のサービス群
• コンテンツ関連が多い• CMS/EC のホスティング
• Redis Cache – キャッシュ• CDN – グローバルスケール
• Search – 全文検索エンジン
• Media Services – 映像 /音声
#mstechsummit16キャッシュ #1: Azure Redis Cache
• メモリの KVS• 複雑なデータ構造(文字列、バイナリデータ、
リスト、集合、ハッシュなどを)を保存• データをディスクに定期的に保存• トランザクション、クラスタリング• 様々な言語に対応したクライアントライブラリ• .NET – StackExchange• Java – Jedis• PHP – Predis• Python – redis.py• http://redis.io/clients
#mstechsummit16アプリケーションパターン
• DB へのコールをキャッシュ 性能改善とスケーラビリティ Redis の STRING データ型を使ってステートメントの結果を保持• DB へのコールを避ける
ユーザーセッション、ショッピングカート、カウンター、ランキング等、 RDBMS で保持する必要がない情報
Redis の STRING やハッシュを利用する場合
Azure Redis CacheRedis プロトコル
Java .NET…
TDSAzure
SQL DB
#mstechsummit16キャッシュ #2: Azure CDN
• 読み取り処理に関して、効率的にサーバーを増やせる
サーバー台数最小化 グローバル展開
CPU 、ストレージの料金不要
パフォーマンス、高可用性
#mstechsummit16インターネットへの直接配信
Azure
#mstechsummit16CDN を用いた配信
Azure
#mstechsummit16Azure CDN = マルチ CDN
• 地球規模のスケール、高パフォーマンス、高セキュリティ• キャパシティ管理の簡素化とコスト削減• One-Stop サービス
• A
• Akamai と Verizon
• 分析用ツール、 API と開発者ツール• Pop の場所• https://azure.microsoft.com/en-us/documentation/articles/cdn-pop-locations/