de:code 2日目のメモ

de:code 2017 2日目のメモ

セッションは未だ手元にスライド落としてないのであやふやかも。 メモなので、セッションの内容以外のことも書いてます。

ダウンタイムを最小に!~Azure における障害/災害に耐えうるアーキテクチャ設計のポイント~ #DI13

Azure での可用性や回復性(Resiliency)の構成のお話し

障害はいつでも起きる
ソフトのバグ、ハードが壊れる、人のミス
回復性(Resiliency) 落ちてもすぐ復旧する

  • RTO:Recovery Time Objective 目標復旧時間
    • 復旧するまでの時間
  • RPO:Recover Point Objective 目標復旧時点
    • 復旧したときにどの時点までのデータを復旧出来るか(復旧したときに最新のデータが失われて、巻き戻ってる時間)

RTO、RPO を低くするには、コストと複雑さのバランス
複雑になるし、コストも掛かるので、RTO/RPO はビジネス判断

クラウド向けの設計

  • SPOF(単一障害点)なし
  • ステートレス
  • 疎結合
  • スケールアップよりスケールアウト

MTTR(Mean Time To Repair 平均復旧時間) 障害のための設計
クラウドは一時的な障害/エラーが多い
SLA 100% ではないから回復性が大事、リトライとかもね
複合SLA、サービスを組み合わせた時は、SLA を掛け算
例:99.99 * 99.9 = 99.8…
Designing resilient applications for Azure | Microsoft Docs

シングルリージョンのリスクを許容出来なければマルチリージョン構成を検討
ペアリージョン (東日本/西日本)
ビジネス継続性と障害復旧 (BCDR): Azure のペアになっているリージョン | Microsoft Docs
どんな障害があるか?FMA(Failure mode analysis)
Failure mode analysis | Microsoft Docs

アプリはいいけど、データレプリケーションは難しい

カオスエンジニアリング 障害をエミュレートして問題ないか検証する。
クラウドのリージョンを丸ごと落とす過酷な試験を実現する「Chaos Kong」、Netflixが発表。「カオスエンジニアリング」の指針も表明 - Publickey
GitHub - Netflix/SimianArmy: Tools for keeping your cloud operating in top form. Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures.

  • 障害注入テスト
  • 負荷テスト
  • ソーク(Soak)テスト

Azure のサービスでは

  • HA(可用性):複数立てて LB。だいたいのサービスでやってる
  • DR(災害復旧):やってないサービスもある、サービスレベルで追加とか

HA が同一リージョン、DR がマルチリージョン って認識でよさげ。

Azure Storage

  • GRS
    • レプリケーションのタイミングの非一貫性
      • VM の Disk が2ファイルあって、両方の動機が取れていないと VM が立ち上がらない
      • フェールオーバーを制御出来ない
      • レイテンシの SLA がない。15分を「目標」に。実際そこまで掛かってないらしい
  • RA-GRS
    • 読み書きある場合、プライマリは強い一貫性、セカンダリの読取は結果整合性
      • 同期ではないから、セカンダリにはそのうち反映される

Azure Storage のデータ レプリケーション | Microsoft Docs
Azure の読み取りアクセス geo 冗長ストレージ (RA-GRS) を使用した高可用性アプリケーションの設計 | Microsoft Docs

後で聞いたけど、GRS の Storage を障害発生時に RA-GRS への切り替えは出来ないと思ってた方が良いとのことー。
普段は GRS で節約しといて、障害が起きたら RA-GRS にして、別リージョンを読取可能にして AzCopy かでコピーして立て直しみたいなのは出来ない。
そういう用途なら、普段から RA-GRS にしてる方が安心。

SQL Database

  • ペアリージョンに1時間に1回地理リストア
  • アクティブ地理レプリケーション
    • sp_wait_for_database_sync で同期を待つ
  • 自動フェールオーバーグループ (preview)

