こんにちは、サイオステクノロジー技術部 武井です。
マイクロソフト関連の開発者向けイベント「de:code」の1日目に先程参加してきました。その速報をお伝えします。
総評
早くも総評なのですが、1日目の基調講演やセッションを通して強く感じたのは、インフラや定型的なコーディングはサービス化されたものを利用し、これからのエンジニアは、様々なクラウドサービスを効果的につなげあわせるための、実践的なコーディングをしていきましょうということでした。マイクロソフトはそれを実現するために、以下の4つを主要なPlatform Serviceとして展開していくようです。
- WebApps → Webアプリケーションを動かすためのPaaS
- Serverless Functions → スクリプトを実行する基盤
- Kubernetes Service(AKS) → コンテナのオーケストレーションツール
- Service Fabric → マイクロサービスを構築するための基盤
この流れには大賛成です。私もアプリケーション開発が大好きな人間なので、サーバー構築や性能設計といった作業は、サービス化されたAKSやWebAppsを使って、コーディングだけに専念したいと思っております。今まで以上に好きなことに好きなだけ専念出来ると思うとワクワクします((o(´∀`)o))しかしながら、インフラや定型的なコーディングがサービス化されるからといって、それらの知識が不要になるわけではないと私は感じております。
顧客の要件を分析して、どのクラウドサービスを選定し、どのプロトコルでどのようにつなげあわせるかといった作業は、インフラやアプリケーションに精通してなければ出来ないですし、複数のサービスを組み合わせることによって、障害が発生した場合の切り分けは、今まで以上に難しくなると思います。
「インフラや定型的なコーディングのサービス化」は、決してインフラ構築力やコーディング力がない人のためにあるものではなく、より付加価値の高いサービスを生み出すための、効率的な方法であると感じております。
よって、これからのエンジニアには、以下の3つの素養が必要になります。
- インフラ・アプリケーションの両方の知識 → Azureを始めとするパブリッククラウドには様々なサービスがあり、ブラウザからマウス1つでそれらを組み合わせてシステムを作ることが可能です。しかし、効果的に組み合わせるためには、インフラ・アプリケーションの両方の側面を正確に理解しておく必要があります。
- 顧客の要件に合わせて、正確なクラウドサービスを選定するチカラ → 1にも通じる話ですが、いくら複数のクラウドサービスを組み合わせても、それが効果的でないと意味がありません。しっかりと顧客の要望を理解し、要件を満たすことが重要です。
- 技術への情熱 → Azureを始めとするパブリッククラウドは技術の変遷が非常に早いです。その変化に追従し、新しい技術を常にキャッチアップするためには、技術が好きであることが第一条件と思います。
以降は、私が受けたセッションの中で気になったものをいくつかピックアップします。
基調講演
クラウドはもはや当たり前、これからクラウドをIntelligentに使いこなすために以下の3つの要素が必要とのことでした。
- Ubiquitous computing
- Artificial Intelligence(AI)
- Multi-sense、multi-device、experiences
どこでも、だれでも、賢くクラウドを使いこなすことがこれからの時代に必要だということを強く感じました。
そして、Azure Event Grid、Azure IoT Hub等、様々なサービスが紹介されていましたが、それらに共通していたのは、疎結合なサーバーレスアーキテクチャということでした。Blob Storageに写真が追加されたら、Azure Event Gridによって検知して、Custom Visionで画像の分析を行い、Logic Appを呼び出して、結果をSlackに通知するなんてのもできそうです。
そんな感じで疎結合なサーバーレスアーキテクチャを組み合わせて出来るサービスは無限大、面白いものを作るのはアナタ次第、そんなわくわくするような未来を感じました。
WebApp for containers 最新アップデート全部入り
WebAppの最新の利用方法を紹介したセミナーでした。コンテナの利用も含めたたくさんの面白い機能がありました。
ここでもやっぱりコンテナ関連のお話がありました。WebAppの設定画面からdocker-composeのファイルやKubernetesの設定ファイルを入力することで、WebApp上で簡単にコンテナが実行出来るというものでした。
AKSやACIと何が違うのだろうと聞いていたのですが、WebAppはEasyAuth(Azure Active Directoryその他様々な認証データソースを元に簡単に認証機能が作成できる)など、アプリケーションの上位レイヤーよりのユーティリティが満載なので、AKSやACIよりも手軽にもっと簡単にコンテナを利用できそうです。
マイクロサービスのすべて
マイクロソフトが主催のマイクロサービスのセミナーですので、Service Fabricの話が出てくると思ったのですが、サの字も出てきませんでした。(それは2日目で聞けそうです)
このセミナーはもっと一般的な話で、マイクロサービスを利用した場合の設計のベスト・プラクティス及びアンチパターンを紹介したものでしたが、本日のセミナーで私がもっとも興味深いと感じたものでした。逆にマイクロソフトのセミナーでこのような話が聞けるとも思ってはおらず、よい意味で裏切られたような感じがあり、とても有意義な時間でした。話が高度過ぎて、いまいちついていけない部分もあったのですが、私が非常に有効かつ有用だと思ったものをメモしたのが以下です。(間違っていたらすみません)
- あるサービスが落ちても、他のサービスには影響を与えないようにする → akkaによるアクターモデルで実現
- リリースはサービスごとに可能とする。例えばサービスAとサービスBがあったら、サービスAだけバージョンアップしてもサービスBには影響がないようにする
- バックエンドのサービスへのアクセスを一手に引き受けるゲートウェイ的なものを用意し、そこにはロギングやACLなど全てのサービスに共通の処理を設ける(ビジネスロジックは実装しない)
他にもマイクロサービスならではの設計デザインパターンも語られており、その理論だけではなく、実際にどのテクノロジーをマッピングすればよいのかという実践的なお話もあり、かなり有意義でした。時間があれば、後できちんとまとめたいと思います。
セッションに関する話は以上で終了ですが、1つ気になるサービスがありました。
Azure DevOps Project
ソースコードリポジトリにPushすると、アプリケーション実行基盤へデプロイまでしてくれるものです。これは非常に便利だなと思いました。ただリポジトリがVisual Studio Team Services(VSTS)しか選択出来ないようですが・・・。
Azureの管理画面で、以下の3つを決定するだけで、CI/CD環境が簡単に構築できます。
- Runtime ・・・ 実行言語を選択します。Javaや.NETなどになります。
- Framework ・・・ アプリケーションフレームワークを選択します。JavaならSpring、.NETならASP.NETなどです。
- Service・・・アプリケーションを実行するための基盤を選択します。WebAppやWebApp for Containersなどです。
VSTSへソースコードをPushすると、アプリケーションのビルド、WebAppやWebApp for Containersのデプロイまで行ってくれます。
今までは、Runtime、Framework、Serviceを一つずつ手がけて、つなぎ合わせる必要があったのですが、Azure DevOps Projectはラクチンですね。Gitが使えればもっといいのですが・・・。
なだ万のお弁当
de:codeのもうひとつの目玉といえば、ランチセッションのお弁当です。確か私の記憶では前回は今半、そして今回はなだ万でした。
メニューは、くどくなくて胃に優しい、滋味あふれる味のたまご焼き、あっさりだけどしっかりお肉しているつくね焼き、ぷにぷに食感の白滝煮、素朴かつ上品なあじわいの湯葉、適度な酸味で頭スッキリの中華クラゲ和え、上品な甘みと芳香のある味噌味の赤魚味噌祐庵焼、柔らかい歯触りが何ともいえず、口中に溢れる味と香りが最高のたけのこご飯でした。さすがなだ万、全てが上品な味わいですし、ボリュームもしっかりあって、お腹いっぱいになりました。たけのこご飯は絶品でした〜(^o^)
以下は前回の今半のお弁当ですが、今回もそれに引けを取っていません!!
そして、今回もミスドのドーナッツありました!!