Kyrios ブログ

コンテナで始めるモダナイゼーション ~コンテナに関連用語ひとこと解説と、導入ステップ~

現在、システム開発におけるアーキテクチャの選択として、迅速な更新や破棄が可能な「コンテナ」技術の導入が広がっています。コンテナ化により継続した更新のデプロイが容易となり、アプリケーションの開発サイクルの短縮にも繋がります。またサーバーリソースを効率よく利用できるため、サービスのスモールスタートからの拡張も容易となります。

コンテナの利便性は認識しつつも、どこから着手すればよいかわからず、コンテナ導入に踏み切れない方も多いかもしれません。そこで、今回はコンテナにまつわる用語のひとこと解説と、コンテナ導入をまずはじめに検討する場合のステップをご紹介します。


目次[非表示]

  1. 1.コンテナにまつわる用語、ひとこと解説
    1. 1.1.モダナイゼーション
    2. 1.2.マイクロサービス
    3. 1.3.オーケストレーションツール
    4. 1.4.CI/CD
  2. 2.コンテナ導入の3ステップ
    1. 2.1.1. コンテナの学習
    2. 2.2.2. まずは全部まるっと一つにコンテナ化
    3. 2.3.3. 少しずつ細分化、サービスの連携
  3. 3.コンテナの効果的な導入と運用のために
    1. 3.1.PoCサービス
    2. 3.2.オブザーバビリティサービス
    3. 3.3.導入事例


コンテナにまつわる用語、ひとこと解説

コンテナ導入を検討する際、まず登場する数々の用語も聞き慣れないかもしれません。ここでは、ひとことで簡単にご紹介したいと思います。

モダナイゼーション

「アップデートされた技術を取り入れて最適化されたシステム構成を採用する」ことを指します。単純にオンプレミスで使用していた環境をクラウド上に乗せ換えたり、コンテナ化をするのではなく、クラウドサービスのマネージドサービスやテクノロジーの特性を活かし、その機能を十分に活かした形で設計・構築をすることがポイントです。コンテナを採用するのも、このモダナイゼーションを実現するための一つの手段です。

アプリケーションをコンテナ化する理由は次のようにあげられます。

  • 継続したアプリケーションの更新と、迅速なデプロイ

  • サーバーリソースの最適化
  • 運用の効率化


マイクロサービス

コンテナのメリットは、迅速な構築と廃棄/再作成が可能な点にあり、アプリケーションのバージョンアップへの対応や障害発生時の対応の手軽さがあります。

これを実現するために、「1つのコンテナに1つのプロセス」を実行することが望ましいとされています。つまり、アプリケーションとデータベースのサーバを立ち上げる際、それらは別々のコンテナで立ち上げ、相互に連携することで動作します。このようなサービスの動作方法は「マイクロサービス」と呼ばれます。

これによって、アプリケーションのみ・データべ―スのみに更新のアクションを取ることができ、変更の影響範囲を最小限に抑えることができるため、迅速性を担保できます。

反対に、1つのサーバに複数のコンポーネントを立ち上げて構成することを「モノリシック」(一枚岩の)なシステムと呼びます。

コンポーネントを細分化できないモノリシックな構成を取らざるを得ないシステムの場合は、コンテナに向かないとされています。また、サードパーティ製ソフトウェアや特定のライブラリ、特定のハードウェアに依存するアプリケーションではコンテナでの動作が保証されない場合があります。 コンテナを初めて導入しようと検討されている場合は、シンプルなアプリケーションからコンテナ化を検討します。



オーケストレーションツール

コンテナは実際には手動で管理せず、オーケストレーションツール(Kubernetesなど)を使用することが多いです。オーケストレーションツールとは、クラスタを構成し、構成に基づいてリソース管理やスケーリング、スケジューリング、フェイルオーバーなどに伴い、コンテナの自動デプロイを行ってくれるツールです。

上述のマイクロサービスの構成と組み合わせることで、アプリケーションを常に変更しながら迅速なデプロイを目指すシステムには有効な手段となります。


CI/CD

コンテナやオーケストレーションツールを用いることで実現できる開発手法が「CI/CD」です。CI/CDは、「継続的インテグレーション / 継続的デリバリーとデプロイメント」(Continuous Integration / Continuous Delivery&Deployment)のことで、その名の通り、常に変更し続けるような開発手法を指します。これを実現するための自動化の仕組みのことを「CI/CDパイプライン」と呼びます。IaCの手法や構成管理ツールを用いて実現されます。

話が開発手法にまで及びましたが、 そのアーキテクチャとして、コンテナが採用できると考えていただければと思います。



コンテナ導入の3ステップ


1. コンテナの学習

