こんにちは。
ちょっと今回は、ポエム的な感じです。
ここのところ、何人かから「Microsoft Azure を使う上で PaaS とコンテナどっちがいいの?」って聞かれたので、なんとなく自分の今の理解をまとめてみます。
ちなみに、少し時間が経ったら技術的なことも進歩して、また意見は変わるかもしれないですが、それはそれとして。。。
どっちがいいか?
どっちがいいか?って聞かれたら、答えは一個しかありません。
好きな方を使えばいいと思いますw
(答えになってないってって言われそうw)
だってね。その開発で求められることって違うじゃないですか~
- 結局何を優先するのか?(コスト?サービスインまで時間?運用性?Azureのサービス終了のリスクヘッジ?)
- その時の開発メンバのスキルや、開発に求められることが何か?(コンテナの技術ある?C#かける人ばっか?)
なので、この答えを出すためには、それぞれの特徴を理解するしかありません。
PaaS の特徴
PaaS サービスの特徴は、提供されているサービスがサービス提供者の SLA のレベルで提供されているってことですよね。
ですので、その部分の運用コストを大きく減らすことができます。
例えば、Azure の Web Apps であれば、これまで Web サーバの運用で必要であった、
- Windows Update などの、OS のパッチ適用の運用
- ウイルス対策
- バックアップをするためにシステム構築
- 冗長構成やスケールの変更
- Blue-Green 構成
- セキュリティなどの検討(アプリケーションでは必要だし、組み合わせは必要です)
あたりが、不要もしくはメニューから簡単に設定できます。
デメリットは、こんなところですかね?
- 実行環境が変わってしまう恐れがある(ある程度のバージョンまではスタティックにできるけど、未来永劫古いバージョンが利用できない)
- 利用できる Run-Time にも制限はある(どんなのがあるかわからないけど、ドマイナーな環境まではサポートされない)
- 基本的に、追加でアプリケーションをインストールできない。(Kudo 使ってサイレントインストールできるものはできるけど。。。)
この中では、実行環境が完全に自分の思いのままコントロールできなくなるリスクを強く感じている人が多い気もします。
PaaS に対してのコンテナの特徴
コンテナ自体の特徴については、ネットを検索して頂ければ沢山出てくるので割愛します。
PaaS に対してコンテナが注目されている点は、コンテナの中に実行環境とアプリケーションを閉じ込めるわけですので、
実行環境を自分でコントロールできる所にあります。
ついでにもう一個、コンテナは 今や、どこの環境でもコンテナが動く環境さえあれば動かすことができます。
ですので、AWS や Microsoft Azure、GCP などのクラウドベンダに関係なく実行環境を得ることができるのも 魅力の一つだと思います。
で、デメリットは結局、実行環境に対しての運用がでてきちゃうんですよね。。。
再度、PaaS とコンテナどっちがいいのか?
個人的な見解では、
Micorosoft Azure の、Azure DevOps Services でCI/CD 環境を作って
Azure の PaaS サービスを組み合わせてサクッとサービスを構築し、
Azure Monitor を使って継続的なモニタリングを行うのが、
運用も含めて一番低コストで短期間に開発ができるように感じています。
ただ、前提としては、新規のサービスであったり、
自分の周りに、C#を書けるエンジニアが多いということもあります。
もし、既存システムからのマイグレーション(モダナイゼーション)であれば、
これまでのアーキに近い、コンテナを考えることはありますけどね。
という部分で、開発をすることも踏まえて、
ご自身がトータルでサービスを開発するという目的に一番即したものを選択するのがいいと思います。
まとめ
まとめというか、余談ですが、個人的に興味深いなって思ったのが、
Azure Stack でも、AKS の機能がプレビューで入ってきています。
Azure Sphere も、コンテナイメージをデプロイすることができます。
そういう、エッジの部分にコンテナテクノロジーがサポートされている部分も非常に興味深いなって思ってます。
また、Azure の Web Apps にも、Web Apps for Container というサービスがあります。
これも、ちょっと見逃せない機能の一つだなって思いもありますし、
Azure Container Instance は、かなり面白い機能だと思っています。
コメント