Member-only story
Container is new Class
オブジェクト指向のプログラミングでは、クラスは問題を解決するための基本的なユニットです。設計の方法、責任の割り当て、クラスのヒエラルキーの生成は、保存可能で拡張可能なアプリケーションためであり、常にソフトウェア開発者が何十年も直面している根本的な課題です。 この問題に関してはあらゆる本や記事でも書かれています。GoFによるDesign Patterns、Martin FowlerによるPoEAAなどの書籍は、ソフトウェアの設計とアーキテクチャに大きな影響を与えています。
プロキシ、アダプター、メディエーター、デコレーターなどのパターン、およびアスペクト指向プログラミングなどのテクニックは、クラスのビヘイビアを拡張し、クラスを汚すことなくロギングしたり、コンフィグレーションするなどの横断的な懸念事項に対応するのに役立ちました。
時間が経つにつれて、この基本的なユニットはクラスからライブラリーおよび、アプリケーションを構成するための自動的で独立した再利用可能なものが利用できるフレームワークへと変わります。
コンテナとクラウドベースの環境の出現により、コンテナは、考え、問題を解決し、クラウドを対象とする分散システムを構成するための基本的なユニットになっています。sidecarのようなパターンは、コンテナのビヘイビアを拡張し、横断的関心事項を処理する方法になります 。コンテナでホストされているアプリケーションは、ロギングフレームワークへのディペンデンシーは必要はありません、サイドカーとして接続されたコンテナがそれを処理できます。
このような懸念事項をコンテナーに任せると、アプリケーションコンテナーとは無関係に開発、デプロイ、コンフィギュア、およびアップデートが簡単になります。IstioのようなKubernetesおよびサービスメッシュフレームワークがあれば、サイドカーを次のレベルに引き上げ、アプリケーションをデプロイおよび管理するためのよりよい方法が使えるようになります。
「コンテナはデプロイメントのユニットおよびパッケージのユニットであるだけでなく、再利用のユニット、スケーリングのユニット、およびリソース割り当ての単位でもあります。」John Arundel、Justin Domingus
以上のトピックについてさらに詳しく調べるには、2冊の素晴らしい(今のところ無料の)本があるのでご紹介いたします。
- 分散システムデザインパターン — Brendan Burns著. この本はコンテナ用のGoFに似ています。著者によるこのプレゼンを見てみてください。
- Cloud Native DevOps with Kubernetes — John Arundel and Justin Domingus著 DevOpsのための実践、ツールやコンテナ管理に関する優れた実践的アドバイス
Orangesys.ioでは、kuberneteの運用、DevOps、監視のお手伝いをさせていただいています。ぜひ私たちにおまかせください。