モノリシックアプリケーションとは何ですか?

モノリシックアプリをKubernetesに移行するための最初のステップ

クリス-ノヴァ
2018年2月2日•4分読み取り

ソフトウェア工学の私のキャリアを通して、私が同僚に尋ねることを学んだ最も貴重な質問の一つは、”$somethingはあなたにとって何を意味するのですか?”. これは、他のエンジニアが特定の単語を使用することの意味を評価するように強制します。 Kubernetesコールへの最初の移動モノリシックアプリケーションに続いて、私はモノリシックアプリケーションが何であるかについて話して数分を過ごしたいと思っていました。 または、少なくとも、それは私に何を意味します。

これは、いくつかの注意を必要とする興味深い空間です。 Kubernetes上でステートレスなマイクロサービスを操作するのは比較的簡単ですが、大規模なステートフルなアプリケーションを操作するのはまだ長い道のりです。 モノリシックアプリケーションが何であるかを理解することは、移行プロセスを容易にするための最初のステップです。

モノリシックアプリケーションを定義するためには、まず気になるアプリケーションのコンポーネントを理解する必要があります。 私たちが興味を持っている3つのコンポーネントは、ユーザーインターフェイス、データアクセス層、およびデータストアです。

ユーザーインターフェイスは、アプリケーションのエントリポイントであり、ユーザーが対話するプログラムのポイントでもあります。 これは、main()関数、webサイト、webサービス、またはその他のさまざまなエントリポイントです。

データアクセス層は、データストアをラップするプログラムの層です。 通常、データアクセスレイヤーは、データストアでの認証や、データストアに永続化される前のデータのサニタイズなどの懸念を処理します。

データストアは、システムの最も基本的な部分であり、任意の情報(データ)を格納し、それを取得する責任があります。 このコンポーネントは、一般的には単なるデータベースです。

これらの3つのコンポーネントは、ステートフルアプリケーションと呼ばれる非常に一般的なタイプのアプリケーションを構成しています。 つまり、アプリケーションは時間の経過とともにデータを格納して操作することを意味します。 したがって、アプリケーションには状態があると言います。 さらに重要なのは、アプリケーションの状態が時間の経過とともに変化する可能性があることです。

モノリシックアプリケーションの場合、アプリケーションの複数の層が密に結合されていることがよくあります。 以下の例では、ユーザーインターフェイスとデータアクセスレイヤーがグループ化されていることがわかります。 これは通常、大規模なコードリポジトリを介して行われ、これらのレイヤーの両方がおそらく実行するために配置される他のレイヤーに依存します。 さらに、ユーザーインターフェイスとデータアクセスレイヤーは、通常、実行時に同じプロセスにバンドルされます。 つまり、システムリソース(メモリと計算サイクル)を使用してシステムの他の部分と対話するために、同じシステム上で通信します。

逆に、microserviceベースのアプリケーションは、簡単に切り替えることができる小さなモジュールコンポーネントで構成されます。 これは、演算子の合成可能性の概念を提供し、モノリシックアプリケーションではなくマイクロサービスを使用していることを示しています。 以下の例は、柔軟でモジュール化されたアプリケーションを示しています。 このモデルでは、より小さなコンポーネントを独立して実行し、ネットワークを使用してシステムを接続できることに注意してください。 このアプローチは、はるかにスケーラブルです。

では、モノリシックアプリケーションとは何ですか? これは、ユーザーインターフェイスとデータアクセスコードが単一のプラットフォーム上で単一のプログラムに結合された単一階層のソフトウェアアプ また、同じシステム上で同じプロセスで複数のコンポーネントを実行するアプリケーションでもあります。

今後は、モノリシックアプリケーションをKubernetesに移行することのニュアンスを理解しようとしており、これが私たちの旅の貴重な第一歩であることを願 プロセスは比較的文書化されていないので、私たちは学んだ教訓を共有することを計画しているので、誰もが利益を得ることができます。



+