これまで数回にわたってニフティクラウドを使ってきた。ここまで使ってくるとだいたいニフティクラウドのUIがどういった設計思想で開発されているのかが見えてきて、勘に頼って作業するだけでもかなりのことがこなせるようになってくる。今回は、前回取り上げたニフティクラウドAutomationを使って、実際の運用レベルを構想したWebサイトの構築を行ってみる。複雑なシステム構築/運用においてかなり価値の高いサービスといえるので、本稿を参照のうえで是非使いこなしていただきたい。

なお、ここでは次のようなモデルのWebサイトを構築する。

  • ロードバランサーを活用した分散処理を実施
  • バックグラウンドサーバーを2台用意(Nginx on Ubuntu)
  • コンテンツはHTML5/CSS3/JavaScriptをベースとし、GitHubでバージョン管理を実施

HTML5/CSS3/JavaScript(ここでは特にBootstrapを採用した)を使った、いわゆる最近流行っているUIをもったWebサイトをGitHubで管理する方法を想定した。エンタープライズユースであればGitHubの有償版サービスを利用してプライベートリポジトリを利用することになるだろう。

このリポジトリをアプリとして登録して、2台のWebサーバーへデプロイする。フロントエンドのアクセスはロードバランサーとし、アクセス負荷の分散を実施する。Webサイトの開発自体はGitHubを経由して複数名で同時に実施し、デプロイにはニフティクラウドAutomationの機能を利用する形だ。最近流行のDevOpsをベースとした開発運用スタイルを想定したモデルになっている。

環境をセットアップ

先に説明した構造をもったスタックを作成する。このあたりの作業は前回説明したものとほとんど同じなので、詳しい説明は前回の記事をご参考いただければと思う。前回取り上げた内容とちょっと異なっているのは、レイヤーでロードバランサーを作成しているところだろう。しかし、ここまで作業できているなら、特に困ることなく作成できるスキルが身についていると思う。

今回のモデルに合うように新しくスタックを追加する(左図)。使い慣れたオペレーティングシステムでスタックを作成(右図)

Chefが必要な場合には左図の画面でカスタムJSONを指定することもできる。内容を確認してからスタックを作成しよう(右図)

スタックという概念が必要なのかどうか最初は半信半疑だったが、いったんこの概念に慣れてしまうと、スタックのない状態、つまりサーバーやロードバランサーなどを個別に関与する状態の方が不便に感じてしまう。特に作成するサーバーの台数が増えてくるとその感覚が顕著になってきた。プロジェクトごと、または目的ごとに「スタック」というまとまりがあることで、システム全体がすっきりとわかりやすくなっている。このあたりは使い込まないと見えてこないポイントではあるものの、ニフティクラウドAutomationの大きな利点であるといえよう。

次にレイヤーを作成していく

ここでは種類としてWebサーバーを選択(左図)。カスタムChefを利用するなら右図の画面でレシピを追加できる

追加のパッケージ(左図)やストレージ(右図)が必要であれば、ここで指定したり用意することも可能だ

確認してレイヤーを作成(左図)。そうして新しく作成されたレイヤーが右図になる

ここでロードバランサーを作成する。後で作成してもよいのだが、ロードバランサーはレイヤーで作成する仕組みになっているので、とりあえずこの段階で作成しておく。ただし、まだサーバーを作成していないので、ロードバランサーの対象になるサーバーに関しては後ほど設定することになる。

まずロードバランサーの追加を選択(左図)。ロードバランサーの作成はロードバランサーのページで実施することになる(右図)

左図のロードバランサー作成をクリックすると、各種条件を指定するページ(右図)へ推移する

ヘルスチェックに関する条件を設定(左図)。すると対象とするサーバーを指定するように求められるが、この段階ではまだ作成していないのでなにも選択せずに次へ進む(右図)

なお、アクセスフィルタを使う場合(左図)や使いたいオプションがある場合(右図)には、ここで設定することになる

内容を確認してロードバランサーを作成(左図)。すると右図のようにロードバランサーが新たに作成される

