自宅でできる「一人DevOps」その1

docker-logo

こんにちは、伊藤忠テクノソリューションズの金子です。

先日開催した弊社主催のイベントにて、自宅でできる「一人DevOps」と題した発表を行い、デモを行いました。そこではDevOpsという言葉の起源について触れ、企業でDevOpsを成功させるには、「ツール」と「文化」の変革が必要であることをお伝えしました。

弊社にお声がけいただければ、この「ツール」と「文化」の変革について全力でお客様をご支援させていただきます。ですが、まずはDevOpsがどういうものかご自身で体験していただきたいと思い、「一人DevOps」環境の構築手順をご紹介したいと思います。

本手順を実施することで得られるもの

アプリケーションを素早くアップデートし、すぐにリリースするというアジャイル・DevOps的な開発プロセスを実現する開発環境とはどういうものかを理解することができます。

対象読者

ウォーターフォール開発をずっとされてきた方、インフラの運用をされている方を想定しています。本手順を進めるにあたって、開発スキルは特に必要ありません。ツールのインストールや簡単なコマンドライン操作ができれば大丈夫です。

構築するDevOps環境について

以下の構成の環境を構築していきます。

overview

開発者(あなた)がコードを書き、それをGithubにプッシュすると、TravisCIにて自動でテストが行われ、最終的にDocker Cloud上で稼働しているアプリケーションに変更が反映されるという流れです。ローカルPCでは、Dockerを使った開発を行います。

いわゆるウォーターフォール開発では、テストは開発を一通り終えた後、まとめて一気に行うという流れでした。ですが、アジャイル・DevOpsの開発プロセスでは、小さな変更を追加するたびにテストを行います。当然、変更を加えた箇所だけでなく、その変更が全体に影響を及ぼしていないかを確認する回帰テストも同時に行います。こうすることで問題を早期に発見することができ、ソフトウェア開発の品質と生産性を向上させることができます。

ソフトウェアの規模が大きいとその分テストの量も多くなるので、小さな変更のたびに手動でテストを行うというのは現実的ではありません。そこで、テスト項目をプログラム化し、自動化ツールでテスト工程を自動化します。今回の環境では、TravisCIが自動化ツールの役割を担います。

テストをパスしたら、すぐにプロダクション環境にリリースします。実際にはテスト実施後、開発者によるソースコードレビューなどの工程が入りますが、今回は省略しています。リリース作業も、従来は一大イベントでした。企業やシステムの内容によってやり方は様々だと思いますが、例えばシステムのメンテナンス連絡を事前に行い、リリース当日は数人がかりでチェックし合いながらリリース作業を行うといったものです。

アジャイル・DevOpsの開発プロセスでは、週に数回、サービスによっては1日に数回リリース作業がおこなわれます。ですので、リリース作業の自動化も必須です。今回の環境ではDockerを使い、新しいイメージが作成されたら自動でコンテナが再作成されるという仕組みを導入し、リリース作業を自動化しています。

※Docker Cloudはコンテナの実行環境であるDockerエンジンをAWS EC2上に構築します。Docker Cloudはあくまでもコンテナの管理を行うサービスです。

使用するサンプルアプリケーション

JavascriptのMVCフレームワークであるAngularJSのチュートリアル用として提供されているAngularJS Phone Catalogアプリケーションを使用します。あくまで題材として使用するだけですので、JavascriptやAngularJSの知識は特に必要ありません。開発やテストを行うための環境準備もコマンドで簡単に行うことができるようになっています。

今回はDockerを使用できるようにするため、本家のリポジトリに私の方で少し手を加えています。

お金かかる?

利用しているツール・サービスは基本的に全て無料です。ただし、AWS EC2に関してはしばらく放置していると無償枠を超えてしまうのでご注意ください

前提条件

本手順では、以下の準備が完了していることを想定しています。なお、動作確認はMacで行いましたが、Windowsでも同様の手順で進められる(はず)です。

  • Github、TravisCI、AWS、DockerCloudアカウントの作成
  • 使用するPCにGit、Node.js、Docker Toolboxがインストールされている

以下のコマンドが実行できればOKです。バージョンは問いません(現在公開されている最新バージョンであれば問題なく動くはずです)。

アカウントの作成は以下のリンクから行ってください。

各種ツールは以下のリンクからダウンロードできます。

リポジトリをクローンする

Githubからサンプルアプリケーションのリポジトリをクローンします。今回は私の方で手を加えたリポジトリを使用しますので、少しだけ準備が必要です。

Githubにログインし、https://github.com/tktk8924/angular-phonecatにアクセスしてください。

画面右上にForkというボタンがあるのでクリックしてください。

github-fork

Forkすると自身のアカウント配下にリポジトリが作成されます。以降の手順ではそちらのリポジトリを使っていきます。

リポジトリの準備ができたので、これをローカルPCにクローンします。以下のコマンドを実行して、リポジトリをクローンしてください。Githubアカウント名の箇所はご自身のアカウント名を入力してください。

ローカルPCにangular-phonecatというディレクトリが作成されていれば完了です。

開発環境の準備をする

ローカルPCで開発を行うための環境設定を行います。以下のコマンドを実行してください。

次に、アプリケーションをDockerコンテナ内で実行させます。以下のコマンドを実行してください。Dockerイメージが作成された後、Dockerコンテナが起動します。

コンテナが起動しているかを確認します。

コンテナの起動が確認できたら、アプリケーションにアクセスしてみましょう。まず、Dockerコンテナの実行環境であるDockerエンジンのIPアドレスを調べます。

次に、ブラウザで以下のURLにアクセスしてください。IPアドレスはご自身の環境に合わせてください。

http://192.168.99.100:8000/app

以下の様な画面が表示されればOKです。

angular-phonecat

以上で開発環境の準備は完了です。

今回はひとまずここまでにしましょう。お疲れ様でした。続きはこちらです。

Pocket

コメント