コンテナの導入を決定しましたら、コンテナ実行環境の基本操作などの学習が必要です。一般的によく利用されているコンテナ実行環境はDockerになります。また、複数のコンテナホストでクラスターを構築して、その上で稼働するコンテナを一元的に管理できるコンテナオーケストレーションツール(Kubernetesなど)もよく利用されています。

これらの学習は公式ドキュメントや動画、Eラーニングサービスなどで実施できます。Docker社やコンテナソリューションを多く提供しているAmazon Web Services(AWS) から、無料で学べるコンテンツも提供されています。

また、DockerもAWSも、無料利用枠が用意されているため、実際に環境を触りながら覚えるのもおすすめの方法です。

  Docker: コンテナー アプリケーション開発の加速 Docker は、開発者がコンテナー アプリケーションを構築、共有、実行できるように設計されたプラットフォームです。面倒なセットアップは私たちが行うので、あなたはコードに集中できます。 Docker


  アマゾン ウェブ サービス(AWS クラウド)- ホーム Amazon Web Services は、信頼性と拡張性に優れたクラウドコンピューティングサービスを低料金で提供します。アカウント作成は無料。料金はご利用分だけです。 Amazon Web Services, Inc.




2. まずは全部まるっと一つにコンテナ化

コンテナ実行環境についてある程度理解ができたら、次に現行システムをコンテナ化する流れを検討します。

アプリケーションのコンテナ化を検討の際には1コンテナ1プロセスが望ましいと記載しましたが、最初から理想的なコンテナ環境をイメージすることは困難です。そのため、現行のシステム環境(As-Isモデル)から最終的なコンテナ環境(To-Beモデル)へ至るまでに段階を踏みながら近づけていきます。



コンテナ化の一番最初の段階としては、現行のアプリケーションをそのままコンテナ上で稼働させます。小さなアプリケーションであれば1つのサーバー上でApp、DBが稼働していることがあるかと思いますが、それらをそのまま1つのコンテナで稼働させます。

これを実施する理由は、コンテナイメージの作成などのコンテナ化に必要な工程を出来る限りシンプルにして、まずはコンテナ実行環境での操作に慣れることやコンテナ環境の構成を現行環境と比較して理解することがあります。


3. 少しずつ細分化、サービスの連携

シンプルなコンテナ構成でアプリケーションが稼働することができれば、次の段階としてコンテナの細分化や他サービスとの連携などを検討します。

AppとDBを同じコンテナ内で稼働させている場合は、それぞれ別のコンテナで稼働させてみたり、他サービスとの連携ためのアプリケーション改修を行います。


また、最終的にコンテナオーケストレーションツールの使用を検討している場合は、Dockerホストで稼働を確認したコンテナを、Kubernetesクラスタで稼働させます。 このように段階を区切りながら最終的なToBeモデルに近づけていきます。



コンテナの効果的な導入と運用のために

このようにステップを踏みながら少しづつコンテナ技術を導入していくことで、コンテナのメリットやデメリットを発見でき、それらをふまえることでアプリケーションごとのコンテナ化も検討しやすくなります。

その一方で、コンテナ導入は新たなテクノロジー活用にとどまらず、ITチームの体制や組織文化の変革を含めた中長期的な「道のり」となり、自社だけでの検討や実践が難しいことがあります。KyriosやKyriosを提供しているJTPでは、構築の前段階であるトレーニングから、実際のシステム稼働開始後の運用まで、幅広くサポートしています。


PoCサービス

コンテナを継続的使用し続けられるよう、ハンズオントレーニングやPoCの段階から支援するサービスを提供しています。

  アプリケーション モダナイゼーション - コンテナ導入によるアプリケーションのモダナイズとDevOpsプロセスの実践を支援 - JTP株式会社 JTPは、コンテナの技術習得や概念実証から、実際の導入・運用、そしてDevOpsプロセスの実践まで、アプリケーションのモダナイゼーションの長い「道のり」を最初から最後までサポートします。 JTP株式会社



オブザーバビリティサービス

また、コンテナベースのシステム構築後、インフラからアプリケーションレイヤーまでの監視・運用を行う「オブザーバビリティサービス」を提供しています。構築後の持続性を心配されている方は、ぜひご検討いただけたらと思います。




導入事例

独立系のソフトウェア会社として全国の中堅・中小企業向けに業務の全体最適を実現するパッケージ製品「デザイナーシリーズ」を提供する株式会社ユニオンシンク。サブスクリプション型サービスへの転換を目指す中、アプリケーションのコンテナ化によるモダナイゼーションに注目され、JTP の「コンテナリゼーションPoC サービス」を利用して既存アプリケーションのコンテナ化のPoCを行い、既存アプリケーションの改修をゼロに抑えたコンテナ化、そしてサービス化後の売価の判断基準となるコスト感を把握することで、実際のサービスインに向けた次のフェーズに進むことができました。


Kyriosブログ新着記事

Kyrios 導入事例