バックアップから Azure SQL Database を復元する | Microsoft Docs
フェールオーバー グループとアクティブ geo レプリケーション - Azure SQL Database | Microsoft Docs
sp_wait_for_database_copy_sync (Azure SQL データベース)
Azure SQL Database を使用した高可用性サービスの設計 | Microsoft Docs

App Service

  • マルチリージョンで Traffic Manager で振り分け
    • Traffic Manager の監視の時間もあるので、死んでもすぐ切り替わるわけではない

Azure Traffic Manager エンドポイントの監視 | Microsoft Docs

VM

Mesosphere : Microservices meet Fast Data on Azure #DO16

英語セッション Mesos ってどっかで聴いた憶えがあったので参加しました。

Microservice ってなんぞ?

  • Flexible
  • resilient
  • efficient
  • robust
  • individually
  • scalable

Fast Data Batch => Micro-batch => Event processing とデータの処理が速くなっていく

SMACK Stack

  • Spark(Streaming) : stream processing
  • Mesos : cluster orchestrator
  • Akka : actor for reacting analysys
  • Cassandra : storage
  • Kafka : MQ(message queue)

Apache Spark™ - Lightning-Fast Cluster Computing
Apache Mesos
Akka
Apache Cassandra
Apache Kafka
こうみると Apache 多い。。

Queue ってどんなのあるの?
Queues

Install | DC/OS
DC/OS はリソースを柔軟にコントロールする感じ?
第1回 DCOSを使ってみよう:Mesosphere DCOSでつくるクラウドアプリケーション|gihyo.jp … 技術評論社 GitHub - dcos/examples: DC/OS examples

こんな流れのデモ
EventSource => Kafka => Spark => Elasticsearch => Java Map App

Service Operations

  • Configuration Updates (Scaling, re-configuration)
  • Binary Upgrades
  • Cluster Maintenance (Backup, Restore, Restart)
  • Monitor progress of Operations
  • Debug any runtime blockages

もっかいスライド見直したいー。

Azure * [Blockchain + ML/Cognitive + Fintech + ワークスタイル変革] 全部入り! #LS13

ランチセッション、Blockchain のお話しってことだったので参加ー。
製品説明等であんまり印象残ってない。

CVC (Cloud Video Conference) | Microsoft Azure(マイクロソフトアジュール)のプロによる導入支援から24時間365日運用監視までフルマネージドサービスcloud.config
WebRTC 使ってチャット? 出来る。
Blockchain に書き出しているので、改竄が難しい。

事例紹介
北國銀行、営業力強化に向けて、Windows 10 を全面導入 - News Center Japan
北國銀行の方が登壇されていて、銀行もクラウドしかないって言ってました。

ご注文は Linux + Docker ですか?Windows だけじゃない App Service を使い切る #MW01

しばやんのセッション、良セッションでした。
資料がもう出てるのでそれをどうぞ。
de:code 2017 で App Service on Linux について話しました - しばやん雑記

Windows 版もそのうち Docker になったりするのかな?

クラウド・ネイティブなスケーラブル・アプリ開発のために~12 Factor App on Kubernetes on Azure

てらださんのセッション
これももう資料出ています。
decode2017-terada - Docs.com

Kubernetes の發音は「クーバネーティス」って感じ。

マイクロサービスっているのあまり 使わなくても良いならマイクロサービスじゃなくて良いのでは?
個人的には、単に REST なりで叩くだけなら、まあ楽かもしれんけどそうじゃない場合大変そうな気がするんやけど。。

