SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

直近開催のイベントはこちら!

EnterpriseZine編集部ではイベントを随時開催しております

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

Google Cloudが直伝! コンテナ基礎入門

DX時代に知っておきたい「コンテナ」の強み 技術発展の歴史から普及に至る背景を解説!

第1回:コンテナとは? その歴史となぜ広く使われるようになったのか

 アプリケーション実行基盤として広がりつつある「コンテナ」。最近では、デジタイルネイティブ企業やスタートアップだけではなく、エンタープライズ企業においても内製化の推進とともにアプリケーション実行基盤として採用が増えている。本シリーズでは全3回にわたって、インフラ担当者(第1回)、アプリケーション開発者(第2回)、システムアーキテクト(第3回)の目線で、コンテナ技術の利点について解説する。

モダンな開発手法を取り入れることで効果を発揮

 Googleには「DevOps Research and Assessment(以下、DORA)」というチームがあり、コンテナの採用を含む、モダンなアプリケーション開発手法を採用している組織のパフォーマンスと採用している技術やプロセス、組織の文化の関係について調査を行っている。

 DORAが行った2019年の調査結果によると、モダンなアプリケーション開発手法を取り入れている組織では、以下のようにコードデプロイの速さや、デプロイの失敗、問題発生時の対応速度が向上すると示されている。特に重要なポイントは、コードデプロイの頻度の向上により変化に追従するスピードが上がり、変更による失敗の低さも同時に改善できること。速度と品質を両立しながら改善も可能だという。

画像を説明するテキストなくても可
出典:Google Cloud「2019 Accelerate State of DevOps Report」

 ここで強調したいのは、これらの効果は必ずしもコンテナを採用するだけでは実現できるのではなく、CI/CDやテストの自動化、マイクロサービスアーキテクチャの採用など、モダンなアプリケーション開発手法を取り入れているということ。これらの技術とコンテナは親和性が高く、コンテナを採用することでより効果的に実現できる(第2回、第3回で解説する)。

コンテナが普及した背景を技術進歩で振り返る

 本シリーズで扱う「コンテナ」という言葉の定義を明確にする目的で、コンテナの歴史を振り返りたい。

 コンテナの技術の大元になっているのが、1979年にUnix Version 7に新機能として加えられた「chroot」だ。chrootを利用することで、あるプロセスのファイルアクセスを特定のディレクトリ以下に限定でき、プロセスの脆弱性が悪用された場合に、他のプロセスの脅威とならず、安全に複数のプロセスを一つのOS上で稼働させることが可能となった。

 続いてchrootを発展させる形で、IPの付与などネットワークの機能やコンテナとしての管理機能を拡張したFree BSDの「Jail」が2000年に登場。Linuxでのコンテナの実装として「Open VZ」が2005年に登場し、アプリケーションと必要なライブラリを「コンテナ」という単位で管理する概念が生まれた。その後、メモリ、CPUなどのリソースをプロセスグループ単位で制限する「cgroup」が2006年にLinux カーネルにマージされたことにより、コンテナのリソースアロケーションの仕組みが確立し、それを利用したLXC(Linux Container)が 2008年に誕生した。

 コンテナ技術における大きな転機になったのが、2013年のDockerの登場だ。それまでのコンテナの技術は環境構築が難しく、アプリケーション開発者だけで使うのが難しい技術であった。しかしDockerにより、アプリケーション開発者が定義ファイル(Dockerfile)を作成するだけでコンテナの作成が可能に。ベースイメージと呼ばれる環境の土台となるイメージはDocker Hubで共有されており、それをベースにDockerfileさえ作成すれば、いつでもどこでも環境を作成できることからコンテナ技術が広まったのだ。

 こうしてアプリケーション開発でコンテナ利用が普及したわけだが、商用サービスのアプリケーション基盤として利用するには、どのノードで稼働させるか、ノードの障害時には別のサーバでコンテナを起動し直すのか、リクエストの増減に応じてプロセスを増やしたり減らしたり、などの複雑な管理が必要であった。これを解決するのが、2014 年にオープンソースとして公開された「Kubernetes」である。Kubernetesはコンテナオーケストレーションの仕組みであり、ノードプールと呼ばれるサーバ群に対してDockerコンテナを自動で配置し、ノードの障害時には別のノードでコンテナを再起動するという管理作業を自動化することができる。

 Kubernetesの優れている点は、コンテナの配置だけではなく、複数コンテナへの負荷分散を実現しつつサービスへのアクセスを提供するロードバランサーの構成や、サービスの負荷状況に応じてコンテナを増やす/減らすといった、それまでインフラ部門がアプリケーションを稼働させるために行っていたインフラの構成設定についても、アプリケーション開発者自身でYAMLのフォーマットで定義することができる点だ。簡単にアプリケーションをコンテナでデプロイし、サービスとして稼働させる事ができるようになり、さらにコンテナの採用が広がることとなった。

 また、cgroupとKubernetesについては、Googleが開発しオープンソースとして公開した技術である。Googleでは2003年ごろから「Borg」と呼ばれるコンテナのアプリケーション実行基盤を独自開発、運用しており、すべてのサービスがコンテナで稼働している。Kubernetesは、このBorgで開発された技術をベースにオープソース化したもので、特に Kubernetesに関してはGoogleが培ってきたコンテナを商用サービスの基盤として利用する際に必要であった機能が実装されている。

 なお、本シリーズにおけるコンテナは、DockerコンテナをKubernetesで運用することを想定することとする。

次のページ
インフラ担当者から見た、コンテナ活用の利点3選

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
Google Cloudが直伝! コンテナ基礎入門連載記事一覧

もっと読む

この記事の著者

安原 稔貴(ヤスハラ トシタカ)

グーグル・クラウド・ジャパン合同会社 技術部長(インフラ、アプリケーション開発)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/18317 2023/09/19 09:00

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング