腐女子エンジニアの日記

創作と技術と時々音楽

Microsoft Ignite The Tour Tokyoに行ってきました

Microsoft Ignite Tour The Tokyoに行ってきました! 人が多く、講演の待機列でじっとしていた時間が長かったので、 会場を回りきれなかったのがちょっと残念。

受講していて面白かったものを2つ紹介します。

Azure Kubernetes Service を活用したマイクロサービス開発

マイクロサービス開発に関して、Kubernetesはあくまでも手段の一つ

  • 頻繁にリリースがあるアプリか?/どんどん機能追加があるようなものか?
    • だったらKubernetesのほうがいい
    • 規模が小さければサーバレス等ほかの選択肢もある

AKSの強み

  • マネージドなKubernetesが提供できる
  • master nodeが見えない
  • 障害時の対応: アンチフラジャイル(つまり、止まったものを直すんじゃなくて、あたらしいものをたてればいいじゃん!の考え)で運用をやるとキツい
  • 監視

マイクロサービス開発のベストプラクティス

少なくとも下記は必要だろうとのこと。 - Azure Container Registry - Azure Devops - AKS(環境分)

1. Helmでマイクロサービスの構成を管理する

2. 外部向けエンドポイントはNginx ingress controllerを使う

  • リバプロ的な役割
  • Helm Chartsに書ける!
    • AKSでも似たような機能が提供されてるけど、内部が違うのと、非推奨なので使わない

3. アップグレード戦略にはBlue/Greenデプロイを採用する

  • labelSelectorのバージョンを変更してアクセスできるpodを変更する
  • Kubernetes culusterのアップグレード
    • ボタンぽちってやるだけでできるけど怖い!どこまで担保する?
    • 新しいバージョンのAKSを立てて、アクセス振り分けるGWを設けると良い
  • pvとかpvcを作らず、外部にデータを保存するとこでアンチフラジャイルを実現する

4. PodとNodeのスケーリングを組み合わせて構成する

  • Horizontar Pod Scaler
  • cluster autoscaler : nodeのリソースがいっぱいでデプロイがpendingになったことを検知して勝手に新しいnodeを立ててくれる!

5. 障害を前提として構成を決める

  • Nodeの数は余裕を持たせる
  • 可用性 : vmssの可用性セットによって担保
  • pod: liveness/readness

6. Azure Monitorでマイクロサービスを監視する

  • メトリクスをLog Analyticsに送信

難しいからこそ、シンプルに使う

感想

  • 絵を描いての説明があったり、わかりやすかった!
  • 講演中に何回か出てきた"アンチフラジャイル"というワードはこの書籍を読むとわかるみたいです(日本語版だと反脆弱性)

Azure Functions を理解する

Serverless概要

  • サーバがないわけではない
  • サーバを意識しなくて良い

Azure Serverless Platform Component

  • Power Automate
  • Logic apps → コードをあんまり書かないやつ
    • iftttみたいなイメージ。
    • ワークフローを自作するというかそんな感じ
  • Functions

Azure Functionとは

  • コード+イベントで作成できる。
  • APIでリクエストを受けて、処理を実行するようなものを記述できる。

  • Logic AppsからAzure Functionを選択できるため、色々な組み合わせができる!

  • VS Code拡張機能があり、Azure Functionのデバッグがローカルホストで実行可能になった。

資料

資料はここにあります。

感想

  • デモが多くて面白かったのに、夢中すぎてメモをとるのを忘れました。。。
  • FaaS楽しそう!
  • 個人的に開発のハードルが低そうなのでいじり倒したいなと思いました。

まとめ

  • 初参加のイベントだったんですけどめちゃくちゃ楽しかったです!
  • 待機列だけは本当にしんどかったので次行くときは待機列用の暇つぶしを考えようと思いました。

余談

  • 帰りにみた東京タワーが綺麗でした。

f:id:dcn_f:20191208011904j:plain