note

APS と Docker

本節では、(Java) APSをDocker化する際の考え方について説明する。

具体的には、以下について示す。

  • 一般的なAPSのシステムアーキテクチャを説明する。
  • APSのアーキテクチャでDocker化できる部分を考える。

APSのシステムアーキテクチャ

APSを利用したシステムアーキテクチャを考えるため、以下を想定する。

  • Java 標準の APS である Java EE を利用する。
  • システムアーキは、シンプルな MVC(Model-View-Controller)モデルとする。

この場合、最も古典的なシステムのアーキテクチャは下図のようになる。
(NetBeans公式サイトより)

Java EE with MVC

上記の通り、Java EE の APS では個々のコンポーネントが独立した役割を持ち、相互に協調動作する。

MVCモデル以外のアーキテクチャにおいても、
コンポーネント追加/変更による機能拡張/置き換えが起きるのみであり、 個々の使い道は基本的に変化しない。

  • 例えば、JSFは、Servlet & JSP & EJB を置き換えて使える機能だが、
    内部の仕組みとしてはこれらを利用している。

APSのDocker化

アプリケーションをDocker化する際の一般的な要件として、
アプリが内部状態を持たない or 外部管理できること」が挙げられる。

前述のAPSのシステムアーキテクチャにおいては、
DBがアプリの内部状態を持ちうることを除けば、
基本的には上記要件を満たすことがわかる。

具体的には、以下の前提条件を満たすアプリケーションであれば、
APSごとDocker化することが可能である。

  • DB利用

    • そもそも利用しない
    • or リモートのDBサーバを利用する
      • DBの場所(アドレス/ポート)を任意指定できること
  • ローカルのファイル操作

    • ローカルのファイルを生成・変更しない
    • or 一時データとしてのみ利用する
      • キャッシュ用途などに限定して利用すること