ロードバランサーを作成したところで、今度はサーバーページに移行してWebサーバーを2台作成しよう。

サーバーページへ移動(左図)し、まずは右図のページでサーバーの基本設定を行う

内容を確認してサーバーを作成(左図)。同じようにして2台サーバーを作成したら、それぞれ起動処理を実施(右図)

サーバーの起動が完了するまでしばらく待つ。無事サーバーの起動が完了したようだ

サーバー2台の作成が完了したら、次はアプリを作成する。ここではGitHubに仮のリポジトリを用意したので、それを利用する。Bootstrapのサンプルページをベースにした、簡単なWebサイトのトップページといった内容になっている。

アプリページへ移動(左図)。右図のように、ここではタイプにStaticを指定してアプリを作成する

あらかじめGitHubで用意しておいたリポジトリを指定する

SSL証明書(左図)やドメイン名(右図)を利用するなら、この段階で指定可能だ

内容を確認してアプリを作成(左図)。すると右図のように、アプリが作成される

ここまで来たら最後にデプロイを実施する。

デプロイページへ移動(左図)し、作成したアプリを選択。対象サーバーに作成したサーバーを指定してDeployを実行(右図)

デプロイ作業がはじまるので、しばらく待つと完了だ

サーバーも作成したので、ロードバランサーにサーバーを追加して仕上げを行おう。

レイヤーページへ移動(左図)し、右図の通りロードバランサーの追加を選択

先ほど作成したロードバランサーを選択してサーバーを追加する(左図)。するとロードバランサーのIPアドレスが確認できる(右図)

作成したサーバーにログインして実際に指定したリポジトリの内容が展開されているかをチェック

すでにページが閲覧可能な状態に。ロードバランサーも動作中

この状態で、作成したサーバーとロードバランサーの双方のIPアドレスにアクセスすると、同じ内容のコンテンツが表示されることを確認できる。用意したリポジトリ直下にindex.htmlファイルを作成してそこにコンテンツを書いてあるので、デプロイしただけでページが表示されたわけだ。

用意したサーバーにアクセスした画面(左図)と作成したロードバランサーにアクセスした画面(右図)

リポジトリをクローンして内容を書き換え、これをマスタに反映させてみる。次はこの反映がサーバー側にも伝えられるかどうかを確認しよう。

リポジトリを取得して内容を変更し、それをリポジトリに反映させる

デプロイページからコマンドの実行を選択(左)。コマンドとして「Setup」を指定して実行。そのまま処理が完了するまで待つ(右図)

完了後にページを再読み込みすると、書き換えた内容へ更新されていることを確認できる

このように、デプロイもアップデートもコマンド一発で完了することが確認できた。これはチームで開発する環境を整えるうえでとても便利だ。

これは癖になる ニフティクラウドAutomation!

ロードバランサーを採用した運用を実施しながら、Webデザイナー、コーダー、運用担当者、企画担当者らがチームを組んでWebサイトの開発を実施するとなると、一見とても面倒なことが起こりそうに思われる。しかしここまで見てきたように、プラットフォームそのものは画面をクリックしていくだけで簡単に用意できる。アクセス数が高い場合でもロードバランサーを活用すればスケールアップでき、さらにコンテンツの同期もデプロイページから簡単に実施できる。

同じことをすべて手動でやろうとすればなかなか手間のかかることになるが、ニフティクラウドAutomationはこれの大部分を自動化できるので、複雑なシステム構築/運用においてかなり価値の高いサービスといえる。しかも今回は、カスタム機能は使わないですべてデフォルトの機能だけを使っている。用意されている機能の一部を使うだけでここまでできるのだから、カスタム機能を使えば案件ごとのレアな要求にも対応できるだろう。すでにニフティクラウドのユーザーであれば、Automationの機能※は一度は使ってみてほしいところだ。まだニフティクラウドを使っていない方でも、現在は利用料が7万円分無料のキャンペーンも行っているようなので、この機会に試してみるのもよいかもしれない。

ニフティクラウド Automationの詳細はこちら