Archive for 9月 2012
37signalsはベータサーバーを本番環境のデータベースに接続している
David Heinemeier Hansson氏(Railsの開発者。以下DHH)が37signalsのブログに公開したRunning beta in productionというエントリによると、同社ではBasecampの開発に使われる6つのベータサーバーがすべて単一の本番環境のデータベースを参照して動いているそうです。
DHH氏曰く、「自分がいいアイデアだと思ったものが本当にそうなのかを知るには、実際のデータを対象に自分たちが日々使ってみることが必要」とのこと。
Basecampでは新機能や改良の開発、技術的なアップグレードなどを継続的に行なっており、そのために同一の本番環境のデータベースを参照する6個の異なるベータサーバーが運用されています。通常、開発中の機能は開発用のデータベースと共に運用するのがセオリーだと思いますが、DHH氏は「実際の重要なデータとともに不満を感じながら使わないかぎりは、そういった機能をきちんと評価することは不可能だと気づいた」とのことで、このような構成になっているそうです。
最初は、実際にサービスの運用に使っているものとは物理的に異なるサーバーに本番のデータを複製しているのではないか、とも思ったのですが、コメント欄にて「All beta envs and production share the same prod database.」という37signalsスタッフのコメントがあるので、やはり実際にサービスで利用しているデータベースにベータサーバーを接続しているということで間違いないようです。
また、6つのベータサーバーをどのように使い分けるのかの手順はシンプルで、どのサーバーでどのブランチのコードを走らせているかは、開発者が適宜、開発用のチャットルームのタイトルに反映させているそうです。ブログエントリに掲載されたスクリーンショットでは、以下のようなルームタイトルになっていました。
- staging: riakcs
- beta: project_templates
- b1: redis-resque-upgrade
- b2: tags-mini
- b3: bcx-ios-compose [reserved for bcx-ios]
- b4: email-in-phone
- b5: rails4
エントリではstagingの位置づけには触れられていませんが、それ以外のbetaからb5までのサーバーはすべて本番のデータベースに接続していると考えてよさそうです。
開発者は、ベータサーバーが必要なときはルームタイトルの「b1」の部分を「b1: redis-resque-upgrade」のようにサーバー名とブランチ名に書き換え、ベータサーバーでの作業が終わったら「b1: available」のように変えることで、シンプルに運用しているようです。
このようなスタイルの運用で気になるのが、データベースマイグレーション(スキーマの変更など)をどのように適用するか、というところだと思います。
それについてはコメント欄でいくつかやりとりがされていて、基本的には、
- 本番データベースに接続されたステージング環境でマイグレーションのテストを行う
- その後、それを本番環境にもロールアウトする
という運用のようですが、この際、ステージング環境が接続する本番データベースというのが、本番データベースの複製なのか実際に運用しているデータベースそのものなのかについては残念ながら言及がありませんでした。
個人的にはかなりアグレッシブな運用だと感じたのですが、データベースマイグレーションを注意深く行うようにすればアリなのかもしれませんね。
新時代に突入したPHPのフレームワーク戦争
2012年9月、PHPのフレームワーク戦争は新たな局面に突入した事が明確になってきました。PHPフレームワーク、Symfonyプロジェクトの創始者であるFabien Potencier氏のブログ記事がPHPフレームワーク界で話題です。
オブジェクト指向を本格的にサポートしたPHP5とRailsが与えたインスピレーションから始まった2005年頃からはsymfonyやZend Framework、CakePHP、CodeIgnitierなどのフレームワークを生み出しました。その後、名前空間をサポートしたPHP5.3がリリースされるとコードの抜本的な構造などを見なおした次世代フレームワークが次々に登場します。冒頭のFabien氏の記事では2012年9月6日にZendFramework 2.0とSymfony2.1が奇しくも同日にリリースされました。Fabien氏はZendFrameworkのリリースを祝福した上で、「何故、他のXというフレームワークよりSymfonyを選ぶのか?」という質問の回答としてブログの記事を投稿しています。
記事によると下記のような点をSymfonyを選ぶ理由として挙げています。
- Symfonyはフレームワークではなく、プロジェクトであり用途に応じて様々なコンポーネントをそのままつかったり、Sliexとして使ったり、フルスタックなフレームワークとして使う事もできる。
- 大きな採用事例があること。(BBC NBC TEDなど)
- 大きなコミュニティがあり、昨年だけでも550人以上が貢献している。
- 車輪の再発明をしない事を推奨しておりさまざまなコンポーネントが開発、公開されている
この記事には非常に多くのコメントが寄せられ、このようなドキュメントを各フレームワークが記述したらいいのではなどという声も上がり始めました。そしてCakePHPの開発チームの一人であるJose Diaz-Gonzalez氏が正に返信の記事である「Why to Actually Choose CakePHP?(なぜ実際はCakePHPを選ぶのか?)」という記事を公開します。こちらの記事ではジョークを交えて下記のような点をCakePHPを選ぶ理由として挙げています。
- 熱心な開発者
- 継続的なリリース
- モデルレイヤー
配列がPHPでデータを扱う最良の方法であるから。Cake3からはモデルをオブジェクトとして扱う事もできるようになるが。- Symfonyじゃないこと
- パトリオットエールハウス
このバーで一緒にエールを一杯飲んだ相手しか信用しないので
また前後してZendFrameworkの開発チームのEvan氏は「Why ZendFramework」という記事を公開します。こちらの記事では直接Fabien氏の記事を引用しつつZendFrameworkを選ぶ理由として下記のような点を挙げています。
- ZendFrameworkはずっとコンポーネント志向だった
- ZendFrameworkも大企業につかれている。(BBC, Cisco, Discovery, Panasonic, Offers.com等 同様にオープンソースプロジェクトでも使われている。: Magento, TomatoCMS, pimcore, Centurion, Digitalus CMS, Webfolio, PHProjekt, Concrete5)
- コミュニティの活発さ、車輪の再発明をしない事などは同じようにZendFrameworkにも当てはまる
全てを読んでみると、説得力のあるSymfony,場外戦術を仕掛けるCakePHP、俺も俺もといった感じのZendFrameworkという感じです。いずれの主張もRails直後のような機能ではなく、汎用性やコミュニティの活発さなどに言及している点が印象的です。技術的にはPSR-0やPSR-1といったフレームワーク間で設計や規約が共有化され、コンポーネント化や相互の再利用がしやすくなっている点もあり、コミュニティこそがフレームワークの特性になってきているのかもしれません。
変な日本語 in the web: 東海道
やってきました変な日本語 in the web。第三回は Ruby on rails 界あるいは JavaScript MVC 界でのテックセレブ Yefuda Katzの新プロダクト『東海道』です。彼が Mac OS X での Ruby on Rails のインストールを簡単にしたい、という Kickstarter を立ち上げていたのはソーシャルメディアを通じて聞いていたものの、私自身は Ruby な人ではないので正直スルーしておりました。$25,000 のゴール設定で3月に始まったこのキャンペーンは、終了の5月の段階で 739人から $51,220 とゴールの2倍以上集めて成功しています。
キャンペーン開始の2週間後にプロジェクト名とその由来が発表、それによると東海道新幹線から来ているそうです。8月に発表されたアップデートによれば内容は:
- 静的コンパイルのバイナリビルドの Ruby
- ログ/アラート UI
- Rail 3 用のリモートノティフィケーション
- Puma Express との統合
- コード品質ツールとの統合
- バイナリビルド使用時の Bundler との問題解決と Heroku へのデプロイ
- 著名な Gem のバイナリビルド統合
と手堅い感じです。Github にあるプロジェクトページでは成果があまり見られないようですが、Google Plus 上にはスクリーンショットがあがっています。UI に関するアンケートもあがっているので、意見のある人は是非そちらに。
UI を見る限り Rails をエンジンにした IDE というのが目指すところなんでしょうか。Yefuda Katz のこれまでの実績を見れば期待していいでしょう。
Online-to-offline 分野で生き残るのは誰か?
オンラインスタートアップの今後のトレンドという意味で非常に面白い記事を読んだので紹介します。
Who Will Win the Fast Growing Online-to-Offline Sector?
ローカルで行われる取引を web につなげる、というサービスが今日の web 経済で最も成長の早い分野として急浮上している。消費者が(毎日の生活で使う)サービスを見つける/支払う方法を変え、現実に存在する数百億円規模の地方経済に入り込もうという、Online-to-offline 分野のスタートアップの話を聞かない日はない。今日、車を洗う、タクシーを呼ぶ、家事手伝い、宿泊先を探すといったオンラインのマーケットプレイスがある。各スタートアップは自らのやり方で web と現実世界をつなげている。私はこの数年この分野を綿密に眺めてきて、いくつかの長期的な成功を導く要素をあげてみたい。
続けて以下の5点について語っています。
- 先行者より支払い指向
- 水平分業 vs 垂直統合
- P2P マーケットプレイスの場合は特異な在庫形態
- 閉じた市場はよりよい経験を生み出す
- 需要に基づいた新しい市場
非常に簡単な英語です。是非読んでみてください。
この記事の中で何度か出てくる AirBnB は特に Y-Combinator の Ramen-profitable を地で行って、最近は $3-4 billion という evaluation が聞こえています。実際僕自身何度も AirBnB は利用していますし、アメリカの大きな街ならかなり available でホテルより安いし気楽という感じがします。
Facebook の IPO の失敗(?)後、スタートアップについては将来性より収益性ということが特に多く語られています。『ローカルで消費される市場は数百兆円の規模』という数字の根拠が無いような気もしますが、ZocDoc, Uber (New York だと GroundLink かな)UrbanSitter などは友人たちとの会話によくでてくる、リアリティのあるスタートアップです。本文中で言及されているスタートアップを以下にあげておきます。
- DogVacay: 犬を預ける
- Cherry – The carwash that comes to you!: 洗車
- Getaround – Peer-to-peer car sharing and local car rental: カーシェア
- Uber: リムジンを呼ぶ
- UrbanSitter | Find babysitters through friends: ベビーシッター
- Wedding Planning / Weddingful: 結婚式
- Find a Doctor – Reviews & Ratings | Book Online Instantly – ZocDoc: 医療サービス
- Vacation rentals, private rooms, sublets by the night – Accommodations on Airbnb: P2P宿泊施設
- Postmates: ローカル宅配
- Housekeeper.com: 家事手伝い
- Angie’s List: あらゆるサービス
- Task & Errand Service By Awesome, Trustworthy People | TaskRabbit: P2Pあらゆる雑用
- Done: P2Pあらゆる雑用
- zaarly: P2Pあらゆる雑用
- Craig’s list: 3行広告
GitHub スピードの秘訣
みんな大好き GitHub のスタッフ blog で『Github は如何にして速いままでいられるか』という記事が出ていました。内製のツールなどが screenshot 付きで紹介されています。
しかしツールの見栄えの良さにちょっとくらくらしますね。Web な startup だとよくありがちな Staff モードの SQL query log や、call graph。Graphite や statsd を使ったグラフを大型モニタに映し出すのがNew York の startup では流行って(いるような気がし)ますが、ここまでビジュアル的によく出来たものは見たことがないです。
結論としてはまとまっていませんが、一言でいえば『メトリックス大事』ということでしょうか。皆さんの会社では、パフォーマンス・ダッシュボードはちゃんと作ってますか?
Googleが運営するロンドンのコワーキングスペース Campus
日本でも増えてきたコワーキングスペースやスタートアップ向けのシェアオフィスですが、ロンドンにはGoogleが運営するスタートアップ向けのシェアオフィス・コワーキングスペースがあります。それがCampusです。
こちらのスペースではNode.jsのミートアップのようなイベントが行われていたり、Seed CampやTech Hubなどのスペースが設けられています。TechHubの会費は年間で375ポンドとの事で1日1ポンドちょっとと考えるとジュース一本分くらいですね。(選考とかもありそうですけど)
サイト上で無料の登録をするだけで地下のカフェスペースは使うことができるので、今回ロンドンに滞在していたので利用してみました。
話をしてみてもやはりフリーランサーやスタートアップを運営している人が集まっているという事でTechな雰囲気の強いスペースですね。ほとんどの人がイヤホンをしていますが、打ち合わせをしながら作業をしている人もかなり居ました。
インテリアもオシャレですし、ロンドンに滞在する予定で作業環境が必要な人は覚えておくと良いでしょう。念のため補足するとあくまでワーキングスペースですので単純なネットカフェのようなものを期待している人ではなく、コワーキングスペースとしての利用が前提です。事前の登録をWebから行う事をお忘れなく。