話題のDockerの魅力とは? OSSインフラナイター vol.1 レポート
6月15日、サイオステクノロジー株式会社のセミナールームにて「Docker 最前線!OSSエキスパート鼎談シリーズ: 攻めるITはこう実現する! OSSインフラナイター vol.1」が開催された。
ネットスケープ創業者 マーク・アンドリーセン氏が「すべての企業がソフトウェア会社になる」と予言したように、近年ではソフトウェアの活用による事業改善など様々な取り組みが見受けられる。2017年、ソフトウェアにおいてホットなトピックのひとつと言えばコンテナ技術だろう。
本イベントでは今もっとも人気のコンテナ技術「Docker」と、マイクロサービスなどで使われている「nginx」からみたコンテナ技術の講演があったのでレポートしていく。最後にOSSのエキスパート3名がエンタープライズITを語る鼎談の様子をお届けしよう。
巷で話題のDockerを知る ~ 先進企業は、なぜDockerを使って攻めるのか? ~
最初に登壇した日本ヒューレット・パッカード株式会社 オープンソース・Linuxテクノロジーエバンジェリストの古賀 政純氏は、Dockerが注目を集めている背景と革新性を語った。近年はビジネスの変化に瞬時に対応するためにマイクロサービス化が進んでいる。マイクロサービスとは小さなアプリケーションを組み合わせて構成されたシステムで、この小さなアプリケーションが動作するのがコンテナだ。
コンテナについて簡単にざっくりと説明すると、OS環境に近いが異なるものの上で目的のプロセスのみが動作する。仮想化環境との違いでメリットとしては、OSのインストールが不要なため環境構築を高速化できる、Hypervisorを介さないためオーバーヘッドが小さい、必要最小限のプロセスだけ動くのでOS上で実行するよりも安全性が高いことが挙げられる。
次に、構築手順書に基づいてOSとアプリケーションを構築する作業を省くという発想からDockerを紐解いてみよう。ここで活躍するのがDocker Hub(コンテナ共有サービス)から入手できるDockerイメージだ。これはコンテナの実行に必要なファイルシステムで、構築作業不要でコンテナを起動できる。このコンテナ上で開発してイメージの更新を繰り返していくのがコンテナシステムの典型的な利用方法だ。
DockerイメージをTARアーカイブにしてコピーすれば簡単に移動可能で、環境構築の手順をコード化したDockerfileは一連の流れを自動化できる。さらにDockerコンテナは、コピー元とコピー先で同じように動作する仕組みになっている。すなわち、実行環境やライブラリのバージョン、環境変数の違いで動かないことはない。このように可搬性と冪等性を確保できるのがDockerの魅力であり、環境構築や開発の高速化に寄与しているのだ。
Dockerの活用例として紹介されたのが、本番環境に手を加えないイミュータブル・インフラストラクチャという考え方と、負荷分散装置やルータで本番と開発環境を一度に切り替えるレッド・ブラック・デプロイメントと呼ばれる手法だ。セキュリティーホールを塞ぐパッチの適用や新しいサービスをすぐに提供する際など、アプリケーションの更新作業が頻繁に発生する環境においてはスピーディに対応できる、Dockerを採用したレッド・ブラック・デプロイメントが効果的だろう。
マイクロサービスで使われるnginxとコンテナ技術
続いて、サイオステクノロジー株式会社 OSS事業企画部 アクティングマネージャーの村田 龍洋氏が登壇した。nginxと聞くとWebサーバを連想しがちだが、実はそれ以外でも幅広く使われており、Webアプリケーションを加速させるツールだと言う。
まず、nginxの特徴は高速・軽量・高機能の3つ。Apacheと比較しながら高速かつ軽量な理由を探ってみよう。大きな違いはプロセスの立て方だ。プロセスベースのApacheは1プロセス1クライアントで同期処理を行うが、イベントベースのnginxは1プロセスで10,000クライアント以上を非同期処理できる。
このように、nginxではCPUの処理能力が重要だが、仮想化環境を利用するとハードウェアをエミュレーションするため、オーバーヘッドがかかってしまう。Dockerを使うとハードウェアのエミュレーションが不要になるので高速に処理できる。よって、Dockerとnginxは相性が良いと言える。
nginxはWebサーバ以外にどのように使えるのだろうか。いくつか具体例を挙げてみよう。フロントに置いてリバースプロキシとして使えば分散型のアプローチが可能だ。アプリケーションゲートウェイや動画の配信プラットフォームとして利用することもできる。これが特徴のひとつ、高機能に相当する部分だ。
続いてマイクロサービスに関する話題に移る。マイクロサービスは小さなアプリケーションをAPIで疎結合したものだ。モダンな分散型Webアーキテクチャ(マイクロサービスアーキテクチャ)には様々な利点がある。小さなアプリケーションを素早く開発してサービスの展開速度を向上できる。もし障害が発生したとしても対象のサービス以外は利用できるので、耐障害性に優れる。パフォーマンスを改善する時はボトルネックになっているサービスのみ変更できるなど拡張性も高い。
以上のようにコンテナ技術とマイクロサービスアーキテクチャの組み合わせは、開発者の生産性と事業のスピードを重視したシステムに最適だ。一方で基幹に使われるような安定性と信頼性を重視したシステムには不向きと言える。全てに共通して言えることだが、万能なものはない。用途に合わせて選択する必要があるだろう。
OSSエキスパート鼎談シリーズ: ここだけでしか聞けないDockerの内緒の話
OSSエキスパートが今回のテーマであるDockerについて語り合った。ほとんどがDockerを導入する時に考えておくべきことや今後の課題だった。全て取り上げると長くなるので、筆者がピックアップした中から要点だけ簡潔にまとめて列挙していく。特にDockerビギナーがハマりそうなポイントをおさえてあるので、ぜひ確認してもらいたい。
- コンテナ型仮想化のDockerは共通のカーネルでユーザランドを仮想化しており、例えばLinux上でWindowsのコンテナは動作しない
- マイクロサービスになりにくくコンテナ化できないようなシステムも存在するため、適用対象のシステムを理解しておくことが重要
- Dockerで動かしたいアプリケーションが技術的に動くかは別として、ベンダーがサポートしているかを確認する
- 簡単にダウンロードできるDockerイメージは信頼性が担保されていないので、検証してから使用するのが好ましい
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- SIの労働生産性を高めるIaCとは?ITエンジニアのためのコミュニティ「IaC活用研究会」キックオフイベントレポート
- APIマネージメントのKong、Mashapeからブランディングを一新して成長をアピール
- エンタープライズモバイルに必要なアプリの品質とは?―Think IT Mobile Developer Seminar 2016レポート
- レッドハット、コンテナベースの分散アプリケーションプラットフォーム「OpenShift Enterprise 3」の国内出荷を開始
- サイオステクノロジーがNginxの商用版「NGINX Plus」の国内販売を発表
- なぜKubernetesが必要なのか?
- サービスメッシュ時代のAPIマネージメントのあり方を3Scaleに訊いた
- CNDT 2020にNGINXのアーキテクトが登壇。NGINX Ingress ControllerとそのWAF機能を紹介
- CNDT2021、日本オラクルのエンジニアによるクラウドネイティブを再確認するセッション
- 事例から考えるDockerの本番利用に必要なこと