ROMANCE DAWN for the new world

Microsoft Azure を中心とした技術情報を書いています。

書籍「しくみがわかる Kubernetes」の感想

コンテナオーケストレーションである Kubernetes の基本的な機能と内部動作に加え、Azure Kubernetes Service の実装例を解説していると知って、早速「しくみがわかる Kubernetes」を読んでみました。

しくみがわかるKubernetes Azureで動かしながら学ぶコンセプトと実践知識

しくみがわかるKubernetes Azureで動かしながら学ぶコンセプトと実践知識

目次

第1部 導入編
第1章 コンテナーとKubernetes
第2章 Kubernetesの環境構築
第3章 Kubernetesを動してみよう

第2部 基本編
第4章 Kubernetesの要点
第5章 コンテナーアプリケーションの実行
第6章 アプリケーションのデプロイ

第3部 実践編
第7章 アーキテクチャと設計原則
第8章 可用性(Availability)
第9章 拡張性(Scalability)
第10章 保守性(Manageability)
第11章 リソース分離(Security)
第12章 可観測性(Observability)

どんな書籍なのか

この書籍の対象読者は、以下のように記載があります。

  • Kubernetes をはじめて使う業務アプリケーション開発者
  • Docker の基礎知識がある方

これに加えて、「これから Kubernetes のプロダクション導入を検討している方」にも、読んでほしい書籍だと感じました。

第1部の導入編と第2部の基本編は、Kubernetes の初心者向けの概要解説と実際にコマンドを実行して動かせる内容になっており、これから Kubernetes を始めたい方には分かりやすいです。
よくあるハンズオン的な内容だけではなく、なぜこの機能が必要なのか、なぜこのように動作するのか、Kubernetes の設計コンセプトから内部のしくみまでを丁寧に解説している部分が良かったです。
サンプルコードは、GitHub でも公開されています。
github.com

第3部の実践編は、5つの視点(可用性、拡張性、保守性、リソースの分離、可観測性)から、インフラアーキテクチャに踏み込んで、Kubernetes の構築や運用に必要な知識を学ぶことができます。
Kubernetes を使い始めていて、これからプロダクションへの導入を検討している方には、ぜひ読んで欲しい部分です。
自分が構築したいアプリケーションの要件に合わせた Kubernetes を構築するための設計に必要な考え方ですし、何らかのトラブルや障害が発生した際の解決に至るまでの道筋を立てることができます。

まとめ

タイトルの通り、これから Kubernetes を学びたい方でもステップを踏みながら、「Kubernetes のしくみ」を学ぶことができる書籍です。
Kubernetes のアップデートによって書籍の内容が古くなることはありますが、システムに導入する際に検討すべき可用性や拡張性や保守性といった観点は変わりません。変わるのはソリューションであり、オープンソースとして活発に更新されているため、より良い機能が追加されることを期待できます。
「Kubernetes を勉強したいけど、お勧めの書籍は?」と聞かれたら、この書籍を勧めたいと思います。

Microsoft Tech Summit 2018 で登壇しました

先月の話になりますが、Microsoft Tech Summit 2018 のブレイクアウトセッション「.NET 開発者のためのマイクロサービス 入門」に登壇しました。
セッション資料と動画が一般公開されているので、イベントに参加していない方でも視聴できます。

www.youtube.com

共同登壇というスタイルだったので、後半部分の説明とデモを担当しました。
マイクロサービス というと Kubernetes がトレンドで、Java を使って開発するイメージがありますが、.NET Core でも開発できるし、.NET 開発者の皆さんにマイクロサービス開発の世界観を伝えたかったです。
でも、実際にはマイクロサービス に向かないシステムもあるので、何でもかんでもマイクロサービスにするのは止めましょう。

f:id:TonyTonyKun:20181224141952j:plain

コミュニティでの登壇は何度かありましたが、有償イベントでは初めての登壇でした。前日まではいつものお店に飲みに行くぐらい余裕な感じでしたが、当日の朝になって緊張してきて2回もリハしたことはいい思い出です(笑)

ちなみに、他のセッションについても資料や動画が一般公開されているので、冬休みを使ってキャッチアップしてみるのも良いと思います。

Microsoft Tech Summit 2018 | インフラエンジニア、アーキテクト、IT IT 戦略にかかわる皆様の為の技術カンファレンス - Microsoft Events & Seminars

Azure SignalR Service で ASP.NET SignalR を使ってみる

この記事は、Azure Advent Calendar 2018 の 8 日目 の記事です。
qiita.com
Ignite 2018 で GA が発表された Azure SignalR Service ですが、ASP.NET Core SignalR だけでなく、まだプレビューですが ASP.NET SignalR にも対応しています。
今回は、Core ではない ASP.NET SignalR を使って試してみました。

Azure SignalR Service とは

Azure SignalR Service は、SignalR を使って開発したアプリケーションのコネクションやスケーリングを管理してくれるマネージドサービスです。
build 2018 のセッションから引用したスライドです。
f:id:TonyTonyKun:20181118124127j:plain
アプリケーションの規模が大きくなると、バックエンドで Redis や Service Bus を使ったコネクションやスケーリングの管理が必要になります。このような面倒なところを Azure SignalR Service に任せることができます。
Azure SignalR Service の使い方は、こちらの公式ドキュメントにある通りですが、早速試していきます。
github.com

Azure SignalR Service を作成する

Azure Portal から、Azure SignalR Service を作成します。

f:id:TonyTonyKun:20181118142922p:plain

Standard プラン以外の他に、20 コネクションまでの Free プランもあります。東日本リージョンもあるので、安心して使えます。

ASP.NET SignalR のコードを変更する

ASP.NET SignalR のプロジェクトに対して、Azure SignalR Service に対応するための変更を加えていきます。

NuGet ライブラリのインストール

まず、Azure SignalR Service 用の NuGet ライブラリの Microsoft.Azure.SignalR.AspNet をインストールします。

PM> Install-Package Microsoft.Azure.SignalR.AspNet -Version 1.0.0-preview1-10259

NuGet ライブラリをインストールしたら、HTML ファイルで指定されている JavaScript のパスを変更します。

<script src="Scripts/jquery.signalR-2.4.0-preview2-20181018-02.min.js"></script>

Startup クラスを変更する

Startup クラスで呼び出している MapSignalR メソッドを MapAzureSignalR メソッドに置き換えます。引数には、他のアプリケーションと区別する一意な名前を渡します。

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        //app.MapSignalR();
        app.MapAzureSignalR(this.GetType().FullName);
    }
}

接続文字列の追加

Web.config に Azure SignalR Service の接続文字列を設定します。接続文字列は、Azure Portal から取得できます。

<connectionStrings>
  <add name="Azure:SignalR:ConnectionString" connectionString="Endpoint=xxx;AccessKey=xxx;Version=1.0;"/>
</connectionStrings>

動作確認

ASP.NET SignalR のサンプルとして、クリスマスなので懐かしい Fireworks のアプリケーションを Azure Web Apps にデプロイしました。

f:id:TonyTonyKun:20181208094616p:plain

自分で打ち上げた花火を、他のブラウザでもリアルタイムに観ることができます。
試してみたい方は、こちらの URL からどうぞ。

ブラウザの開発者ツールで確認すると、Azure SignalR Service に接続されていることがわかります。

f:id:TonyTonyKun:20181208103828p:plain

まとめ

ASP.NET SignalR は、チャットやダッシュボードなどのリアルタイムな Web アプリケーションを開発できるフレームワークです。
今から開発するなら ASP.NET Core SignalR を選択すべきですが、それが難しい場合でも Azure SignalR Service を使うことができます。
本番運用では、バックエンドでコネクションやスケーリングの管理が必須となるので、 Redis や Service Bus を使わずに Azure に任せられる嬉しいサービスだと思います。