Azure Traffic Managerを解説 【シリーズ Azureサービスいちから紹介】

ナレッジコミュニケーションの大柳です(@oyngtmhr)

16日目はAzure Traffic Managerです。DNSレベルでアクセスを制御することで、可用性やレスポンスを向上させることができます。

概要

Azure Traffic Managerは、あるエンドポイントへのアクセスを、DNSを使って複数のエンドポイントにトラフィックを分散することができます。

機能

・ルーティング方法

4つののルーティング方法があります。

優先順位:エンドポイントに1~1000の優先度をつけてルーティングを行います。トラフィックは優先度が最小のエンドポイントに振り分けられます。最優先のエンドポイントが利用不可になった場合は、次に優先度の小さいエンドポイントに振り分けられます。Active-Standby構成のようなイメージです。

重み付け:エンドポイントに1~1000の重みをつけてルーティングを行います。トラフィックは重みに応じた確率で各エンドポイントに振り分けられます。アプリケーションのリリース時に、特定のエンドポイントにまずリリースを行い、重みを小さくしておくことで、リリースの影響を見ながら、段階的にリリースを進める、といった使い方が可能です。

パフォーマンス:ネットワーク上の応答時間が最も短いエンドポイントに振り分けを行います。ユーザは自分から見て最もパフォーマンスの高いエンドポイントにアクセスすることができます。

地理的:地理的に最も近いエンドポイントに振り分けを行います。エリアはリージョン、国、州の粒度を設定できます。

・自動フェールオーバー

Traffic Managerでは、エンドポイントを定期的に監視します(デフォルトは30秒)。許容回数(デフォルトは3回)以上、正常な応答がない場合は、障害状態と判断し振り分けを止めます。なお、すべてのエンドポイントが障害状態になった場合は、エンドポイントを返さないよりはいいという考えのもと、Traffic Managerはすべてのエンドポイントがオンラインであるかのように応答します。

・入れ子になったTraffic Managerプロファイル

Traffic Managerの下にさらに入れ子にしてTraffic Managerに振り分けることもできます。以下の図のようにパフォーマンス重視のルーティングで最も近いエンドポイントに振り分けて、振り分けられたエンドポイントではリリースにあわせて重み付けルールでTraffic Managerにより振り分けることができます。

https://docs.microsoft.com/ja-jp/azure/traffic-manager/traffic-manager-nested-profiles から引用

・エンドポイント

エンドポイントには以下の3つが利用可能です。

Azureエンドポイント :Azureで提供されるサービス。
外部エンドポイント:Azure外のオンプレミスサーバや外部プロバイダーのサービス。
入れ子になったエンドポイント:Traffic Managerの下にさらにTraffic Managerを入れ子に配置する。

その他

・ルーティング方法はオンラインで変更でき、変更は1分以内に適用される。

・Traffic View(プレビュー)でルーティング統計情報を確認もできる。

料金

・受信したDNSクエリの数に100万クエリ単位で課金されます。

・監視したエンドポイントの数に対して課金されます。Azure内部と外部のエンドポイントでは外部の方が料金が高いです。

まとめ

DNSを使用した負荷分散を柔軟にできます。可用性やパフォーマンスの向上、重み付けによる段階的リリースなど様々なケースで使えて利用シーンも広がりそうです。


Azure ExpressRouteを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の14日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

14日目はAzure ExpressRouteです。

概要

Azure ExpressRouteは、専用線を利用してAzureデータセンターと自社データセンター、オンプレサーバを接続することができるサービスです。インターネットを経由しないので、安定した品質の回線で、機密情報などの情報を安全にAzureデータセンターと通信することができます。

機能

・接続モデル

3つの接続形態があります。

CloudExchangeでのコロケーション(同一場所配置):データセンターに配置されたネットワーク機器から専用線を介してAzureと通信する。
ポイント間(ポイント・ツー・ポイント)のイーサネット接続:自社のオフィスやデータセンターから専用線を介してAzureと通信する。
Any-to-Any(IPVPN)接続:IPVPN網を介してAzureと通信する。

https://docs.microsoft.com/ja-jp/azure/expressroute/expressroute-connectivity-models#CloudExchange から引用

また、利用するサービスに合わせて3つの経路が提供されます。

Microsoftピアリング:Office 365やDynamics 365などのサービスにプライベートなネットワークでアクセスできます。
Azureパブリックピアリング:Azure Storage、SQL Databaseなど、パブリックIPでアクセスするサービスと通信できます。
Azureプライベートピアリング:Azureの仮想ネットワーク内にある仮想マシンやサービスと通信できます。

https://docs.microsoft.com/ja-jp/azure/expressroute/expressroute-circuit-peerings から引用

・回線
50Mbps、100Mbps、200Mbps、500Mbps、1Gbps、2Gbps、5Gbps、10Gbpsの回線速度が提供されます。
日本国内では東京と大阪で以下のプロバイダーを利用できます。

東京:Aryaka Networks、AT&T NetBond、British Telecom、Colt、Equinix、Internet Initiative Japan Inc. - IIJ、Level 3 Communications、NTT Communications、Softbank、Verizon
大阪:Equinix、Internet Initiative Japan Inc. - IIJ、NTT Communications、NTT SmartConnect、Softbank

・冗長性

ExpressRoute回線はルーター間で二重化されています。
さらなる冗長性が必要な場合は、異なるプロバイダーの回線を使用して二重化したりIPVPNを組み合わせた二重化も可能です
いろんなパターンの接続ができます。Tech Summit 2017のセッション「CLD015 百戦錬磨のAzureアーキテクトが語る、Azure Virtual Machines設計の勘所」の資料が分かりやすかったのでリンクを載せておきます。

