なぜDXにコンテナ技術が必要なのかを日本一わかりやすく説明する

ITインフラ

最近ITインフラ業界では、コンテナとかK8S(kubernetes)がものすごく騒がれており、現場のエンジニアも「これから重要になるからスキルを習得せよ」と言われるようになりました。

ただ、インフラ屋さんからすると本格的にアプリ開発をしている訳ではないので、どういう業界の背景があって、なぜサーバー仮想化ではなくコンテナにシフトする必要があるのかイマイチ腹落ちしない方も多いかと思います。

そのため、業界動向として何が求められており、なぜコンテナ技術が重要なのかをまとめました。

結論からいうと、「DX(デジタルトランスフォーメーション)を生き残りをかけて多くの企業が推進しているということ。DXの実現において様々な制約を排除するためにコンテナが必要」となります。

それでは、詳細について以下の順に記載していきます。

DX(デジタルトランスフォーメーション)とは何か?

まず、DX(デジタルトランスフォーメーション)の意味ですが、以下の2つの意味があります。
「デジタル技術を浸透させることで人々の生活をより良いものへと変革すること」
「既存の価値観や枠組みを根底から覆すような革新的なイノベーションをもたらすもの」

ただ、これだと漠然としてますね。もっとわかりやすくするために要件に落とすと以下の意味になります。
「データやデジタル技術を駆使して、ビジネスに関わるすべての事象に変革をもたらす」

もう少し具体的にしてわかりやすくしましょう。以下の通りです。
「IOTを活用するか、大量にあるデータをAI使って有効活用する。それにより誰も作ったことのないサービスを開発すること」

つまりDXとは、「IOTやAIを使って新しいサービスを作ること」です。大分シンプルになりました。

AIはかなりバズワードとなっているのできちんと理解しましょう。AIがブログ記事作成の自動化にどう貢献できるのかをまとめたで解説しています。

AIがブログ記事作成の自動化にどう貢献できるのかをまとめた
自然言語処理がブログ記事作成の自動化にどう貢献できるのかをまとめました。自然言語処理では「何について書いているのかがわかる」「ある記事の日本語らしさを計算できる」「投稿されたコメントがポジティブかネガティブかものか自動判定出来る」などが出来ます。

では次に、なぜDXが求められるのかを解説いたします。

なぜDXが求められるのか?

多くの企業がDX(デジタルトランスフォーメーション)を推進している背景としては、DXを推進しているプラットフォーマーに多くのビジネスが奪われていることが背景にあります。具体的には以下のプラットフォーマーが有名です。

・UBER
・NETFLIX
・airbnb

これらの特徴としては、実際に物理的なモノがなくてもDXを成功させ、デジタルの世界で利用したい人と提供者を結びつけていること。その結果、モノをもっている企業に勝利している点にあります。世界1の配車サービス会社は車を保有していない、とか世界1のホテル会社はホテルを所有してない。とか言われてます。

UBERの例だと、配車サービスなのに、車を保有してないどころか、ITリソースも以下の通り他社サービスを組み合わせているだけです。

・インフラ:AWS
・地図:Google
・コミュニケーション:twillio
・電子メール:SendGrid
・決済:Braintree

このように、DX推進すれば他の業界をも飲み込めること、また逆にDX推進しないと飲み込まれることに経営陣は気づき、「我が社はDX推進するぞ」と多くの企業が経営施策に掲げるようになりました。

コンテナとは何か?コンテナは何が嬉しいのか?

コンテナーとは、ホストOS上に論理的な区画(コンテナー)を作り、アプリケーションを動作させるのに必要なライブラリやアプリケーションなどを1つにまとめ、あたかも個別のサーバーのように使うことができるようにしたものです。

現在は仮想化が主流ですので、仮想化とコンテナの対比で説明します。

仮想化とコンテナの対比を示した図が以下通りとなりますが、ライブラリとアプリケーションがセットになっており、ライブラリとOSの間にDocker Engineが入っていることがわかります。

つまり、コンテナはアプリ(ライブラリより上)とインフラ(OSより下)が分離しているというのが最大の特徴となります。これの何が嬉しいのかというと、以下大きく3つのメリットがあります。

メリットその1:アプリ移行を柔軟に行うことが出来る

アプリとインフラが分離しているので、オンプレでもクラウドでもどの環境でも動きます。

これにより、クラウドBからクラウドAのAPIを利用するためにクラウドAに移行させるとか、アプリ間連携の遅延の解消のためのクラウドからオンプレに移行させる、といったアプリの移行が柔軟に行うことが出来るようになります。

メリットその2:アプリがインフラ作業に依存しない

アプリとインフラが分離していることで、アプリがOSのカーネルの影響を受けません。

これまで、OSのパッチ適用の都度、上で動くアプリの稼働確認をしなければなりませんでしたが、稼働確認をしなくてよくなります。また、アプリをすぐに起動したい場合に、OSの起動を待つ必要もなくなります。

メリットその3:アプリ展開のスピードの向上

アプリとインフラが分離していることで、開発から本番への適用がスムーズに行えます。

通常アプリ開発は、開発環境、テスト環境、ステージング環境、本番環境とアプリを移行させながら開発を行います。

しかし、開発から本番環境まで全て同じハードウェア・OS・ミドルウェアが設定されているわけではないため、バージョンの不一致でテスト環境ではうまく動いたけど本番環境では動かなかったという事態が発生することがありました。

アプリとインフラが分離していればこの事態を防ぐことができるのでスムーズに本番リリースが出来るようになるというわけです。

なぜDXを実現するためにコンテナ技術が必要なのか?

以上、DXが求められている理由とコンテナ技術のメリットについて説明しました。DXとは「IOTやAIを使って新しいサービスを作ること」なので、必ずしもコンテナが必要となるわけではありません。

ただ、新たなサービスというのは「先行者利益」が大きいため、DXを推進している企業の多くは先行者利益を得るために従来よりもリリーススピードの向上を重視するようになりました。

また、AIを使うためには自社でAIが学習するためのデータセットを用意して一から開発するのは困難なケースがあるため通常APIを使用します。A社のAPIを使うためには、A社のクラウドにアプリケーションがあることが前提というような制約があるため、クラウド間を柔軟に移行できる環境作りが必要となります。

一言でまとめると、「DXを実現するためにはタイムリーなサービス展開が必要であるが、従来の仮想化したインフラでは制約が多くサービス展開のボトルネックとなっていたので、制約を取り払うためにコンテナ化する。」ということになります。

以上となります。なお、K8Sはコンテナ管理の技術となりますが、それはまた別の記事でご説明したいと思います。

タイトルとURLをコピーしました