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

  関連記事

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

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

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

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

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

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

x-callback-urlを使ってみた

x-callback-urlとは? iOSのアプリ間連携の仕様の一つみたいです。簡単に言うと、ディープリンクを行うためにカスタムURLスキームを利用するが、アプリ毎にバラバラな規則でURLスキームを設定するとアプリ間連携をスムーズに行うことができないため、どのような規則でURLスキームを設定するかを …

【小ネタ】タスク管理ツール移行: Trello から Asana

  プロジェクトチームのタスク管理ツールを Trello から Asana に変えることになり、 タスクの移行が意外と簡単にできた、というお話です。 Trello と Asana もともと使っていたのは Trello(トレロ)です。 プロジェクト > タスクグループ > タスク …

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

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

no image
AWSにRailsアプリをデプロイする(準備編)

今回は、せっかくRailsで開発したアプリをAWS上に公開してみたいので その構築方法をまとめていきたいと思います。 (前回の記事:初心者がRailsで開発 – deviseでユーザー認証設定 ) AWSの設定はすでに社内で使用できるようになっていたので割愛します。 ★やりたいこと Gitlabでコ …

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

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

ゼロからAngularでSPAを作ってみた(2) デプロイ・公開編

前回のおさらいと今回やること 前回(はじめてのアプリ編)では、Angular で簡単なチャットアプリを作るところまでやりました。ディレクトリ構成については説明できていなかったのですが、次のようになっています。(主なディレクトリとファイルのみ抜粋) + dist (ビルド・コンパイル後のファイルのディ …

GoogleスプレッドシートからTreasureDataへデータを取り込む

AudienceOneの開発を担当しています。skryoです。 またまたTreasureDataネタですが、今回はGoogleスプレッドシートからGoogleAppsScriptを使ってTreasureDataへデータを取り込む手順を紹介したいと思います。 なぜ? Googleスプレッドシート上でマ …