夏休みの自由研究(2か月もたっちゃったけど)として、こんなのを作った。
https://github.com/iwate/saburaiis
Azure VMSSのIISにContinuous Deliveryするためのシステムなんだけど、割と良くできていると思う。
挑戦的には、長いこと書いてなかったReactの今はどうなってるのか書いてみるってのが1つ、CosmosDBあんまり使ったことないから使ってみるてのが1つ、bicepも書いたことないから覚えて置こうってことで結構勉強になった。
作った理由はVMSS便利そうなんだけど、アプリケーションの配置がコレジャナイ感あったから。
VMSSへのアプリケーションのデプロイは以下の4つがメジャーっていう認識なんだけど、
カスタムプロビジョニングスクリプト
カスタムVHDイメージ
Service Fabric
Kubernets
カスタムプロビジョニングスクリプトやカスタムVHDイメージって新しいバージョンのアプリケーションをデプロイしたいとして、再起動なりVMの入れ替えなり(ローリングアップデート)が必要だから、1日に100回デプロイしたいみたいな運用には向かないと思うんですよ。
1つのアプリケーションだけなら、まだしも、せっかくVMでフルなIISが使えるのだから、複数のアプリケーション詰め込みたかったりするし、モジュラーモノリス的な使い方。
それには、合わないあって感じた。
他の2つSFとk8sはどうかって言うと、ちょっと重い。手元にあるzipに固めたアプリケーションが動けばいいのに、SFは専用のStatupコード書かなくちゃいけなかったり、コンテナイメージにしなくちゃいけなかったり、そうじゃない感
k8sはwindowsにホストされること前提のアプリケーション(.NET FrameworkとかWCFとか)には鬼門。Windows Containerをワーカーノードにできるって言っても、マスターノードはLinuxを用意しなくちゃいけない。ローカル開発できる環境整えるのが大変なのが応える。Docker Desktopで簡単に整えられるならいいんだけど、今んとこLinux or Windowsだから、LinuxとWindowsを併用しなきゃいけない構成ができない。やるならHyperVなりWSLなりで1から建てろと。
頑張ろうかなとも思ったけど、k8sとかトレンドだし、でもこのzipが展開できればそれでいいのにって感情が勝ったのです。
作ったものは、以下の3つ。
SaburaIIS Agent
SaburaIIS AdminWeb
SaburaIIS CLI
AgentはWindows Serviceとして作ってあって、VMSS内の各VMへプロビジョニングスクリプトでインストール・常駐させておく。
AdminWebとCLIは、設定データを編集するためのものでCosmosDBに入っているJSONをこねくり回す。
CosomosDBにはIISがとるべき姿がJSONで保存されていて、AgentはChangeFeedを監視して、何か変更があれば、差分を計算して適用する。VirtualDOMとDOMの関係に近くてAgentはReact的な役割をする。
SSL証明書は、Key Vaultに、アプリケーションプール毎に環境変数を設定したい時はApp Configurationをつかう。
とにかく、Azureのマネージドサービスを使い倒す方針。
とまあ、いい感じのができたと自分では思うわけです。
ここまで前置き、長かったけど。
他の人の反応が気になるから、Reditに投稿してみたというのが本題。
これ。
https://www.reddit.com/r/AZURE/comments/q4zkq1/github_iwatesaburaiis_a_continuous_delivery_agent/
これが、3k Viewぐらいあるのに、6voteしかなくてダメダメだなあって感じてます。
それで何がいけなかったかなという反省を書きたい。
ものは悪くないって思うので(そう思いたい)、Reditの投稿の仕方、見せ方が悪かったよねっての書き出していこうと思います。
まず、改めて読んでみると、なんだろう。Iが多いかな、セールストークやマーケティングメールにはYouを使えってどっかで読んだことがある。Youにどんなメリットがあるか、これが使えばYouの体験がこうよくなる適なことを書けてきな。
あと、最大の失敗な気がするのが、書いてある説明が、僕の作ったものを100%理解できる前提で、それでいて疑問に思うであろうことがらだけを説明してる。1%も理解してない人に対して説明するように書かないとダメだよねと反省
あと、作ったもの全部見せたいから動画の長さが30分になってしまってる。これじゃあ誰も全部見ないよなあ。僕でさえ見ない。
この反省踏まえて次のアクションは、SaburaIISのコア機能である一回の設定変更で各VMに一斉にアプリケーションを展開する動画を15秒ぐらいの短い尺で作って投稿してみようと思う。
ほっぽてるWASMもそろそろ再開しなきゃなあ