タグ

ブックマーク / www.ryuzee.com (14)

  • デプロイ自動化を進めるためのチェックリスト | Ryuzee.com

    いままで色々なところで言ってきたことをだらだらとまとめてみました。 計画および準備段階要求される品質の定義をおこなうDevとOpsの双方で情報が共有されるようにするいつデプロイを開始するのかを明らかにするデプロイの際にインフラを変更する必要はあるのかを明らかにするデプロイを行う時間帯、行わない時間をあらかじめ決めておく(休み前を避ける)ブランチ戦略、マージ戦略を決める継続的インテグレーションの戦略を決めるログの出力戦略を決めるビルドとリリースの自動化人的要素を減らす繰り返し可能にする自動作業と手作業を混ぜないビルドを自動化する誰のマシンでもビルドできるようにするユニットテスト、結合テスト、UIテストなどテストを自動化する番にデプロイする際にコードを書換えなければならないといった実装を避ける毎回デプロイプロセスを設計するのではなく、毎回同じ方法でデプロイする毎回同じ方法が難しければ2パター

    デプロイ自動化を進めるためのチェックリスト | Ryuzee.com
  • vagrant-lxcで軽量仮想環境を手に入れる

    Vagrantは標準ではVirtualBoxを仮想環境として利用しますが、とにかく遅いのが難点です。 Test-Kitchenを使ってChefのCookbookのテストをしたり、これらを継続的インテグレーションしようとしたときにこの遅さはたまりません。いくつか手段はあってお金持ちの皆様であれば、大富豪アプローチということで、仮想マシンを動かす母艦にXeon E5-2697 v2を積んだ高性能マシンを使ったりもできるのですが、普通に考えれば、VirtualBoxよりも軽量な仮想環境を使うのが有力なアプローチです。 今回はLXCを使って軽量な仮想環境を手に入れる方法を紹介します。 LXCのインストールLXC自体の説明はこの辺とかこの辺を参照ください。 インストール対象の母艦はUbuntu 12.04 LTSです。 sudo apt-get install lxc sudoの設定変更sudoのバ

    vagrant-lxcで軽量仮想環境を手に入れる
    k-holy
    k-holy 2013/11/05
  • Vagrant Fabricで簡単プロビジョニング

    全国1億2000万人のVagrantユーザーのみなさんこんばんは。 最近Vagrantの話を書こうとしても、みんな先にかかれてしまうので困っていたのですが、今日はPython製のデプロイツールであるFabricとVagrantを組み合わせて簡単にプロビジョニングする方法を紹介します。 インストール前述の通り、FabricはPython製のデプロイツールで、SSHで対象先に接続してコマンドを発行したりSFTPしてファイルを配置したりといったことが簡単にできるツールです。Rubyでよく使われるCapistranoと同系統のツールです。 インストールは接続先のマシンではなく、接続元のマシンに行います。環境によって様々な方法がありますが、おおよそ以下のどれかでインストールできます。Ubuntuを使っている場合 sudo apt-get install fabric 既にpythonがインストールさ

    Vagrant Fabricで簡単プロビジョニング
    k-holy
    k-holy 2013/09/19
    vagrant-fabricプラグインでプロビジョニング。fabfileのパスと実行するタスクを列挙するだけでいいのね
  • Vagrant + シェルスクリプトで簡単プロビジョニング

    Vagrantでプロビジョニングというと、Chef SoloとかChefとかPuppetを使うという印象がありますが(Vagrant initしてできるVagrantfileにもそれらだけが入っている)、シェルスクリプトでも簡単にプロビジョニングできます。 マニュアルに書いてあるわりに意外と知らない人が多くてびっくりしたので、簡単に紹介しておきます。 インラインでシェルを使う方法これはVagrantfileの中に直接コマンドを書いておく方法です。コマンドの数が少ない場合はこれで十分です。 # 以下にコマンドを書く script = < <SCRIPT yum install -y httpd php php-mbstring php-pdo php-mysql mysql-server /sbin/chkconfig --level 2345 mysqld on /sbin/chkconf

    Vagrant + シェルスクリプトで簡単プロビジョニング
  • Vagrantで簡単仮想マシン構築

    VagrantはOracle VirtualBoxを利用した仮想マシンをコマンドラインから作成してくれるソフトウェアだ。 設定ファイルをRubyで書くことができ、Chef等とも連携できるので、開発環境をコマンドライン一発で作成することができる。更にはCapistranoと組み合わせてアプリケーションのデプロイも一括で行うことで完全自動でいつでもテスト環境をつくれたりもする。 仮想マシンを捨ててしまってもいつでも再構築できること、誰のところにでもすぐ同じ状態に展開できることは開発を進める上で非常にメリットがある。 以下ではまずはVagrantを利用した簡単な仮想マシン構築の手順を説明する(当に説明したい内容はもっと違う話なのだが追って別のエントリで書いていくことにする) Oracle VirtualBoxのインストールhttps://www.virtualbox.org/にアクセスし左ナビ

    Vagrantで簡単仮想マシン構築
  • CakePHP2アプリケーションをCapistranoでデプロイする

    アプリケーションのデプロイを自動化すべきなのは言うまでもないことです。 一応手動でデプロイを行う場合の問題点について整理しておくと以下になります。 プロジェクトの期間中そして運用に入ってからも何度も手でデプロイするということはとてつもなく多くの時間を手作業に費やすことになるデプロイ先の環境の数が多くなればなるほど作業の時間も増える手作業で作業すると間違えやすい。特に手順が複雑だったり環境が多かったりすると確率は飛躍的にあがるもしデプロイしたアプリケーションに問題があってすぐに戻さなければならない場合に多くの時間がかかる。場合によってはビジネス上の機会損失に繋がる来は価値を生むフィーチャーを実装することに時間をかけたいはずが、こういうことをやっているとどんどん時間がなくなっていきます。また手作業のリスクや消費される時間を恐れてデプロイの回数を減らしてしまうのは、ビジネス側からみると納得いか

    CakePHP2アプリケーションをCapistranoでデプロイする
  • 【資料公開】CakePHP+Jenkinsによるアジャイル開発

    みなさんこんにちは。@ryuzeeです。 2012年11月3日,4日の二日間にかけて行われたPHPMatsuri 2012で、登壇させていただきました。 その際の資料を公開しておきます。 内容は過去にやったワンクリックデプロイ勉強会の内容にCakePHPっぽい内容を追加した感じです。 大分前からこのあたりの話はしているのですが、まだまだデファクトスタンダードでどこの会社でもやっているという状況にはほど遠く、ようやく各社取り組み始めたところ、という感じな気がします(もちろん大分状況は変わってきた) 参加者の方に聞いたところ、環境構築含め自動化されているのは2名くらいでした。 せっかくフレームワークを使い倒して高速に開発できるようになっても、もっと他に高速化すべき箇所もあるし、そもそもその速度を継続できないと意味がない、いまそのあたりができていないならできるところから着実に改善していくといいん

    【資料公開】CakePHP+Jenkinsによるアジャイル開発
  • CakePHP2.0+Jenkinsで継続的インテグレーションを行う方法

    みなさんこんにちは。@ryuzeeです。 CakePHP2.0になってテスティングフレームワークがSimpleTestからPHPUnitに変わったことで、以前に比べると大分簡単にはなっていますが、まとまった情報が少ないので整理しておきます。 事前準備JenkinsのインストールおよびCIサーバへのPHPのインストールは済ませておいてください。 CakePHP2.0でCIを行う場合は、以前のようにStagehand_TestRunnerを使ったりPhingを使う必要はありません(Phingは以前も使わない手もあった)が、PHPUnit、Xdebugのインストールは行なっておきます。 また今後利用するであろう、PMDやCPD等も導入しておくと良いでしょう。 なお、今回の作業はCentOS5.7上でPHP5.3.8を利用して行いました。 PHP関連のパッケージ導入 pecl install xd

    CakePHP2.0+Jenkinsで継続的インテグレーションを行う方法
  • 5分で分かるデプロイ自動化への道

    12月20日に第1回ワンクリックデプロイ勉強会で、デプロイの自動化について好き勝手に喋ったりデモしたりする予定なのですが、当日話す内容の概略について以下に載せておきます。 以下にあげることをやっておけばデプロイ自動化、ワンクリックデプロイはそんなに遠くないところにあると思います。 ソースコードのバージョン管理いわずもがな。全ての起点はここにあるコードの共同所有の原則への理解このソースコードは番環境または開発環境などで同じように動作しなければならないテストを書く習慣、コミット前に他のテストも含めて通してからコミットする習慣設定ファイルのバージョン管理環境によって異なる設定値(接続先データベース情報など)が書かれた設定ファイルもバージョン管理する開発環境用、ステージング環境用、番環境用などに分けて定義し、容易に切り替え可能にする番環境に配置する際に、アプリケーションの各所を書き換えなけれ

    5分で分かるデプロイ自動化への道
  • PHPの外部ライブラリの管理にComposerを使う | Ryuzee.com

    みなさんこんにちは。@ryuzeeです。 ComposerはRubyでいうところのBundlerのようなもので、アプリケーションが必要とする外部ライブラリを、そのアプリケーション固有の状態で一元的に管理してくれるツールです。 PHPではPearのようなコマンドを使ってライブラリをインストールすることが一般的ですが、アプリケーションによって必要とするバージョンが違う、といったケースでは問題が起こりやすくなります。 例えば手動でインストールをしていた場合、将来的にライブラリの配布が終わってしまったり、特定のバージョンが配布されなくなると困ってしまいます(したがって、インストールしたバージョンは構成管理の対象とするべきで、常に環境を再現可能にしなければいけません)。 Composerを使うことで、そのような問題からは簡単に解放されます。 なお、ComposerはPHP5.3.2以降で利用可能です

    PHPの外部ライブラリの管理にComposerを使う | Ryuzee.com
    k-holy
    k-holy 2012/06/08
    autoloadのところを詳しく調べたい。ライブラリ側で対応してないとautoload_namespacesは作られないのかな 調べた http://k-holy.hatenablog.com/entry/2012/06/13/124335
  • MongoDBを試してみた | Ryuzee.com

    久々のどうでもよい話。 別にKVSなんて今に始まった話でもないんだけど、ちと仕事で使うかもしれないので試してみた。 MongoDBって何よ? 以下の特徴をもつ所謂NoSQLデータベースの1つ。(特徴の日語訳はこのへん) ドキュメント指向のストレージ フルインデックスをサポート レプリケーションと高い可用性 自動シェアーディグ 高機能なドキュメントベースクエリ Fast In-Placeな更新 Map/Reduce GridFSによるファイル保存 商用サポートもある MongoDBの入手 MongoDBはこの辺からダウンロード Mac用もWindows用もその他のOS用もビルドされたモジュールが用意されている。 試験環境はWindows XP SP3(32bit)なので、それに該当するものをダウンロード MongoDBのインストール ダウンロードしたファイルは単なるzipファイルなので、解

    MongoDBを試してみた | Ryuzee.com
  • PHPUnitのアンチパターンとベストプラクティス

    みなさんこんにちは。@ryuzeeです。 SlideShareを徘徊していたらPHPUnitのアンチパターン・ベストプラクティスに関する素晴らしいスライドを見つけたので内容を抜粋で紹介します。 1. テストの中で何もテストしていない class FooTest extends PHPUnit_Framework_TestCase { public function testSomething() { $foo = new Foo; $foo->doSomething(new Bar); } } こういうテスト。どこにもアサーションがなくて何もチェックしていません。 $foo->doSomethingの戻り値を検証しないならなんの意味もありません。 純粋にTDDをしていれば、テストコード作成→テスト実行でRed→プロダクションコード作成→テスト実行でGreenなのでこういうテストは登場しませ

    PHPUnitのアンチパターンとベストプラクティス
  • より良いテスト駆動開発を行うためのチートシートの紹介

    みなさんこんにちは。@ryuzeeです。 planetgeek.chというサイトでUrs Enzler氏がTDDのチートシートを公開していたのでご紹介します。 Clean Code and Clean TDD Cheat Sheets (PDFファイルでダウンロード可能です) 以下で、チートシート内の一部を意訳にてご紹介しましょう。 Unit Test Smellsテストが何もテストしていない一見するとテストが有効に機能しているように見えるが、実はテスト対象をテストしていない テストに過度なテスト準備が必要とされるテストが環境をセットアップするのに長いコードを必要としている。こういうノイズがテストが当にテストしたいのが何なのか?ということを分かりにくくする。 大きすぎるテスト有用だが大きすぎるテスト。たぶんテストが1つではなく複数の機能をチェックしているか、テストが1つ以上のことをやろう

    より良いテスト駆動開発を行うためのチートシートの紹介
    k-holy
    k-holy 2011/04/25
  • CentOSのブートイメージをUSBメモリで作る

    なんでこんなことをやっているかというと、1年2か月の現役生活を引退したLenvo S10eというネットブックをサーバ転用するため。自宅にUSBのCDROMドライブなんてものは無いし、そもそもネットブック体にはCDROMドライブもついていないので、USBメモリからブートするか、ネットワークからブートするしかないんだよね。 で、USBブートイメージの作りかたは2つ試してみたが、どちらでもいけるのでそれぞれ紹介。 dd for Windowsを利用する方法 http://www.chrysocome.net/ddからdd for Windowsをダウンロード 適当に解凍する 今回はCentOSをインストールするので、CentOS用のディスクブートイメージをftp://ftp.riken.jp/Linux/centos/5.5/os/i386/images/diskboot.imgからダウンロー

    CentOSのブートイメージをUSBメモリで作る
  • 1