さくらの新サービス??Dockerコンテナホスティングサービス Arukas(アルカス)をご紹介!

こんにちは! Arukas 担当の山田です!

今回は、Dockerコンテナホスティングサービス『Arukas(β版)』のご紹介です!

はじめに

これまでのサーバの初期セットアップ作業というと、Ansible や Chef のような構成管理ツールを使用するであるとか、代々受け継がれる秘伝のシェルスクリプトを適用するであるとか、誰かがwikiに書いたメモをひたすらコピペしてコマンドを投入していくようなセットアップ作業が一般的でした。

configration_tools

シェルスクリプトはちょっとしたセットアップ作業には向いてます。
しかし、サーバの種類やOSが増えるとともにコードが増加しやすく、コードに一文字の誤りがあるだけでも実行途中でセットアップが中断してしまいます。スクリプトが中断された場合には該当箇所を修正してからスクリプトを再実行。運が悪ければ、OSの再インストール作業からやり直しです。セットアップが必要なサーバが一台だけならまだしも、数台~数十台のセットアップ作業でそのようなトラブルに見舞われると一日潰れてしまいます。

AnsibleChef のようなシステム構成管理ツールでは冪等性が概ね確保されているので、OSの再インストールからやり直しになるようなことは滅多にありません。しかし、それらのツールを使用するにあたってはツールの学習コストやコードの保守コストが無視できない程度に発生します。

あるいは、1日で100台単位のサーバをセットアップをしなければならない場合であれば、現場でOSインストール作業してしまうとネットワーク回線が輻輳して進捗が大幅に遅延してしまいますので、秋葉原まで出向いて玄○志向などのディスク複製機(デュプリケーター)を可能な限り調達してきてデータセンター内に持ち込んでセットアップ済みサーバの起動ディスクをひたすら複製してOS起動してIPアドレス設定だけ書き換えていく・・・という経験をされたような方もいらっしゃるかもしれません。

Docker とは

Docker は、米Docker,Inc. が開発したオープンソースソフトウェアです。
紙面に限りがあるので、誤解を恐れずにざっくり説明してしまうと、「好きなアプリケーション環境をダウンロードしたり、自分好みにカスタマイズ編集したりして、お気に入りのアプリケーション環境としてDocker対応マシン上で起動できる。」という、新しいタイプのツールです。

kinematic

Docker Toolbox に含まれている GUI ツール Kitematic

Docker には、今や世界最大のアプリケーションカタログとも言える Docker Hub の存在が欠かせません。Docker Hub には WordPressGhost のようなメジャーなものから NmapServerspec のようなインフラエンジニア向けのツールまで、およそ46万種類を超えるアプリケーション環境が Docker イメージとして保管されています。
Docker Hub からお気に入りのDockerイメージをダウンロードして、Dockerがインストールされているマシン上で起動することで、WordPress や Ghost 環境などをこれまでよりもずっと簡単に立ち上げることができようになります。

docker_pull_apps

Docker Hub には 46万種類以上の Docker イメージが保管されている

Dockerfile と呼ばれる定義ファイルに Docker イメージ化したいアプリケーション環境の構成情報を定義することで、お気に入りのDockerイメージを作成することもできます。Dockerfile には OS や 作成者名、環境変数、セットアップコマンドなどを定義できます。

dockerfile_example

Dockerfile の記述例

Docker は Windows や Mac にもインストール可能な基本無償のオープンソース・ソフトウェアです。
Linux サーバだけではなく、ノートPC上でも Docker を動かすことができます。

docker_simple_workflow

Docker を用いた場合の開発ワークフローの一例

Docker を開発用途に利用するのは比較的容易です。

  • 基本的な部分はとてもシンプルで学習コストが低い。
  • Dockerfile は Git ライクなバージョン管理やワークフローが可能。
  • 従来的な開発ワークフローとの親和性が高い。
  • 手元にあるマシン上で迅速にアプリケーション環境の動作確認がしやすい。
  • アプリケーション環境構成の自由度が高い。
  • コンテナと既存のミドルウェアとの親和性が次第に高まりつつある。

 

一方で、本番環境では既存のインフラからの移行を難しくする以下のような特徴があります。

  • Docker と Dockerコンテナ の運用が必要になってしまう。
  • 既存のインフラ(ネットワークやストレージ、その他アプライアンス製品)との親和性が低い。
  • コンテナ内部にはデータを永続的に保管することはできない。

 

このような特徴のため、「Docker は開発環境ではとても便利に使えるけれども、いざ本番環境では使いにくい・・・」というケースが多いです。

Dockerコンテナホスティングについて

Arukas は、Dockerイメージの起動に最適化されたホスティングサービスです。

arukas_about