https://www.slideshare.net/Microsoft_TechSummit_2017/japan-tech-summit-2017-cld-015/31 から引用

その他

・接続を壊さずにExpressRoute回線の帯域幅を増やすことができます。でも減らすことはできない。

・ExpressRoute Premiumアドオンを追加すると機能がさらに強化できる。ルート上限が増えたり、ExpressRouteからすべてのリージョンにアクセスできたりするようになる。

料金

・無制限データプランと従量制課金データプランがある。Premiumアドオンを使う場合にはさらに費用が上乗せになる。

・無制限データプランは、ExpressRoute回線は月額料金が課金され、受信・送信ともデータ転送量に応じた課金はない。

・従量制課金データプランは、ExpressRoute回線は月額料金が課金され送信データにGB単位で課金されます。受信は無料。

・従量課金制の場合の、データ転送料金は地域によって異なる。ゾーン1では2.55円/GB、ゾーン2では5.10円/GB、ゾーン3では14.28円/GB。日本はゾーン2。
ゾーン 1: 米国西部、米国東部、米国中北部、米国中南部、米国東部 2、米国中部、西ヨーロッパ、北ヨーロッパ、カナダ東部、カナダ中部
ゾーン 2: 東アジア、東南アジア、オーストラリア東部、オーストラリア南東部、東日本、西日本、韓国中部、韓国南部、インド南部、インド西部、インド中部
ゾーン 3: ブラジル南部

まとめ

Azureを使いたいけどインターネットを使った通信は機密情報があるからちょっと、という場合にExpressRouteを使えば、セキュアに、高品質な回線を利用して通信を行うことができます。例えば、Azure Stackを自社データセンターにおいて、Azureデータセンターとの間はExpressRouteでつなぐ構成などが、これからますます増えていきそうです。


Azure Content Delivery Networkを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の12日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

12日目はAzure Content Delivery Networkです。その名の通り、コンテンツ・デリバリー・ネットワークです。AkamaiやCloudFlare、クラウドだとAWSのCloudFrontが良く知られています。
世界中に分散されたエンドポイントにWebサイト、画像、動画などのコンテンツを配置することで、世界中のどこからアクセスしても、低レイテンシで快適にWebサービスを利用することが可能になります。

概要

Azure Content Delivery Networkは、Microsoft Azureが提供するコンテンツ・デリバリー・ネットワーク(CDN)です。

CDNにコンテンツをキャッシュすることが3つのメリットがあります。

・ユーザに近いところにコンテンツを配置することで、読み込みにかかる時間を小さくして、サービスの操作性を改善する。
・イベント実施時、大きなニュースの発表など際の瞬間的高負荷に対応したスケーリングができる。
・コンテンツをエッジサーバーから配信することにより、配信元サーバなどへのトラフィックを削減する。

Azure CDNはAkamaiとVerizonから提供され、目的や配信する地域に合わせて2社を選ぶことができますか

サービスとしては、以下の3つが提供されます。

・Azure CDN Standard from Akamai
Akamaiが提供。動画などのストリーミング配信にも対応する。

・Azure CDN Standard from Verizon、Azure CDN Premium from Verizon
Verizonが提供。独自ドメインのHTTPSでの配信にも対応する。Premiumになると、ルールエンジンによるURL書替などの処理、リアルタイム統計情報も提供される。

それぞれで提供されるサービスの違いは以下のようになります。

Azure Portalの「CDNのプロファイル」画面から引用

機能

・オリジン

Web Apps、Storage、Cloud Services、Media ServicesなどのAzureサービスに加えて、カスタムオリジンもサポートしており、任意の仮想マシンやオンプレ環境のリソースもCDNで配信させることができます。

https://blogs.msdn.microsoft.com/windowsazurej/2015/06/14/azure-cdn/

・圧縮

CDNでオブジェクトを圧縮して容量を削減してクライアントに配信することも可能です。圧縮を有効にすると、オリジンですでに圧縮されている場合は、CDNは圧縮したままスルーして配信し、未圧縮の場合はCDNで圧縮して配信します。圧縮するファイルタイプを指定することもできます。ただし、Azure CDN from Verizonの場合は128バイトより大きく1MB未満のファイルのみが圧縮されます。
圧縮を有効にした場合、Azure CDN from Akamaiは通常は反映は1分以内で完了、Azure CDN from Verizonは通常は反映は90分以内で完了します。

https://docs.microsoft.com/ja-jp/azure/cdn/cdn-improve-performance

・トークン認証

参照元、IPアドレス、有効期限などの条件を埋め込んだトークンを発行してCDNにアクセスさせることで、特定の許可された利用者にのみコンテンツを参照させることが可能です。Azure CDN Premium from Verizonでのみ対応しています。

https://docs.microsoft.com/ja-jp/azure/cdn/cdn-token-auth

・キャッシュの消去

TTLを待つことなく、エッジノードのキャッシュを手動で削除(Purge)することができます。CloudFrontでいうところのInvalidationです。エッジ上のキャッシュ削除には、Azure CDN from Verizonで約2~3分、Azure CDN from Akamaiで約7分かかります。

https://docs.microsoft.com/ja-jp/azure/cdn/cdn-purge-endpoint

・資産の事前読み込み

大量の更新やアクセス増加が見込まれる場合に、事前にエッジノード上にコンテンツをキャッシュとしてロードすることもできます。 Azure CDN from Verizonのみのサービスになります。

https://docs.microsoft.com/ja-jp/azure/cdn/cdn-preload-endpoint

その他

・ワイルドカードによるキャッシュ消去は、Azure CDN from Akamaiではサポートされていない。

