タグ

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

  • 【資料公開】Chef ベーシックトレーニング

    みなさんこんにちは。@ryuzeeです。 これから新たにChefを学ぶ人向けに非常に基的なトレーニングの資料を作ったので公開します。 資料の構成は以下のとおりです。 まずDevOpsの文脈から自動化が必要な背景を説明Infrastructure as Codeについての利点を説明ChefのアーキテクチャChefの用語解説Vagrantで仮想マシンを2台使った一番単純なハンズオン(boxも用意済み)Serverspecを使ったCookbookのテストの書き方(VirtualBoxの仮想マシンの中でDockerを使っています)その他なお、2-3時間でさくっと触りながら全体像を掴むことを目的にしているので、網羅性はありません。 ハンズオン用のVagrantのboxには、あらかじめ、Chef DK(Development Kit)、Dockerなどが含まれており、すぐに触れると思います(ただしb

    【資料公開】Chef ベーシックトレーニング
    taka222
    taka222 2016/04/05
  • Docker + Capistrano3で簡単にWebアプリをデプロイする

    こんにちは。@ryuzeeです。 アプリケーションのデプロイを楽にするためにDockerを使いたいけど、別にクラスタは必要ない規模だったりクラスタの管理もしたくないという人は多いのではないかと思います。 そこで、今回は、DockerとCapistrano3を組み合わせて単にデプロイを楽にする方法を紹介します。 構成図まず今回の構成図はこんな感じです。AWS上での構成例になっていますが別にどの環境でもあまり関係ない普通のWebアプリケーションを想定してください。 実現したい要件次に実現する要件です。特に変わったことはありません。 いつも同じ方式でデプロイするダウンタイムなしでデプロイするデプロイに失敗したら簡単にロールバックできるようにするサーバが増えてもデプロイの方式は変えなくて済むようにするサーバを再起動してもサービスは自動で復旧する方式では方式を見ていきましょう。 Webアプリケーショ

    Docker + Capistrano3で簡単にWebアプリをデプロイする
    taka222
    taka222 2016/03/08
  • スキルマップ作成のすすめ

    チームでの開発って大変だけど楽しいと思ってるみなさんこんにちは。@ryuzeeです。 チームは共通の目標に向かって日々の仕事に取り組んでいくことになりますが、そのためにはメンバーそれぞれが必要なスキルをもっている必要があります。このスキルを見える化するテクニックの1つとしておすすめなのが、スキルマップです。 作り方は簡単で以下の図のように横軸に必要なスキルを、縦軸にチームメンバーの名前を入れます。それぞれのマスでは、その人のスキル度合いを表す印を入れていきます。ここでは、★:エース、◎:得意、○:一人でできる、△:助けがあればできる、空欄:できない、・:今後習得したい、というようにしていますが、この記号はチームで好きに決めて構いません。 このスキルマップの効用と運用について見ていきましょう。 効果:スキルの見える化長い間同じチームで働いていれば、誰が何をできるのかはだんだん分かっていきます

    スキルマップ作成のすすめ
    taka222
    taka222 2016/01/17
  • プロジェクトが失敗する10の兆候

    今年こそは失敗プロジェクトをなくしたいと思っているみなさんこんにちは。ryuzeeです。 先日海外のサイトを見ていたところ、10 Signs When Projects Are Doomed to Failureという面白い記事を見つけたので、10の兆候それぞれをご紹介しつつ私の私見を述べておきたいと思います。 なお、アジャイルなのかウォーターフォールなのかは関係なくあてはまります。 失敗プロジェクトの兆候(1) プロジェクトメンバーが自分たちのタスクをこなすよりもプロジェクトの悪い状況について話し合いをするのに時間を使っている よくあるパターン。 たとえばなかなか仕様が決まらないので見切りで発射してみたら、途中で色々な仕様変更がおこったり考慮漏れが出てきたりして常に対策会議をしなければいけなくなったり、 品質が悪すぎて品質改善のための会議を頻繁におこなうことになったりといった状況。 タス

    プロジェクトが失敗する10の兆候
    taka222
    taka222 2016/01/04
  • CakePHP2アプリケーションをCapistranoでデプロイする

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

    CakePHP2アプリケーションをCapistranoでデプロイする
    taka222
    taka222 2015/11/26
  • 【資料公開】強いチームの作り方 | Ryuzee.com

    2015年11月10日に某社の社内勉強会で、「強いチームの作り方」というテーマで話をしたのでその際の資料を公開しておきます。 内容自体は、WEB+DB PRESS 83号に書いた内容なので興味があればそちらを参照ください。 最近DevOpsの文脈ですぐに「インフラ自動化しないといけない」とか「ツール使って効率化」みたいな話を頻繁に聞きます。 が、端的にいえば、「実際のところ、ソフトウェア開発上の問題の多くは、技術的というより社会学的なものである」というデマルコの一節の通りであり、 DevOpsの質もツールではなく、CLAMS(Culture、Lean、Automation、Measurement、Sharing)であって、土台となるのはやはり組織やチームの文化になります。 一度自分たちのチームや組織について考えてみるとよいと思います。

    【資料公開】強いチームの作り方 | Ryuzee.com
    taka222
    taka222 2015/11/11
  • Hashicorpの新プロダクト「Otto」を試してみた

    全国1000万人の大トロ好きのみなさんこんにちは。 Hashicorpから新たにOttoと呼ばれるプロダクトがリリースされました。 OttoはVagrantの後継となるもので、開発からデプロイまで一気通貫で行うことができるソリューションでマイクロサービスでの活用も考慮されて作られているということで早速試してみました。 軽く触った印象としては、Vagrant、Packer、Terraform、ConsulなどいままでHashicorpが提供してきたツールを組み合わせて一気通貫で操作できるようになった、と考えるとわかりやすそうです。 インストール https://ottoproject.io/downloads.html にアクセスして自分の環境にあったバイナリをダウンロードして展開します。展開したら実行できるようにPATHに追加します。 僕の場合はアーカイブを~/tools/otto/に配置

    Hashicorpの新プロダクト「Otto」を試してみた
    taka222
    taka222 2015/09/29
  • AWS CodeDeployで簡単デプロイ(CLI編)

    全国100万人のデプロイ・プロビジョニング自動化マニアのみなさんこんにちは! AWSから新たにDeploy用のサービスAWS CodeDeployがリリースされたので早速試してみました。 これを使うと複数のサーバに同時にアプリケーションをリリースするのが簡単にできます。もうCapistranoとかでごちゃごちゃやる必要はない感じです!! 詳細を知りたい方は公式サイトのドキュメントを見てみるとよいです。 ただ、GUIでやるのも面白く無いので、awscliを使ってやっていきましょう!! EC2インスタンスの準備まず、us-west-2でEC2インスタンスを何台か起動しましょう。これがデプロイ先のサーバになります。 デプロイ先サーバの識別にはEC2インスタンスのタグを利用しますので、同時にデプロイする対象には、同じタグを設定します(EC2のタグのFilterと同じ挙動です)。ここでは起動したイン

    AWS CodeDeployで簡単デプロイ(CLI編)
    taka222
    taka222 2014/11/14
  • 5分で分かるDockerのキホン

    全国100万人のImmutable Infrastructure職人のみなさんこんにちは。 もう誰も彼もがDockerなので、あんまりブログに書こうという気にもならなかったのですが、知り合いからリクエストを貰ったので、5分くらいで分かるようにかいつまんで概略を説明します。 Dockerとは詳しくは家サイト見ればだいたい分かる。仮想化技術コンテナ単位でパッケージングVirtualBoxとかと違って高速、オーバーヘッドが少ない。chrootに近い。LXCには依存しなくなっているコンテナごとにIDが振られるコンテナは差分保存なのでロールバックも簡単一回作ればどこでも動く。JavaっぽいDockerfileでコンテナを作成するDockerfileの1行ごとにコンテナIDがフラれる動作環境Linux Kernel 3.8以降 64bit OSMacの場合はVirtualBoxの中で動かす形になる→

    5分で分かるDockerのキホン
    taka222
    taka222 2014/05/26
  • vagrant-execによるラクラク仮想マシン操作

    全国3000万人のVagrantユーザーのみなさんこんにちは。 通常Vagrantを利用している際に仮想マシン内部でコマンドを実行したい場合はvagrant sshコマンドを使ってコマンドを実行します。この際、Vagrantの標準機能を使って、仮想マシンにログインすることなく、コマンドを実行できますが、このvagrant-execプラグインを利用することでさらに簡単に仮想マシン上のコマンドをログインせずに実行できるようになります。 たとえばログの確認や設定状況の確認のような簡単な作業は作業を効率化できます。 インストール方法インストールは以下のようにコマンドを実行します。vagrant plugin install vagrant-exec 使い方使い方はかなり簡単です。 最低限このプラグインで設定しないといけない項目は1つで、コマンド実行時のルートディレクトリの指定が必要です。 以下のよ

    vagrant-execによるラクラク仮想マシン操作
    taka222
    taka222 2013/09/30
    ”vagrant-execによるラクラク仮想マシン操作 | Ryuzee.com”
  • Packer & Chef-SoloでAmazon EC2のAMIを簡単に作る方法

    全国1000万人のPackerユーザーのみなさんこんにちはこんにちは。 Packerは、Mitchell Hashimotoさんによって開発が進められている様々な環境の仮想マシンのテンプレートを簡単に作れるツールです。例えばVagrantを使っている場合はいままではPatrick Deboisさんが作っていたVeeweeを使うのが定番でしたが、このPackerの登場で主流が移りつつあります。 またPackerでは、Amazon EC2用のAMI (Amazon Machine Image)を作成することもできます(某ドラクエ好きな著名エンジニアのIさんが「PackerはAMI作成ツールだ!」と言っていたのを聞いたような気がw) 今までは、Packerでミドルウェアやパッケージをインストールしたり、細かい設定をする場合にはShellのProvisionerを使っていたのですが、先日登場したバ

    Packer & Chef-SoloでAmazon EC2のAMIを簡単に作る方法
    taka222
    taka222 2013/08/31
    ”Packer & Chef-SoloでAmazon EC2のAMIを簡単に作る方法 | Ryuzee.com”
  • Vagrantで仮想マシンの一覧を簡単に取得する方法

    全国1000万人のVagrantユーザーのみなさんこんにちは。 Vagrantを普段から多用していると、知らないうちに仮想マシンが沢山起動していて母艦に負荷がかかったり、止めるの面倒くさい~といったことがよくあります。 VirtualBoxの場合は以下のようにVirtualBoxの画面で起動中の仮想マシンの一覧を把握できますが、どこのパスで起動した仮想マシンなのかもよく分からないため十分ではありません。 そこで今日は起動中のVagrantの仮想マシンの一覧を簡単に取得する方法を紹介します。 プラグインのインストール 今回使うのはvagrant-global-statusというプラグインです。 インストールは vagrant plugin install vagrant-global-status でOKです。 実行するには、好きな場所で vagrant global-status -a と

    Vagrantで仮想マシンの一覧を簡単に取得する方法
    taka222
    taka222 2013/08/18
    ”Vagrantで仮想マシンの一覧を簡単に取得する方法 | Ryuzee.com”
  • 資料公開 Vagrant (+Amazon EC2)

    著作 SCRUM BOOT CAMP THE BOOK 著者/訳者:西村直人 永瀬美穂 吉羽龍太郎 出版社:翔泳社( 2013-02-13 ) 定価:¥ 2,520 スクラム初心者に向けて基的な考え方の解説から始まり、プロジェクトでの実際の進め方やよく起こる問題への対応法まで幅広く解説。マンガと文章のセットでスクラムを短期間で理解できます。スクラムの概要を正しく理解したい人、もう一度おさらいしたい人にオススメ。 CakePHPで学ぶ継続的インテグレーション 著者/訳者:渡辺 一宏 吉羽 龍太郎 岸田 健一郎 穴澤 康裕 出版社:インプレス( 2014-09-19 ) 定価:¥ 4,320 Webアプリケーション開発における継続的インテグレーションについて、CakePHPのサンプルをベースにして、その概要から使用ツール解説、導入方法、メンテナンスまでを解説 Chef実践入門 ~コードによる

    資料公開 Vagrant (+Amazon EC2)
    taka222
    taka222 2013/07/24
  • EclipseでCakePHPのMVCを切り替える

    著作 SCRUM BOOT CAMP THE BOOK 著者/訳者:西村直人 永瀬美穂 吉羽龍太郎 出版社:翔泳社( 2013-02-13 ) 定価:¥ 2,520 スクラム初心者に向けて基的な考え方の解説から始まり、プロジェクトでの実際の進め方やよく起こる問題への対応法まで幅広く解説。マンガと文章のセットでスクラムを短期間で理解できます。スクラムの概要を正しく理解したい人、もう一度おさらいしたい人にオススメ。 CakePHPで学ぶ継続的インテグレーション 著者/訳者:渡辺 一宏 吉羽 龍太郎 岸田 健一郎 穴澤 康裕 出版社:インプレス( 2014-09-19 ) 定価:¥ 4,320 Webアプリケーション開発における継続的インテグレーションについて、CakePHPのサンプルをベースにして、その概要から使用ツール解説、導入方法、メンテナンスまでを解説 Chef実践入門 ~コードによる

    EclipseでCakePHPのMVCを切り替える
    taka222
    taka222 2010/10/28
  • CakePHPアプリをHudsonで継続的インテグレーションする方法

    この記事はCakePHP1.2系またら1.3系を対象としており、CakePHP2.0系では別のアプローチになります。 不思議なことにCakePHPアプリの開発でHudson使って継続的インテグレーションしている事例をほとんど見たことがないんだけど、個人的にはPHPアプリだって全部HudsonでCIすべきと思っているのでやってみた。 (ちなみに最近までphpUnderControlでCIしていた) 概略 CakePHPアプリでCIやろうとして問題になるのは、 CakePHPでのテストライブラリがSimpleTestでありJUnit互換のテスト結果を出力できないこと さらにSimpleTestでは一応XMLでの結果出力ができるのに、CakePHPreporterにcake_xml_reporterとかが無くて、html出力かテキスト出力しかできない という2点にあるので、この2点をクリアする

    CakePHPアプリをHudsonで継続的インテグレーションする方法
    taka222
    taka222 2010/10/20
  • PHPでもHudson使うべし

    今までもPHP案件でCIはしているんだけど、環境にはCruiseControl+phpUnderControlという構成で、これももう古いなぁと思ったのでHudsonに移行してみた。 感触としては、PHP案件でもHudson使うべし、でいいんじゃないかな。 導入 今回導入した環境はCentOS5.3なので、rpmを使ってインストールできる。 sudo rpm --import http://hudson-ci.org/redhat/hudson-ci.org.key wget http://hudson-ci.org/latest/redhat/hudson.rpm rpm -Uvh hudson.rpm なお、当然のことだが、Hudsonを動作させるためにはJDKのインストールが必要なので、先にインストールしておく。 インストールが完了したら自動起動の設定をして、起動する。 /sbin/

    PHPでもHudson使うべし
    taka222
    taka222 2010/09/27
  • 自動テストのfixtureを効率的に管理する方法

    みなさんこんにちは。@ryuzeeです。 僕がやっている案件(PHP)はもともとテストコードのないレガシーなプロジェクトで、それを改善するためにずっと動作を確認するための結合レベルの自動テストを増やしてきました。 そんな中で、僕のところではどうやってテスト用のfixtureを管理しているか事例として紹介したいと思います。 最初にコアとなるfixtureを用意するみんながたくさんテストを作る前にコアとなるテスト用のfixtureは用意しておきます。 さもないと、みんなが好き勝手にfixtureを作ってしまい、あっという間に混乱に陥ります。 プログラム体と同様に、DRYの原則で、同じようなテストデータを繰り返し作ってしまうようなことは避けるべきです。 最悪なパターンは、開発機や番機のデータを引っこ抜いてきて、それをそのままテストデータとしてごっそり使う方法です。 流石に居ないと思いたいです

    自動テストのfixtureを効率的に管理する方法
    taka222
    taka222 2010/09/03
  • テスト自動化について5分で分かるまとめ

    みなさんこんにちは。@ryuzeeです。 テスト自動化について簡単に教えてほしいと言われることが多いので、以下にまとめました。 テスト自動化/テスト駆動開発についてXPのプラクティスの中で、最も単体で導入しやすいプラクティスの1つであるこのプラクティスのみで1冊のが書けるくらい奥が深い基的な方法失敗するテストを書くできる限り早く、テストがパスするような最小限のコード体を書くリファクタリングをする適用範囲通常では、独立性の高いクラスやファンクションへの適用が良いGUIや分散オブジェクト、自動生成されたコード、DBのスキーマに関するテストは導入が難しい既存システムにおいて、テストが準備されていない場合に、部分的に導入するのは難易度が高い。したがって新規プロジェクトの初期から導入することが望ましい問題点開発者が仕様を誤解していた場合、誤解に基づくテストコードが作成されるため、誤解の検知は保

    テスト自動化について5分で分かるまとめ
    taka222
    taka222 2010/08/31
  • CakePHP UNIONして取得したデータをページングする方法

    別にUNIONに限らず、生のSQLを投げて取得したデータは、何でも同じようにページングできる。 肝 ページングのために利用する新しいモデルを作成する そのモデルでは$usetable=falseに設定し、既存のテーブルとは関連付けしない。 そのモデルにおいて、paginate関数とpaginateCount関数をoverrideする。 コントローラー側では、既存のpaginateと同じ利用の仕方をする。但し引数として設定しても無視する項目がある。 サンプルコード 下記のサンプルコードはPHPMyScrumでのタスクとストーリーの横断検索機能の実装。 app/models/search.php class Search extends AppModel { var $useTable = false; var $base_sql = " SELECT ? as itemtype, resol

    CakePHP UNIONして取得したデータをページングする方法
    taka222
    taka222 2010/05/26
  • ゴールを決め過ぎてしまうことによって陥る罠

    みなさんこんにちは。@ryuzeeです。 Bob Hartman氏のAgile antipattern: Target fixationが良い記事なので、抜粋・意訳にてご紹介します。 日でよく言われるのが、「期日までに使わない(と思われる)機能も全部作れ、契約だから」。 限られた時間軸の中で変化を受け入れながら進めている中でこういうのを要求されると、品質やチームのモチベーションやコラボレーションを犠牲にしはじめてしまいます。 このような状況が続けば焼畑農業のようにチームには何も残らなくなります。 結果として顧客にとっても幸せな結果にはなりません。 期日を約束したりストーリーポイントのゴールを約束したり、その他のゴールが命取りになることがある。これらだけでは質的に悪くは無いとしても、下記に述べるその他の項目と組み合わさると、問題となるだろうチームはゴールを達成するために品質を端折り始める

    ゴールを決め過ぎてしまうことによって陥る罠
    taka222
    taka222 2010/05/24