Arukas は、Docker Hub 上で保管されているアプリケーション環境をグローバルなインターネット環境上に展開することを支援します。Arukas 上で公開されたアプリケーションには世界中からアクセスすることができます。

Arukas のインフラは、国産IaaSクラウドとして数千社の運用実績を持つさくらのクラウド上に構築されています。国内最大級のバックボーンを誇るネットワーク回線に収容されているため、驚異的なスピードで DockerHub 上にある Docker イメージを取得してインフラ上に展開することが可能です。

sakura_as_backbone

さくらインターネットのバックボーンネットワークマップ(2016年8月現在)

インスタンス数を指定するだけで必要なインスタンスを確保・展開することが可能です。
素早く、欲しいインスタンスを欲しい分だけ作ることができます。一時的に複数台の同一構成インスタンスが欲しい場合などに便利です。

app_scale_out

インスタンス数を指定するだけでスケールイン・スケールアウトが可能

最新版の Docker イメージに入れ替えたいときには、対象のDockerコンテナのバージョン情報を更新するだけです。新バージョンのコンテナのサービスが起動してから、稼働中の旧バージョンのコンテナを自動停止します。これは Blue-Green Deployment とも呼ばれる機能で、無停止に近いアップデート作業を実現することができます。

blue_green_deployment

また、Arukas は常に安定的でかつ最新に近い Docker 実行環境を提供します。
Docker バージョンの更新、あるいは複数コンテナの管理といったユーザーの負担を軽減します。

まとめ

世の中は実に多種多様なアプリケーションやクラウドサービスを組み合わせながらサービス開発することが当たり前の時代になってきました。

Docker は様々なアプリケーション環境を簡単なコードで定義し、再利用可能なテクノロジーの一つです。
アプリケーション環境をカスタマイズ可能な必要最小限のコードで定義し、インターネットに接続されている Docker 対応マシン上であれば Docker イメージ化されたアプリケーション環境を再利用可能です。クラウドストレージと接続する構成設定や環境変数を付与することでデータの永続化も実現可能です。

安定性や品質面では依然として既存のテクノロジーやサービスには惜しくも及びませんが、Docker 本体や Docker 周辺のツールの開発、あるいはコミュニティは極めて急速なスピードで拡大を続けており、そう遠くもないうちに多くの本番環境上でも安全に実用可能な品質水準に達するテクノロジーに成長する可能性があります。

docker_hub_pulls_growth

Docker Hub に保管されている Docker イメージの累計ダウンロード数は驚異的に増加している

コンテナ技術を最大限に活用することでサーバコストを抑制することは可能ですが、コンテナ技術や Docker は運用の負担を削減することを目的としたテクノロジーではありません。従来のテクノロジーを用いるケースと同様に、運用までを見据えたサービス設計が重要になります。
サーバコストの削減に成功したとしても、運用フェーズにおける負担が増加してしまっては Docker を本番環境で導入する価値は薄れてしまいます。Docker が得意とする分野をしっかりと理解した上で、使いどころは十分に検討する必要があります。

Arukas をはじめとする様々な Docker コンテナホスティングサービスは、ユーザーが抱えることになる様々な運用負担を軽減することを目的とするサービスです。とはいえ、緊急で今すぐにDockerコンテナホスティングが欲しい!という人はそうそうなかなかいないと思いますので、この場では「Docker コンテナホスティングとはこういうものなんだ」という感触を覚えてもらうだけでも後になってから役立つと思います。

あとがき

この業界に入ってきた人であれば、自分で作成したwebページを公開するために無料のレンタルサーバを契約してあまり意味も理解しないまま言われるがまま書かれているがままにFTPを使ってファイルアップロードしてなんとかかんとかして自分のwebページを公開したような経験ってあると思うんです。

ffftp_client

著者も数年ぶりに起動した FFFTP・・・

最近であれば FTP ではなく git に置き換わりはじめていて、公開場所もレンタルサーバから github や S3 、あるいは VPS へと多様な形への変化が起きています。これらのツールやサービスというのはどれもシンプルでリーズナブルな価格帯で使いやすく、長年使えて親しみやすい魅力的なサービスプロダクトです。そして、使いこなすことができれば予想以上の規模までスケールすることが可能です。

Arukas は Docker の基本的な使い方さえわかれば、誰でも自分の web ページやサービスを公開できるようなサービス公開基盤として、予想以上の規模までスケールできるサービスを目指して前に進めていくつもりです。今後とも Arukas をどうか何卒よろしくお願いいたします。

おまけ:Arukasのチュートリアル

Arukas を体験してみたい!という方のために、Arukas のハンズオン資料を Qiita で公開しております。
チュートリアル形式で進められるので、どうぞご覧くださいっ。