・クエリ文字を含むURLは、クエリ文字列を無視する、クエリ文字列のあるリクエストはCDNエッジノードでキャッシュさせない、一意なクエリははキャッシュする、の3つのキャッシュ方法を選択できる。

・カスタムドメインもサポートする。

・DDoS攻撃に対する防御機能も有する。

料金

・転送量(GB単位)に応じて、ゾーンごとに定められた料金が課金されます。

・ソーン割り当ては以下の通り。
ゾーン 1: 北米、ヨーロッパ、中東およびアフリカ
ゾーン 2: アジア太平洋 (日本を含む)
ゾーン 3: 南米
ゾーン 4: オーストラリア
ゾーン 5: インド

・転送量は、南米→インド→オーストラリア→アジア太平洋(日本を含む)→北米・ヨーロッパ・中東およびアフリカの順に高い

まとめ

クラウドベンダから提供されるサービスは手軽に設定できる一方で、設定項目に制約があって痒いところに手が届かない、ということもありますが、Azure CDNの場合はかなり細かいところまで設定できそうです。また、AkamaiとVerizonがベースになっているので、もともとこれらのCDNを使っていた場合はとっつきやすく、Azureに移行することでポータルから管理も統一することができ、運用や管理面のコストが省けて良いのではないかと思います。


Azure Database for PostgreSQLを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の10日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

10日目はAzure Database for PostgreSQLです。昨日紹介したAzure Database for MySQLとほぼ同じ基盤を使っています。

概要

Azure Database for PostgreSQLは、クラウドで提供されるマネージド型のPostgreSQLデータベースです。
データベースへのパッチ適用、バックアップ、監視、セキュリティ、フェールオーバー等のもろもろをAzureがよしなにやってくれます。既存のオンプレをクラウドのマネージドサービスにに移行することで、管理の手間を減らすことができます。
2017年12月7日時点では、パブリックプレビューのステータスです。

・データベース

PostgreSQL 9.6.2とPostgreSQL 9.5.7が利用可能です。
PostgreSQL拡張機能が主要なものはサポートされていますが、ユーザが独自で作成することはできません。
サポートされる拡張機能の一覧は以下にあります。

https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-extensions

・リソース・性能

価格レベルと呼ばれる3つのレベルがあり、さらに各価格レベルの中で、コンピューティングユニットと呼ばれる処理性能を選択できます。

価格レベルは、Basic、Standard、そしてPremiumの3つのレベルがありますが、プレビューではPremiumは2017年12月8日時点では利用できません。

Basic:IOPS保証なしの小規模なワークロード向けです。開発環境や小規模なアプリケーションやWebサイトに向いています。
Standard:高スループットのIOPSが保証されます。中規模以上のWebアプリケーションや分析アプリケーションに向いています。
Premium:大量のトランザクションと低レイテンシが必要なワークロードに最適です。同時実行ユーザーが多く、低レスポンスが要求される、いわゆるミッション・クリティカルなアプリケーションに向いています。プレビュー段階では利用できません。


https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-service-tiers から引用

コンピューティングユニットは、CPU処理性能の測定値で、CPUとメモリリソースの組み合わせです。
100個のコンピューティングユニットが1つのコアに相当します。またメモリ量はコンピューティングユニット数に比例して増えます。
同じコンピューティングユニット数でも、Basicに比べてStandardは2倍のメモリが提供されます。メモリに余裕があるため、クエリを高速に、多数の同時実行数で処理することができます。

・高可用性

ハードウェア障害などでデータベースノードに障害が発生した場合には、Azure内部でフェールオーバーされます。切り替えに伴い、数十秒データベースが中断しますが、ユーザのアプリケーション側での接続先の切り替え等は必要はありません。

・バックアップ

自動バックアップが5分おきに取得されます。バックアップの保持期限はBasicが7日、Standardが35日です。バックアップを使って新しいサーバを作ることで、過去のある時点のデータベース状態に復元することができます。

・セキュリティ

SQL Databaseと同じように許可IPのホワイトリストをAzure Portalから、「サーバー ファイアウォールの設定」から定義できます。

その他

・Standard同士など、同じ価格レベル内でのコンピューティングユニット数の変更は可能(数十秒程度の処理中断あり)。BasicからStandardのように異なる価格レベルへの変更はできない。

・サーバーログは、Azure PortalとAzure CLI、Azure REST APIを使用して、一覧表示およびダウンロードできます。ログの保存期間は既定値は3日間、最大7日間に設定できます。ログのローテーションは、1時間ごとか100MBごとのどちらか早い方のタイミングで行われます。

・マイナーバージョンアップは自動管理される。パブリック プレビュー段階では、メジャー バージョンのアップグレードはサポートされない。PostgreSQL 9.5 から PostgreSQL 9.6へのアップグレードはできない。

・プレビューでは、既存のサーバー上のストレージサイズの変更はできない。サーバー作成時にストレージ容量を選択する。

料金

・現在はプレビュー料金となっているため、今後価格が変更される可能性があります。

・Basicはコンピューティングユニット50と100が選べます。ストレージは50GBを標準で含み、以降はGB単位で課金されます。

・Standardはコンピューティングユニット100/200/400/800が選べます。ストレージは125GBを標準で含み、以降はGB単位で課金されます。ストレージが増えるとGBごとにIOPSも3ずつ増えていきます。

・Premiumは未公開。

まとめ

仮想マシンはAzure Database for MySQLと同じものを使っているようで、価格レベルやコンピューティングユニット数の組み合わせは同じです。プレビュー版ということもあり、SQL Databaseと比べると不足している機能もありますが、今後の機能追加と早い時期に正式サービスとなることを期待したいと思います。


Azure Database for MySQLを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の9日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

9日目はAzure Database for MySQLです。データベースは、メインフレーム系からExadataまでいろいろやってきたので好きな分野のひとつです。