マイクロサービスを作っていくための方法を紹介
The Twelve-Factor App (日本語訳)
この中から幾つかデモを交えて紹介。

  • モジュール毎にリポジトリ分けようよ
    • Maven とかで依存管理してたら、自然と別れるんじゃないかな?
    • Gradle のマルチプロジェクトで、jar 作らずに依存してるやつはめんどそうかな~
  • フロントエンドとバックエンドで分ける
    • HTML と WebApp を分けるって感じじゃなくて、フロントの WebApp から Backend の Cognitive 用の WebAPI 叩くとか
    • 同期 / 非同期?
      • Backend のサービス間に依存関係があるなら同期、無ければ非同期で並列実行出来る
  • 共通ライブラリからの解放
    • 共通ライブラリもちゃんとバージョンつけて、利用しているアプリもちゃんとバージョン指定して依存すること
    • 共通ライブラリのバージョンを上げても、利用しているアプリでは不要な機能なら旧バージョンを使っとく
      • 一斉に利用している全アプリでテストするのはツラい
      • 影響あるアプリだけ挙げて検証、リリース
      • 他のアプリは余裕があるときに、バージョンアップの検証
  • 接続情報とかは環境変数を利用
    • どこでも動かせるように、環境変数を使う。
    • Windows / Linux どっちでもある
      • ask the speaker で聞いたけど、最近の EE サーバーも設定環境変数で持てるんだって
        • Payara micro とか

Kubernetes 直接使うより、DEIS 経由の方が楽。
Deis, Inc. | The Kubernetes Company
セッションのデモで叩いたコマンド
PayaraMicro-MicroServices-for-Azure/DEIS-K8S-ACS-Azure.txt at master · yoshioterada/PayaraMicro-MicroServices-for-Azure · GitHub

エンタープライズ基準で"丁寧"に .NET Framework のバージョンアップしていくコツ #TL07

竹原 さんのセッション、発表された時からこれは絶対出るって決めてたやつ。

受けたセッションのなかで、一番笑いとれてたセッションだった。
これも既にデモと資料が公開されています。
GitHub - commerble/decode2017: de:code 2017 デモ

資料に載ってないやつ

  • VS で別プロジェクトのファイルを共有するときは、「リンクとして追加」
  • 実行時に必要なやつ(*.aspx とか実行時コンパイル)は、ビルド後イベントでコピーする
  • ライブラリ(dll)は .NET のバージョンあげなくても、Side by Side で動く。

窓は開かれた!SQL Server on Linux で拡がる可能性 #DI01

最後は、SQL Server on Linux のセッション、2017 あまり触れてないので参加しました。

SQL Server は Data-Driven Inteligence 2017 での主な追加の機能

  • Linux、Docker のサポート
  • Graph データのサポート
  • Machine Learning サービス
  • クエリチューニングの自動化

What's New in SQL Server 2017 | Microsoft Docs
Run SQL Server 2017 on Docker | Microsoft Docs
SQL Graph overview | Microsoft Docs
What's New in Machine Learning Services | Microsoft Docs
Automatic tuning | Microsoft Docs

  • SQL Server 6.5 以前
    • OS まかせ
  • 7.0 ~ 2000
    • UMS (User Mode Scheduler)
  • 2005 ~ 2016
    • SQLOS
    • 中で何やってるか分からない => DMV 追加
  • 2017
    • SQLPAL

SQLPAL
Drawbridge - Microsoft Research を基に改良。
SQL Server on Linux: How? Introduction | SQL Server Blog
SQL Server on Linux って?(第 2 回目) – Microsoft Japan Data Platform Tech Sales Team Blog

Windows 版よりパフォーマンスが出る場合も。
TPC-H で Win の 2016 よりも Linux の 2017 の方が順位上
TPC-H - Top Ten Performance Results
2017 の Win が無いから Linux の方がパフォーマンス良いのかは分からないちゃう?

接続も今までと同じ
新しい GUI Tool を クロスプラットフォームで開発中らしい

バックアップ/リストアも同じ手順
Backup and restore SQL Server databases on Linux | Microsoft Docs

自動フェールオーバー構成も可能
Pacemaker + corosync を利用
AG(Availability Group) リスナー経由での接続も可
Always On availability group for SQL Server on Linux | Microsoft Docs
Configure read-scale availability group for SQL Server on Linux | Microsoft Docs

触らないとねーって感じ。
終わってからムッシュとちょっと話してて、
Windows との AlwaysOn も 2016 からの 分散型可用性グループ 使えば出来そうな感じ。
分散型可用性グループ (Always On 可用性グループ)