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エンジニア採用情報

  関連記事

Qiita Team API と Google Spread Sheet でチーム日報を生成する

チーム日報を活用する MarketOne 開発チームでは複数拠点に分かれての開発を行っています。リモート開発が中心となると口頭でのコミュニケーションに限界があるため、テキストベースのコミュニケーションの比重が高い状態にあります。 チケットシステムやソースコード管理ツール上の議論はもちろんおこなってい …

kubernetes の全ノード上で同じコンテナを動かす

今回は、kubernetes上で同一コンテナを全ノードで動かす方法を紹介したいと思います。kubernetes自体の起動方法はここでは割愛します。 はじめに 以前、CoreOSのFleet上でmackerel-agentを動かすということを行いました。今回は、kubernetes上で同じようにクラス …

Scala番外編「Boxに保存したファイルをBox APIを使ってダウンロードしよう!」

はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 Box APIを使う背景・目的 DACはメディアレップです メディアレップとは、インタ …

【クラウド初心者向け】Google Cloud Platform(GCP)でWebサイトを公開してみよう!

はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 背景 わたくしは最近プライベートで開発したWebサービスをインターネット上に公開しまし …

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

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

Rundeck&Win32-OpenSSHでWindowsのバッチをリモート実行させてみました

こんにちは。インフラ開発部の福本です。 Webサービスの提供を長く続けていると、どうしても継ぎ接ぎで改修が行われていくことも多く、それにあわせてスケジュール登録されるCronやTaskなども煩雑になってきますよね。 開発メンバーが異動でいなくなってしまうと、そもそもどこで何の処理が動いているのか探す …

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

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

ゼロからAngularでSPAを作ってみた(1) はじめてのアプリ編

はじめに Single Page Application (SPA)って知っていますか? Webサイトでコンテンツのリンクをクリックした時に妙に表示が早いな〜というとき、実はページを移動するのではなくてページの一部のみを書き換えていたりします。 こういったサイトの作り方を Single Page A …

Burpの使い方!

こんにちは、第二ソリューション開発部の谷口です。 受託開発の部署で開発を担当してます。 APIを扱う機会が多く、今回は通信内容を確認するためのローカルプロキシツール「Burp」について書かせて頂きます。 Burpとは Webアプリケーション開発時の検証において、Webサーバとブラウザ間の通信内容を確 …

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

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