概要

Azure Database for MySQLは、クラウドで提供されるマネージド型のMySQLデータベースです。
データベースへのパッチ適用、バックアップ、監視、セキュリティ、フェールオーバー等のもろもろをAzureがよしなにやってくれます。OSSで多くのシステムで使われているMySQL。既存のMySQL環境からクラウドに移行することで、管理の手間を減らすことができます。
2017年12月7日時点では、パブリックプレビューのステータスです。

・データベース

InnoDBエンジンを使用したMySQL Community Editionが利用できます。MySQL 5.6.35とMySQL 5.7.18が利用可能です。

・リソース・性能

価格レベルと呼ばれる3つのレベルがあり、さらに各価格レベルの中で、コンピューティングユニットと呼ばれる処理性能を選択できます。

価格レベルは、Basic、Standard、そしてPremiumの3つのレベルがありますが、プレビューではPremiumは2017年12月8日時点では利用できません。

Basic:IOPS保証なしの小規模なワークロード向けです。開発環境や小規模なアプリケーションやWebサイトに向いています。
Standard:高スループットのIOPSが保証されます。中規模以上のWebアプリケーションや分析アプリケーションに向いています。
Premium:大量のトランザクションと低レイテンシが必要なワークロードに最適です。同時実行ユーザーが多く、低レスポンスが要求される、いわゆるミッション・クリティカルなアプリケーションに向いています。プレビュー段階では利用できません。


https://docs.microsoft.com/ja-jp/azure/mysql/concepts-service-tiers から引用

コンピューティングユニットは、CPU処理性能の測定値で、CPUとメモリリソースの組み合わせです。
100個のコンピューティングユニットが1つのコアに相当します。またメモリ量はコンピューティングユニット数に比例して増えます。
同じコンピューティングユニット数でも、Basicに比べてStandardは2倍のメモリが提供されます。メモリに余裕があるため、クエリを高速に、多数の同時実行数で処理することができます。

・高可用性

ハードウェア障害などでデータベースノードに障害が発生した場合には、Azure内部でフェールオーバーされます。切り替えに伴い、数十秒データベースが中断しますが、ユーザのアプリケーション側での接続先の切り替え等は必要はありません。

・バックアップ

自動バックアップが5分おきに取得されます。バックアップの保持期限はBasicが7日、Standardが35日です。バックアップを使って新しいサーバを作ることで、過去のある時点のデータベース状態に復元することができます。

・セキュリティ

SQL Databaseと同じように許可IPのホワイトリストをAzure Portalから、「サーバー ファイアウォールの設定」から定義できます。

その他

・Standard同士など、同じ価格レベル内でのコンピューティングユニット数の変更は可能(数十秒程度の処理中断あり)。BasicからStandardのように異なる価格レベルへの変更はできない。

・サーバーログは、Azure PortalとAzure CLIを使用して、一覧表示およびダウンロードできます。ログは、最大7日間保存されます。ログの合計サイズが7.5GBを超える場合は、古いファイルから削除されます。ログのローテーションは、24時間ごとか7.5GBごとのどちらか早い方のタイミングで行われます。

・マイナーバージョンアップは自動管理される。パブリック プレビュー段階では、メジャー バージョンのアップグレードはサポートされない。MySQL 5.6から MySQL 5.7へのアップグレードはできない。

料金

・現在はプレビュー料金となっているため、今後価格が変更される可能性があります。

・Basicはコンピューティングユニット50と100が選べます。ストレージは50GBを標準で含み、以降はGB単位で課金されます。

・Standardはコンピューティングユニット100/200/400/800が選べます。ストレージは125GBを標準で含み、以降はGB単位で課金されます。ストレージが増えるとGBごとにIOPSも3ずつ増えていきます。

・Premiumは未公開。

まとめ

Azure SQL Databaseなどと同じくMySQLもAzure上でマネージドサービスとして利用できます。MySQLは手軽で使いやすく、特にOSSのプロダクトと組み合わせて使うことが多いため、管理不要で使えるのは魅力的です。プレビュー版ということもあり、SQL Databaseと比べると不足している機能もありますが、今後の機能追加と早い時期に正式サービスとなることを期待したいと思います。


IoT Centralを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の8日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

8日目はIoT Centralです。12月5日にパブリック・プレビューが開始されました。

https://japan.zdnet.com/article/35111485/

Azureサービスではないですが、IoT CentralはAzure IoT SuiteやAzure IoT Hubとも連携し、パブリック・プレビュー版を触ってみたところ面白かったので紹介していきます。

概要

IoT CentralはフルマネージドのIoT SaaSです。

IoT機器からの情報収集、蓄積、可視化、アラートなどの機能をSaaSとして提供してくれます。
Azure IoT Hubは、IoT機器がMQTT、HTTPS、AMPQPSなどのプロトコル通信するためのインフラとや端末認証基盤を提供し、Azure IoT SuiteはIoTアプリケーションのバックエンドを開発のためのカスタマイズや管理提供するPaaSでIoT Centralはこれらと連携します。

IoT Centralでは以下のような機能が提供されます。

・IoT機器の接続とデータの収集
・ダッシュボード上でのデータの可視化、分析
・ルールを設定して設定した条件が満たされるとこれをトリガーに、アラート通知などのアクションを実行

さらに詳しいことは以下のサイトで紹介されています。(英語)

https://docs.microsoft.com/ja-jp/microsoft-iot-central/overview-iot-central

パブリック・プレビュー版を使ってみた

パブリック・プレビューに登録して、基本機能を触ってみたので紹介します。

https://www.microsoft.com/en-us/iot-central/get-started/ からサインインします。

