Kubernetesとひとえに言っても様々な使い方があります。
根本的なKubernetesの思想はインフラの集約率を上げることと、開発者がインフラの設定をインフラ事業運用者に依頼しなくてもいい部分が増えることと、とにかくサクッとアプリケーションが立ち上げられるところを利点としているので、規模が大きいサービスのほうが導入のメリットは高いことは多いです
railsとかで作ると、ドカンとでかいAPIをkubernetesの一つのpodに乗せて終わりだと思うので、
kubernetes本来の、複数のAPIにバラして、複数のpodに乗せる様なマイクロサービスの設計がしづらいと考えています。
だったらAWSのFargateとかでもいいよねとなると思うのですが、如何思いますでしょうか。
個人的にはこれはかなり怪しいと思っていて、コンテナ化を推進する大きな目的として
- 開発環境を簡単に立ち上げる
- 開発環境と本番環境の差異を減らす
ことが開発者にとって重視されることが多いと思うのですが、実際にはコンテナ化にあたってはリリース速度を上げることも重要なことが多いです。
それを踏まえると、ECSを使おうがKubernetesを使おうが、コンポーネントを集約させすぎないことは非常に重要で、どこかしらのラインを決めて共通化、抽象化を進めたほうがいいことに変わりはないと思います。
※余談ですが、FargateはECSだけの概念ではなく、EKS(AWSのKubernetesマネージド)でも使えるようになりました。