Vagrantの機能を使って開発環境の効率をあげてみた。

     - 運用管理, 開発ツール ,  


プラットフォーム・ワンのシステムの運用・保守担当のエンジニアです。

保守の仕事に関わると、
ユーザからのお問い合わせだったり、監視アラートによる検知から
システムを調査することがあります。

ログとソースコードを見て、不具合を特定し改修する。
すぐできればカッコいいですが、

「本番環境に反映して別のエラーが発生して手戻りになる」

といったことが発生すると、非常にカッコ悪いです。

そういったことを防ぐにはどうすればよいか。
今回は、そこに重きをおいて、MacBookAirで開発環境を作成しました。

やりたいこと

構成は以下のとおりです。

スクリーンショット 2015-05-29 6.49.13

2つ、ポイントがあります。

1) 手戻りをなくすために、本番環境と同じ場所で動作確認テストを完結させたい。

クライアントPCに本番環境と同じ環境を構築できる
仮想環境サーバーのツール( Vagrant + VirtualBoxの構成)をインストールし、
ここにソースファイルをデプロイします。

2) テスト環境に反映させる時間を短縮したい。

改修作業の一般的な流れは、

  • ソースファイルの編集
  • 編集完了のソースファイルのコミット
  • コミットしたソースファイルをテスト環境へのデプロイ

となるかと思いますが、

自分の経験から、間違ったロジックのソースファイルをコミットしたり、
ソースファイルのテスト環境へのデプロイ漏れしたり、
といったことを発生させていたので、以下のように見直してみました。

  • ソースファイルの編集
  • Vagrantのrsync機能によるテスト環境へのデプロイ
  • テスト環境での確認作業後、gitへのコミット

といったフローになるよう構築しました。
デプロイ作業の工数削減と間違いソースファイルのコミットを予防できるので、
手間が減らせたのかなと思っています。

実際に動かす。

最後に、上のフローを実践します。

プラットフォーム・ワンの運用するMarketOneで、
タイトル画面の背景色が青くなっていたという不具合報告を受けたとします。
(※実際に発生したら、騒ぎになりますので、画面ではmy.marketone.jpとドメインを変えてます)

スクリーンショット 2015-05-20 15.42.35

 

ソースファイルを編集します。

スクリーンショット 2015-05-27 14.42.44

ソースファイルを保存して5秒ほど待ちます。

D, [2015-05-22T10:45:58.677904 #7878] DEBUG — : Adapter: considering TCP …
D, [2015-05-22T10:45:58.678084 #7878] DEBUG — : Adapter: considering polling …
D, [2015-05-22T10:45:58.678194 #7878] DEBUG — : Adapter: considering optimized backend…
==> default: Rsyncing folder: ローカルディレクトリ => 仮想環境ディレクトリ
==> default:   – Exclude: [“.vagrant/”, “ログディレクトリ”]

コンソールに上のように表示されていれば、すでにテスト環境にも反映されたため、
ブラウザから動作確認でき、FIXの確認ができたのでコミット→本番環境デプロイ
と作業します。

スクリーンショット 2015-05-20 13.59.30

 

少しでも手戻りをなくすアイデアとして、ひとつの参考になれば幸いです。


DACエンジニア採用情報

  関連記事

クラウド電話API “Twilio”で起こされてみた

どうも、開発部のクラヴマガです。 弊社サービスも最近はAWSの様なクラウド環境でサービスを構築することが多くなりました。 そこで問題になるのが、障害などによる深夜対応・・・。 データセンターに物理サーバをおいていた頃は、データセンターから障害発生時に 電話連絡をもらっていたのですが、クラウド環境では …

Android 非同期処理についてまとめてみた

Androidには、UIに影響を与えないよういくつか非同期処理が用意されています。 今回は非同期処理の代表的な ・Service ・IntentService ・HandlerThread について違いを踏まえながらまとめます! 非同期処理について(http://codezine.jp/articl …

Selenium × PHP でテスト自動化!【環境構築編】

はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 テスト自動化の背景 わたくしが担当するXmediaOneでは品質担保のために①コードベ …

最強のSQLクライアント(GUIツール)「TeamSQL」を使ってみた!

はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 エンジニアの皆さん、SQLクライアント(GUIツール)って何使ってます? わたくしはこ …

modern.IEを使ってMac上でWindows10を動かす

Microsoftが提供している modern.IE というプロジェクトがある。そこで提供されている仮想環境を使って、MacにWindows10をインストールしてみる。ちなみに、このプロジェクトの本来の目的はInternet Explorerの表示確認やデバッグの支援。 VirtualBoxの準備 …

自社サービスのDocker化(後編)

こんにちは。 インフラ開発部の上田です。 前回、前編としてDockerについて書き、早半年も経ちました。 前編はこちらです 今回は後編として、以下について書いてみたいと思います。 ■複数プロセス起動 前編で書いた通り、通常のOS起動時とは異なり、コンテナ上で個別にプロセスを起動する必要があります。 …

ゼロからAngularでSPAを作ってみた(3) CI: 継続的インテグレーション編

前回までのおさらいと今回やること 前々回(はじめてのアプリ編)と前回(デプロイ・公開編)で、作成した Angular のチャットアプリを Web に公開するところまでいきました。 でも、デプロイするのに、毎回決まったコマンドを打つのって面倒ですよね。 今回は GitHub でソースコードを管理して、 …

fastavroとjqでAVRO形式のファイルからデータを取得しよう

AVRO形式のファイルを取り扱いたい AVROとはApacheプロジェクトのひとつとして開発されているデータ交換形式です。 コンパクトなバイナリで高速なシリアライズ・デシリアライズが行えるため、サーバーログなどに利用されています。 弊社内での一部システムのログデータにも利用されているのですが、専用の …

Charlesを使ってスマホアプリ(iOS)のUAを調べてみた

はじめに ここ最近のスマホアプリには、Webブラウザの機能を実装したものが少なくありません。 (“スマホアプリ内で立ち上がるブラウザ「アプリ内ブラウザ」”の機能は「WebView」というコンポーネントを用いて実装されています。) 昨今のWebサイト、サービス運営に於いて、「通 …

ActiveDirectoryをフォレスト間で移行する(その2)

こんにちは。インフラ開発部の福本です。 2015年も残り約半分ですね。ボーっとしていると、あっという間に日々が過ぎていきます。 その中、少しずつ迫るWindowsServer2003のサポート期限。 保守切れとなるサーバOSの移行に忙殺されているサーバ管理者の方も、いらっしゃるのではないでしょうか。 …