サインインすると、「Create Application」のフォームが表示されます。
アプリケーション名、利用するディレクトリ、サブスクリプション、リソースグループ、リージョンを入力します。

アプリケーションテンプレートを選択します。とりあえず試すだけなら Custom Application、Raspberry Piを実際につなぐなどSDKを使いたい場合は Sample Devkits を選ぶといいようです。今回は Custom Application を選択します。
支払プランを選びます。30日の無料枠があるのでこちらを選択します。通常だと月500ドルとなります。有償の場合には試してみるには少しお高いので、別プランを用意して使いやすくしてもらえるとよいです。[Create]を押すとアプリケーションの作成が開始されます。

アプリケーションのダッシュボード画面から Create Device Templateを選択します。

デバイステンプレート名を入力します。

表示名、単位などを入力していきます。

デバイスが作成され、何かの値が取れていることが確認できます。今回は、シミュレートされた仮想の機器のテレメトリー値が表示されています。

なお、グラフのタイプはLine、Smooth、Step、Scatterの表示が選べます。

[Rules]を選択してみます。現状ではTelemetryのみ利用可能です。機器のテレメトリーを監視してアクションを起こすことができます。今回はこれを選びます。
現状では、Coming Soonになっていますが、機器の状態変化、イベント、接続断を検知できるイベントも今後利用可能となるようです。

次の画面で閾値と条件(以上、以下など)を入力します。

アクションも設定できます。現在使えるのはEmailのみです。今後はWebhook、SMS、SAPやSalesforceなど外部システム連携、Logic Appsの呼び出し、Azure Functionsの呼び出し、Dynamics 365との連携も予定されているようです。

Emailを選ぶと、通知先のメールアドレスを指定できます。閾値、通知先とも設定してみましたが、メールは来ませんでした。シミュレータの場合は何か制約があるのかもしれません。

料金

・30日間の無料お試し期間の場合は、10台までの機器、100MBまでのデータ転送が可能です。

・有償プランの場合は、月500ドルの固定料金で100台の機器、1000MBのデータ転送が可能です。

・デバイスを追加する場合は1台0.5ドル/月、10MBのデータ転送がついてきます。

・追加のデータ転送は、1GBあたり30ドルです。

まとめ

実機での接続は試せていませんが、接続から可視化、分析まで一貫してIoT Central上で行えるので、IoTの初期構築やその後の管理の手間がかなり省けそうで、魅力あるサービスです。Raspberry Piなど実機を使って今後検証したいと思います。


Azure SQL Data Warehouseを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の7日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

7日目はAzure SQL Data Warehouseです。昨日のCosmos DBに続きデータベース系サービスです。

概要

Azure SQL Data Warehouseは、クラウドのデータウェアハウスです。データは並列に接続されたサーバで処理され、テラバイト、ペタバイト級のデータに対して短時間でクエリ結果を得ることができます。AWSでいうとRedshift、GCPだとBigQueryに相当するサービスです。

・データベース

SQL Data Warehouseはカラム型ストレージを使用してデータを格納します。データのストレージ容量を節約するとともに、クエリのパフォーマンスが改善されます。さらに並列処理により、これまで日単位の時間がかかっていたクエリが、時間単位で処理できるようになります。

・性能

分析ワークロードに最適化された2つのパフォーマンスレベルが提供されます。

弾力性パフォーマンスレベルのための最適化:
単語が分かりにくいですが、英語だとThe Optimized for Elasticity performance tierとなります。「エラスティック用に最適化」と表記される場合もあります。
コンピューティング層がストレージ層と分離されているので、コンピューティング層のスケーリングを頻繁に行うことができます。
データはコンピューティング層のローカルにはなく、ネットワーク経由でSSDストレージ上に置かれており、この大量のデータをコンピューティング層が柔軟に並列、スケールして処理していくイメージです。このレベルが最も安価で、ワークロードの大半をサポートできます。

コンピューティングパフォーマンスレベル用の最適化:
英語だとThe Optimized for Compute performance tierとなります。「計算用に最適化」と表記される場合もあります。
超高速なワークロードに適したレベルです。ハードウェアは最新のものを利用し、NVMe接続のSSDのキャッシュが提供されます。すべてのIOがコンピューティング層のローカルで行われるので、複雑なクエリをさばくことができます。サイズ制限なしでデータを格納できるように列ストアも強化されています。
同じcDWUだと、弾力性のために最適化されたパフォーマンスレベルに比較して2.5倍のメモリが提供されます。メモリに余裕があるため、クエリを高速に、多数の同時実行数で処理することができます。

https://docs.microsoft.com/ja-jp/azure/sql-data-warehouse/performance-tiers から引用

・リソース

SQL Data Warehouseのリソースは、CPU、メモリ、IOからなるData Warehouse ユニット(DWU)という単位で決定します。ユニット数を増やすほど性能は向上します。パフォーマンスレベルでDWUの測定単位は若干異なり、「弾力性パフォーマンスレベルのための最適化」ではData Warehouse ユニット(DWU)、「コンピューティングパフォーマンスレベル用の最適化」ではコンピューティングData Warehouseユニット(cDWU)で測定されます。
DWUは明示的に増減させることもできます。DWU変更を行うと、継続中のトランザクションを中止、ロールバックして一貫性のある状態を確保してから、スケーリングが行われます。完了までには数分かかります。
DWUはSQL Data Warehouseが稼働している間だけ課金されます。夜間・休日など利用しない時間にSQL Data Warehouseを停止することで、コンピューティング分の課金を節約できます。停止している場合もストレージには利用サイズに応じて課金されます。

・バックアップ

