コンテナは、業務をこなすために必要な最低限のリソースのみを配備したアプリケーションロジックのコンポーネントを格納する。仮想マシン(VM)と異なり、コンテナはOSを必要としない。OSリソースはAPI経由で呼び出される。(続きはページの末尾にあります)
大手金融機関Nationwideは、Red Hatの技術を用いてリアルタイムデータの活用を進めている。当初同社が抱えていた課題から、導入した仕組み、成果までを解説する。
異なるインフラ間の差異を「ハイパーコンバージドインフラ」(HCI)が吸収するのではないか――。専門家の間でこうした見方が広がり始めている。HCIに何が起きているのか。HCIの動向を整理し、これからを予測する。
「Java」でアプリケーションを開発する際、適切なライブラリを選ぶと、より優れた機能を効率的に実装しやすくなる。Javaライブラリ選びのポイントを7つ紹介する。
「Docker」の登場によって、あらためて脚光を浴びた「コンテナ」。その歴史は意外と古い。コンテナはどのような変遷を経てきたのか。仮想マシンとの違いとは。コンテナの基礎知識をおさらいする。
「Java」エンジニアの間で、次に習得すべきプログラミング言語の候補として「Kotlin」「COBOL」を検討する動きがある。その背景には何があるのか。JavaエンジニアがKotlinおよびCOBOLを習得する意義とは。
「Docker」を使い、「Windows Server」のレガシーアプリケーションをモダナイゼーションしようとする企業が直面する課題とは何か。製造受託大手Jabilの事例から探る。
Microsoftのオープンソースコミュニティーへの貢献は称賛に値する。Windows上でLinux用実行ファイルをネイティブ実行する「Windows Subsystem for Linux」も興味深い施策の1つだ。
コンテナそのものを永続ストレージのプラットフォームにするというアイデアは、一見すると不適切だ。しかし、それを上回る数々のメリットがある。
仮想化やコンテナの普及により、従来型の共有ストレージではニーズが満たせなくなってきた。コンテナ時代のストレージの要件とは何か。
デフォルトのDockerは永続ストレージをサポートしていなため、コンテナの削除によってデータも失われる。だが、ここで紹介する方法を使えば永続ストレージを利用できる。
並行処理、分散処理に優れたプログラミング言語であるErlangだが、企業利用例は多くない。Erlangを活用しているbet365は、Erlang普及のための活動を始めた。
コンテナ化は、実質的にはOSレベルの仮想化といえる(これに対してVMはハイパーバイザー上で実行され、それぞれフル機能のOSを伴う)。コンテナはパッケージ化が簡単で、軽量かつ実行場所を選ばない。複数のコンテナを1つのVMにデプロイすることもできる。
マイクロサービスは、例えばネットワークトラフィックのルーティングやオンライン決済、医療結果分析といった単一機能のアプリケーションを指す。その概念は新しいものではなくWebサービスから進化したもので、複数のマイクロサービスを連結してアプリケーションとして機能させるのは、数年前に流行したサービス指向アーキテクチャ(SOA)の進化形だ。
コンテナとマイクロサービスは同じではない。マイクロサービスはコンテナの中で運用することもあれば、プロビジョニングされたVMとして運用することもある。コンテナはマイクロサービスのために使われるとは限らない。だが、コンテナはマイクロサービス開発とデプロイの優れた手段であり、コンテナ運用のツールとプラットフォームはマイクロサービスベースのアプリケーションを管理する手段として優れている。多くの場合、これらの用語は相互に入れ替えることもできる。
コンテナは何年も前からUNIXやLinuxに統合されてきた。最近は総合的なサポートのエコシステムが成長してきた。
これに関わるサプライヤーは数多い。だが「Docker」が市場の中心で主導していることに異論はない。Dockerは、何百万というデベロッパーや数万もの組織がその技術を使っていると説明する。ただ、多くの組織にとってコンテナ化が目新しいものであることを示す統計もある。Dockerの顧客のうち、コンテナを本番環境で運用しているのは40%にとどまる。
Docker の優位は、必ずしも独占状態にあることを意味しない。むしろそれとは程遠い。コンテナのエコシステム全体を見渡すと、選択肢は豊富に存在する。
複数のコンテナはクラスタにデプロイされ、幅広いツールを使って管理される。そうしたコンテナの多くは事前に構築されたコンポーネントとなり、積み重ねてアプリケーションイメージを構成する。主なメリットは、アプリケーションを運用した状態で個々のコンテナを簡単に「上書き」できる点にある。定期的なダウンタイムが減れば、事業継続性が向上する。
これは「DevOps」の概念の台頭につながってきた。DevOps では、より速いペースで新しいソフトウェア機能を直接 OS 環境にデプロイできる。
中核的なコンテナ技術の多くはオープンソースであり、VMware のようにかつてはこれを避けていたサプライヤーも引き込まれている。その中心にあるのが 2015 年に発足した「Open Container Initiative」(OCI)だ。OCI は LinuxFoundation の傘下でコンテナ形式とそのランタイム環境に関するオープンな業界標準を策定する。Docker はその土台とするために、自らの形式とランタイムを OCI に提供した。
コンテナ化されたコンポーネントの多くは「GitHub」「Docker Hub」のようなオープンソースコラボレーションプロジェクトからダウンロードできる。全てのオープンソース技術にいえることだが、市場に進出しているサプライヤーは、安定したバージョンを関連サポートサービスと併せて提供することによって収益を確保している。