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

  関連記事

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

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

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

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

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

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

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

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

全ファイルを検索
意外と知らないかも? Chrome DevTools の機能10選

みんな使っている Chrome DevTools。 Web開発やトラブルシューティングには必須ですが、便利な機能を知らないで使っている人がいたり、Web で使い方を調べても古い情報だったりすることがあるので、部内で Chrome DevTools についての勉強会を開催しました。 ここでは、その中か …

Scala入門 準備編「開発環境構築」 – PHP使いからScala使いへ転身!

  はじめに みなさんこんにちは、今月入社しましたプロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 XmediaOneの開発で採用しているプログラム言語はS …

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

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

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

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

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

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

いまさらですが… GNU screen チートシート

最近はローカル環境で開発するようになってきたので、screen コマンドを使う機会も少なくなって来たような気がします。で、使ってないと忘れてしまうので、チートシートを作ってみました。 参照サイト GNU screen [quick_reference] 起動 コマンド 動作 screen -S &l …