4~8時間ごとにスナップショットが作成され、7日間使用できます。また、SQL Data Warehouseでは、8時間の回復ポイントの目標(RPO)を定めており、8時間前のデータまでさかのぼって復旧できます。
geoバックアップは、1日に1回、ペアのデータセンターにSQL Data Warehouseのバックアップを保管します。geo復元のRPOは24時間です。geoバックアップからgeoペアリージョン内のサーバーに復元できます。geoバックアップは標準で有効になっています。

・セキュリティ

SQL Databaseと同じように許可IPのホワイトリストをAzure Portalから、「サーバー ファイアウォールの設定」から定義できます。
透過的データ暗号化(TDE)も設定可能です。Azure Portalから有効/無効を設定できます。

その他

・データベースエンジンはSQL Server

・データのロードにはbcpコマンドだけでなく、PolyBaseによるBlob Storageからの高速ロード、Data FactoryのGUIでのロードも可能
・データは60個ののディストリビューションと呼ばれる単位に分割して保存される。振り分け方は、ラウンドロビンとハッシュ分散が選べる

・データはPremium Storageに格納されるのでSSDで高速(だけど高い)

料金

・コンピューティングリソースはパフォーマンスレベル(エラスティック用に最適化か計算用に最適化)とDWUで課金される

・ストレージはTB単位でPremium Storage料金(12,533.76円/1 TB/月)で課金。データウェアハウス本体のデータと7日分の増分スナップショット ストレージが含まれる

・geoバックアップにはStandard Diskの読み取りアクセスのGeo冗長ストレージ(12.24円/GB/月)で課金。

まとめ

超高性能なData Warehouse環境を、Azureクラウドの力を借りて簡単に使い始めることができます。
停止中はコンピューティングリソースに課金されなかったり、ストレージIO量に課金されずコストの見通しを立てやすいことは、他社クラウドのDWHにはない強みだと思います。


Azure Cosmos DBを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の6日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

6日目はAzure Cosomos DBです。昨日のSQL Databaseに続きデータベース系サービスです。

概要

Azure Cosomos DBは、低レイテンシで、世界中のデータセンターにグローバルに分散したデータベースをクラウド上で構築できるサービスです。AWSでいうとDynamoDB、GCPだとCloud Spannerに相当するサービスです。

・データモデル
ドキュメント、グラフ、キーと値、テーブル、列指向の各データモデルを利用できます。
DocumentDB:JSONベースのデータに対してSQLクエリによる操作ができます。
MongoDB:ドキュメント指向のデータベース。名前の通りMongoDBライブラリ、ドライバー、ツール、アプリケーションと互換性があります。
Table API:Key-Value型データベースです。Storageサービスの一部だったTable StorageがCosmos DBに統合されました。
Graph (Gremlin):グラフ型データベースを提供します。
Cassandra API: Apache Cassandra実装で構築されたKey-Value型データベースです。

・グローバル分散
一部のリージョンを除いて、全リージョンに対してレプリケートできます。どのリージョンにレプリケートするか、フェールオーバー時にどのリージョンを優先的に使うかなどの設定も可能です。

・性能・スケール
Cosmos DBでは、要求ユニットという単位でCPU、メモリ、IOPSが割り当てられます。新しいコレクション、テーブル、グラフを使い始める時に、1秒あたりの要求ユニット(RU/秒) を指定します。
ストレージについては、容量の上限はありません。テーブルなどデータが作った分だけ、GB単位で課金されます。

Cosmos DBは割り当てられた要求ユニット数に基づいて、物理パーティションを割り当て、データの増加に応じてデータ分割やバランス調整を行います。
この要求ユニットですが、データベースに対する読み取り、書き込み、クエリなど操作の種類によって、消費される要求ユニット数は変わってきます。ある操作で使用された要求ユニット数は、リクエストに対するレスポンスヘッダーに含まれており、そこで確認できます。要求ユニット数に影響を与える要因は下表のようなものがあります。

https://docs.microsoft.com/ja-jp/azure/cosmos-db/request-units から引用

事前に指定した秒間の要求ユニット数を超えた場合は、操作は実行できず、超過が解消するまで待機となります。このスロットルが発生すると、RequestRateTooLargeException (HTTP状態コード 429) のレスポンスを返し、ヘッダの x-ms-retry-after-ms で待機しなければならない時間がミリ秒で返ってきます。なお、.NET クライアントSDKを使っている場合は、SDKが待機と再試行を行ってくれるため、アプリロジックでの考慮は不要になります。

・整合性レベル
5つの整合性レベルが提供されます。レベルによって、整合性、可用性、待ち時間、スループットが変わってきます。
厳密(Strong)、有界整合性制約(Bounded Staleness)、セッション(Session)、一貫性のあるプレフィックス(Consistent Prefix)、、結果的(Eventual Consistency)の順に一貫性は弱くなりますが、低レイテンシでIO性能、スループットは良くなっていきます。

https://docs.microsoft.com/ja-jp/azure/cosmos-db/consistency-levels から引用

・バックアップ
Cosmos DBは4時間ごと自動バックアップを取得し、最新2世代のバックアップが保存されます。データの破損などで自動バックアップから復旧させたい場合は、ユーザ自身の操作ではできず、8時間以内にAzureサポートに連絡する必要があります。

・セキュリティ
データはCosmos DBへの保存時に暗号化されます。ユーザで意識する必要はありません。

その他

・Strong一貫性を使用する場合は、複数のリージョン分散はできない。

・Azure Cosmos DB Emulatorというローカル マシンでCosmos DBを使ったアプリケーションの開発とテストを行うことができるツールも提供されている。AWSのDynamo DBにもDynamoDBローカルがあるけど、NoSQL系だけローカル開発ツールが提供されている理由を知りたい。 https://docs.microsoft.com/ja-jp/azure/cosmos-db/local-emulator

・要求ユニットの計算ツールも提供されている https://www.documentdb.com/capacityplanner

・インデックスの指定有無、パーティションの分割もできる模様。

料金

・データが格納されたSSDストレージにGBあたりで課金される(¥25.50 GB/月)

・予約済みの要求ユニット数(RU)に対して課金される(100RUごと、最低400R)

・他リージョンにレプリケーションを持つ場合は、リージョン数分に課金される

・レプリケーションに伴うリージョン間データ転送にも課金される。

まとめ

AWS、GCPでもグローバル分散型のデータベースは提供されますが、Cosmos DBはドキュメントDB、グラフ型DB、キー・バリュー型など様々なデータモデルを1サービスで使えるところは他クラウドにはなく魅力的です。Azure FunctionsとCosmos DBを組み合わせれば、今流行りのサーバレス構成も、すぐに構築できます。さらにMachine LearningやCognitiveサービスも組み合わせて、サーバレスでいろいろできるアプリを作ってみたいです!


Azure SQL Databaseを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の5日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

5日目はAzure SQL Databaseです。Azureにおけるデータベースサービスの中心的存在です。

概要

Azure SQL Databaseは、Microsoft SQL Serverデータベースエンジンをベースとしたデータベースシステムを提供するマネージド型のサービスです。

・リソースのサイズ

Basic、Standard、Premium、Premium RSの4つのサービスレベルが提供されます。
Basic、Standard、Premiumの順で利用可能なリソース量、自動バックアップの期間などが拡大されます。
Premium RSは耐障害性を犠牲にする代わりに、Premiumと同等の性能をコストを抑えて利用することができます。

https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-service-tiers から引用

サイズはDTU(Database Transaction Unit)という単位で定義され、CPU、メモリ、I/Oの組み合わせからなります。
DTUが大きくなるほど、コンピューティングリソースが多く使えるようになり、標準で付属するストレージ、追加できるストレージも大きくなります。後述するように、ダウンタイムを発生させずにスケールの変更ができます。

https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-technical-overview から引用

・バックアップ

Azure SQL Databaseでは、完全バックアップ、差分バックアップ、トランザクションログバックアップが自動的に実行されます。
ポイントインタイム・リストアで、自動バックアップの期間内の任意の時点への回復もサポートされます。

・可用性

アクティブgeoレプリケーションを使用すると、同じデータセンター内、または世界各地のリージョンに分散して、最大4つの読み取り可能なセカンダリデータベースを構成でき、読み取り処理の負荷分散ができます。
また、フェールオーバー・グループを使えば、障害時のグローバルスケールでの負荷分散もできます。監視やルーティング、フェールオーバーの手当は、Azure SQL Databaseが面倒を見てくれます。

・SQLエンジン

2017年12月4日時点のエンジンは以下の通りでした。


Select @@version

Microsoft SQL Azure (RTM) - 12.0.2000.8
Nov 29 2017 09:37:51
Copyright (C) 2017 Microsoft Corporation

Azure SQL Databaseがある機能に対応しているかはAzureのオンラインドキュメントに記載されたタグを確認すれば分かります。

・スケールの変更

データベースのサービスレベルやDTUをオンラインで変更できます。内部的には、新しいインスタンスサイズで元のデータベースのレプリカが作成され、レプリカにデータの移行が完了したら、接続先が新レプリカに切り替えられるようです。切り替え時間の際には、通常4秒の間、トランザクションが受けられなくなります。

・セキュリティ

不審なデータベースアクセス、潜在的な脆弱性、SQLインジェクショ攻撃、が見つかった場合に、ユーザーにアラートを通知することもできます。
透過的データ暗号化(TDE)も2017年5月以降に新しく作成されたデータベースは、自動的に適用されるようになっています。
Virtual Machineのセキュリティグループに相当する許可IPのホワイトリストもAzure Portalから、「サーバー ファイアウォールの設定」から定義できます。

その他

・スケールアップに伴うレプリカの作成にかかる時間は変更前後のデータベースのサイズとサービスレベルによって変わる。Standard同士で、250GBのデータベースなら6時間以内、Premiumサービスレベル内で250GBなら3時間以内で完了する、と公式ドキュメントより。

・メンテナンスもあると想像しているけどドキュメントから記載見つけられず。

・Data Lakeを使えばAzure Portal上でデータのロードができる。bcpコマンドも使える。データベースが動くマシンにOSログインはできないのでローカルファイルから読み込むような処理ができないのは、AWS RDSとかと同様

・単一のデータベースではなく、ある一定のプールを割り当てそこから必要なリソースを利用するエラスティックプールと呼ばれる使い方もある。エラスティックプールを利用することで、DBのコストを一定で予測可能にすることができる。

・SQL Database以外のデータベースでは、マネージド型のAzure Database for MySQLとAzure Database for PostgreSQLも提供されている。

・SQL DatabaseはDDLにも明示的なコミットが必要。OracleはDDLは暗黙コミットなので、Oracleと同じだと思い込んでいるとはまる(はまった)。

料金

・課金はサービスレベルとDTUに応じて利用した時間に対して課金される。最小構成のBasic、5DTUなら月570円。

・通常割り当てサイズを超過するストレージは1GB単位で課金される。

・アクティブgeoレプリケーションを使う場合は、マスタと同じ価格が、各レプリケーションサイトにも課金される。

・脅威検出のオプションは有料となる。60日間の無償使用期間あり。

まとめ

オンプレでのSQL Serverは、インストール、構築が大変なイメージがあり、Azure上でSQL Databaseだとすぐに手軽にデータベース環境を構築できるのはとても魅力的です。バックアップ、可用性、セキュリティなど一通りの機能も標準で提供され、手数を少なくして、ビジネス用途にも耐えうるデータベース環境を構築できそうです。


Azure Virtual Machineを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の4日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

4日目はAzure Virtual Machineです。やっとクラウドの花形サービスにたどりつきました。奥の深いサービスですが、要点を絞って解説していきます。

概要

Azure Virtual Machineは仮想マシンを提供するクラウドの中心的なサービスです。AWSのEC2やGoolge Cloud PlatformのGCEに相当します。WindowsだけでなくLinuxももちろん対応しています。

・インスタンスの種類

小規模なWebサイトなどに適した汎用的なものから、CPU性能重視、メモリ量重視、ストレージ性能重視、HPC向け(科学技術計算などのハイパフォーマンスコンピューティング)、そしてGPU搭載可能なものまで様々な用途に合わせたタイプの仮想マシンが提供されています。


https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/sizes から引用

・OSの種類

Linux系だと、Red Hat Enterprise、CentOS、SUSE Linux Enterprise、Debian、Ubuntu、CoreOS、RancherOS、FreeBSDなどが提供されます。
Windows系ではWindows Serverからwindows10、SQL Serverなどが提供されます。
Azure Marketplaceでは、機械学習パッケージを組み込んだもの、WordpressのようなCMS、最近話題のブロックチェーンを組み込んだOSイメージも提供されます。
OracleやIBMのプロダクトもあり、オンプレ環境で使っているものは、一通りなんでも揃いそうです。

・セキュリティ

Azureの仮想ディスクは暗号化することもできます。また、Azure Resource Managerポリシーを使ったセキュリティポリシーの使用、ロールベースのアクセス制御(RBAC)も可能です。

・メンテナンス

物理筐体のメンテナンスやセキュリティなどのパッチ適用によるシステムのメンテナンスはAzure Virtual Machineでも発生します。
Azureでは再起動が不要なインプレースVM移行と、再起動が必要なメンテナンスがあります。

インプレースVM移行はAzureに独特なもので、パッチなどの適用作業が再起動なしで行われるものです。Azure内部では仮想マシンがある筐体から別の筐体に移行するようですが、ユーザ側ではこれに伴い仮想マシンを停止する必要はありません。再起動なしで運用できるならいいじゃないか、と思うかもしれません。ただし気を付けないといけないのは、インプレースVM移行に伴い30秒程度マシンが一時停止することです。また、インプレースVM移行は事前に通知されず、発生後にも通知されないことです。
30秒以内の停止や遅延を許されないシステムでは多重構成にして処理継続できるよう、特別な考慮が必要です。メモリの内容などは保持されますが、システム上は30秒完全停止するので、cronで何か仕込んでるとはまりそうで怖いです(そもそもcronで定時起動させるのは最近はアンチパターンになってきてますが・・・)

【12/4追記】インプレースVM移行は、事前にインスタンスメタデータから情報を取れるとのことです。@tmak_twさん、ご指摘ありがとうございました。
https://twitter.com/tmak_tw/status/937458147177906176

一方の、再起動が必要なメンテナンスは文字通りです。事前にメンテナンス通知が来て、「セルフサービス期間」にユーザが計画的にメンテナンスを行うか、「予定メンテナンス期間」中に自動的にメンテナンスが行われるのを待つか、を選ぶことができます。

Azure で Linux VM をセキュリティで保護し、ポリシーを使用する | Microsoft Docs

https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/security-policy

・バックアップ

Azure Backupを使うと、VMのバックアップを取得でき、VM全体の復元、もしくは特定のファイルだけを復元することができます。

・Azure 予約VMインスタンス(RI:Reserver Instance)

1年、もしくは3年の契約期間で仮想マシンを割引価格で使えるリザーブド・インスタンスも利用可能です。
例えば、D1-5 v2インスタンスであれば、1年契約で57%、3年契約で71%の割引を受けることができます。
リザーブドインスタンスは12%の中途解約手数料を支払えば契約期間中の解約もでき、残り期間分は日割りで払い戻されます。


Azure Reserved Virtual Machine Instances | Microsoft Azure
https://azure.microsoft.com/ja-jp/pricing/reserved-vm-instances/

その他

・LinuxインスタンスのSSHキーペアは自身で準備する必要あり。AWSみたいにWebの管理画面上から自動生成してくれない。

・インスタンスのバリエーションは他クラウドより多いと感じる。特に多コア、巨大メモリーなどハイパフォーマンス系に強い印象。

・初めてAzure VMを構築する際には、Resource Groupやストレージアカウント、Virtual NetworkがVMの前提として必要なことを知らないと手間取る。

・インプレースVM移行は30秒以内の停止が真に許容されないシステムは世にそんなにないけど、何か地雷を踏みそうでリスクはある

・停止状態には「停止済み」と「削除済み (割り当て解除済み)」がある。OSからシャットダウンした場合は、「停止済み」状態となり、CPUコアなどは保持されるため、停止中も課金対象となる。リソースを解放して課金されないようにするには、Azure PortalかPowerShellから停止する手順が必要。

料金

・課金はVMを使った時間に対して課金。マーケットプレースでソフトウェアを調達した場合は、それも課金される。

・リザーブドインスタンス(事前予約)もあり。最大71%の割引を受けられる。

・課金単位は分単位(切り捨て)。6分45秒稼働させたら6分だけ課金される。

まとめ

Microsoft AzureなのでWindowsしか提供されないということはなく、Linuxも多くのディストリビューションに対応してますし、Oracleとかも提供されています。VMの使い勝手についてはAWSなど他社クラウドと遜色ない感じです。監視や運用自動化・省力化のためにサービスもいろいろあるようなので、別の日に取り上げたいと思います。