やむにやまれず http://blog.livedoor.jp/sparklegate/ 2006年創業の会社を経営する元プログラマ。現在従業員12名(内7名が欧米人)で元気にお仕事中。今はもうコードは書いてないので、いつか復帰したい。@sparklegate ja #WakameVdc のドキュメンテーションについて http://blog.livedoor.jp/sparklegate/archives/50921369.html 12/10担当: Wakame-vdc / OpenVNet Advent Calendar 2014 参加記事です。1週間遅れの投稿ですみません。(ToT) Wakame-vdcプロジェクトは少数で開発していて、新規の機能開発や、複数の商用環境への投入とメンテナンスなどの全て並行して賄って来ました。 自動化を進めてもら... sparklegate 2014年12月10日T18:34:37+09:00 Wakame 12/10担当: Wakame-vdc / OpenVNet Advent Calendar 2014 参加記事です。1週間遅れの投稿ですみません。(ToT)


Wakame-vdcプロジェクトは少数で開発していて、新規の機能開発や、複数の商用環境への投入とメンテナンスなどの全て並行して賄って来ました。 自動化を進めてもらったおかげで、人手に依存せず、少人数でもうまくいくようになってきました。 その中で僕達自身が一番困っているのがドキュメンテーションです。


やはりWakame-vdcをできるだけ色々な方々にインストールしてご利用いただけるようにしようと、インストール手順をWikiなどに掲載したりしてきました。 しかし、今もなお実装の改善が入ることがあって、すぐにインストール手順は古くなってしまいます。 ちょっと気を抜くと、ユーザ様から、インストール手順通りに試したけどインストールできません、とご指摘いただく形になってしまうのです。 この状態を解消するために、rpmによるインストールの簡略化や、マシンイメージでの提供によってインストールそのものを無くす手法を試みて来ましたが、これはインストール手順そのものへの対策ではあっても、ドキュメントがあっと言う間に古くなると言う本来の課題には応えられていません。


結局のところ、開発のスピードを犠牲にしてでも、ドキュメンテーション専門の時間を明確に作らない限り、整備はされないのだなと言う当たり前の結論に落ち着きまして、最近は少しずつではありますが、作業のアサインをするようになりました。 その成果が、GitHubのリポジトリにあるWikiのページです。 今回は、そのWikiページに何が書かれているのか、ご紹介します。


基本方針

基本的には、できるだけ全て英語で記述するようにしています。 世の中は英語ができるエンジニアの方が多いので、理にかなってはいるかなと思っています。 また、先述した通り、ドキュメンテーションに割けるリソースも限界があるため、まずは英語で集中的に仕上げていこうと考えています。 日本語に翻訳してくださる方を募集中です。


仮想データセンターのコンセプト

https://github.com/axsh/wakame-vdc/wiki/Concept

Wakame-vdcとは一体何なのかが書かれています。 特にコンセプトである、仮想データセンターのあたりが重要です。 このコンセプトは2009年にクラウドコンピューティングと言う単語が先行する中で、本当に自分たちが一番実現したいことは何なのかを考えた結果でもあります。 もう5年は経過しているのですが、未だに実現まで少し距離感があります。 ただ、時代は着実にそれを求めていると、昨今では当時よりも強く確信しています。


簡単なインストール

https://github.com/axsh/wakame-vdc/wiki/install-guide

Wakame-vdcはインストールが簡単です。CentOSであれば、サクッとインストールが出来ますし、デモが見たいならば、ここからインストール済みの仮想マシンイメージをダウンロードして、お手元のコンピューターで動作させる事ができます。

冗長化についても、いくつかある商用環境でのノウハウをいずれ公開したいと思っていますが、基本的には、複数サーバへの分散とフェイルオーバー、プロセス監視と再起動が出来ていれば問題ありません。 その他、MySQLサーバなど、既存ミドルウェアの冗長化などは既に様々なノウハウがインターネットに溢れていますので、少しでもOSSの取り扱い経験があれば、さほど問題にはならないでしょう。


仮想マシンの利用が簡単にできる

https://github.com/axsh/wakame-vdc/wiki/Basic-usage

Wakame-vdcが標準で備えるGUIをとりあえずウォークスルーしてみています。基本的な部分のひと通りの使い方が分かるよう、スクリーンショット多めに交えての紹介です。


独自のマシンイメージも作成できる

https://github.com/axsh/wakame-vdc/wiki/Custom-images

ここでは、OpenVZコンテナベースの環境に、httpdが標準インストールされ、ブート後に自動で起動してきるCentOSイメージを作成し、登録する手順が記載されています。 wakame-initと呼ばれるブート専用のスクリプトを導入することで、マシンイメージはWakame-vdcのsshの鍵管理と連携することができるようになります。 最後に、出来上がったマシンイメージをWakame-vdcの管理専用コマンドであるvdc-manageを用いて登録すれば、無事ブート可能なマシンイメージとして選択できるようになります。


起動した仮想マシンへの通信をセキュアにできる

https://github.com/axsh/wakame-vdc/wiki/security-groups

Wakame-vdcの優れた機能として、セキュリティグループの機能があります。これはエッジネットワークで全て制御されるため、Tagged VLANを一切使わず、低コストに動的ファイアウォールとして機能するのが最大の特長です。現在はNetfilterを標準利用しており、OpenFlowと切り替えられるようにはなっていますが、いずれはOpenFlowの方を標準にしていくことになります。


機能的にはL2/L3レベルのフィルタリングをしており、仮想マシンへ論理名を持ったルールセットを動的に適用して、通信の制御することができるものです。Referenceの機能説明に記載されている部分が最もセキュリティグループらしい箇所であり、簡単にティアを組める所以でもあります。


簡単にバックアップも取れる

https://github.com/axsh/wakame-vdc/wiki/backup-instances

バックアップ用のストレージを設定し、そこに仮想マシンのバックアップを作る方法を示しています。


Wakame-vdcは、ローカルディスクだけでなく、NFSやWebDAV形式のインターフェイスを持った外部ディスクに、仮想マシンのコピーを作成することができます。外部ディスクに論理名を付けて登録し、それをバックアップ先に設定するだけで利用できます。


ドキュメントのメンテナンス方法

これらドキュメントは、下記リポジトリで管理されています。

https://github.com/axsh/wakame-vdc-wiki

上記リポジトリをcloneするなどして、編集します。その後、gollumと言うWikiエンジンで閲覧して確認をします。gollumは、Gitで利用できる文法と多少差異はありますが、レイアウトも含めてほぼ同じなので、手軽で良いでしょう。何か良いドキュメントができたら、ぜひpull-requestをくださいませ。

]]>
IaaS基盤を提供する会社としてImmutableをオススメしたい背景 http://blog.livedoor.jp/sparklegate/archives/50907808.html 3つある。 マシンイメージを手軽に生成できて、環境構築ができる世界を作る 1つ目は、担当授業でのフィードバックからの気付きだった。2010年頃、Immutableや、Blue-Green Deploymentと言うキーワードが無かったものの、その都度マシンイメージから新規環境を構築して、... sparklegate 2014年04月02日T22:57:04+09:00 開発スタイル 3つある。



マシンイメージを手軽に生成できて、環境構築ができる世界を作る

1つ目は、担当授業でのフィードバックからの気付きだった。2010年頃、Immutableや、Blue-Green Deploymentと言うキーワードが無かったものの、その都度マシンイメージから新規環境を構築して、環境を丸ごと切り替える手法は、2010年に私が国立情報学研究所(NII)で担当するクラウド関連の授業で教えていた。これがもっともクラウドらしいデプロイメントだと考えていたためだ。しかし、当時の受講生の反応の大半は、これは実用的ではないと言うものだった。どこに課題があるのかを考えてみたが、結局のところ次のような点に集約される。


  1. マシンイメージをどう作り直すか
  2. 新規環境をどう本番環境へ昇華させるか

これら2点に良い手法があれば、アプリケーションデプロイは大きく変わるのだろう、と言う感覚が十分にあった。



状態管理を放棄しても差し支えない

2つ目は、VMの状態管理が大変だと言うことだ。同じくして2010年頃、その頃はChefはまだ新しくて日本ではそんなに有名ではなかったが、Puppetを使っている人がちょっと先を行っているぞ、みたいな雰囲気だった。我々もアプローチは異なるが、2009年4月に似たような手順エンジンとしてWakame-fuelと言うものをリリースしていて、オートスケールの手順をサンプルに、簡単な状態管理をしたりしていた。


状態管理が大変なのは、頭の中では同じ状態のVMだと思っているだけであって、厳密には全てのVMは状態が異なっていると言うところにある。LBの下には「同じWebサーバ用のVMが複数動いている」と思いこんでいる。しかし実際は違う。細かいが、簡単なところでは、メモリやディスクの使用容量は一致しない。LBが均一にバランスしているわけではないので、準じてログのサイズなどに偏りが出る。例えば、ディスク上のワーキングエリアが十分ある前提でスクリプトを組んで走らせると、タイミングによっては失敗するWebサーバも出てくると言うことだ。


同じWebサーバなのに、違う結果を返す。生きているサーバを管理している以上、それぞれは稼動した瞬間から違う状態になると思っていた方が良い。ChefやPuppetでそれを封じ込めるのには限度がある。スクリプトを走らせる時は、それが状態の違うものに対する差分の手順であることを、常に意識しなければならない。僕らがWakame-fuelの開発をあるときから止めた要因のひとつは、そこに限界を感じたからだ。システムを外部から「維持しよう」とする設計である以上、必ずこの限界にぶち当たるのだ。(ちなみにそうじゃないアプローチが必要だと考え、プロトタイプした結果は、とある研究成果として利用されているが、その話はまた別途...)


それ以降、当時から「ChefやろうかPuppetやろうか、今ならどっちが良いですかね?」と相談される度に「どちらでもない。同じ状態になるマシンイメージを、いつでもポンと作れるようにした方が良い」と言うようになった。



環境をスクラップ&ビルドできるようにしてみたら快適だった

3つ目は、CIとクラウド基盤の運用ノウハウこそが答えだったと言うことだった。僕達には、2009年の秋くらいから開発を始め、2010年4月にリリースしたWakame-vdcと言うIaaSの基盤ソフトウェアがある。これを実際お客様に向けて機能追加し、運用もする中で、僕らは色々と苦労をしてきた。


特に、テストが大問題だった。理由の一つは、お客様毎にインストールする環境が異なること。これらを本気で網羅的にテストをやろうとしたら、それぞれの物理環境が必要になってしまうので、仮想で何とかしたかった。その上で様々な構成をテストしよう、と。 通常のWebアプリケーションのテストの場合、デプロイが繰り返しできれば良くて、足回りが何パターンもあるとかあまり無い。IaaS基盤ソフトウェアは、Webアプリケーションを稼動させるための文字通り基盤であるため、これをテストしようとするとインストールのパターンがいくつか必要になる


テスト環境はお客様に持っていただいているものもあるが、これはお客様都合で用途が変わることがある。お金の問題もあって、テスト環境の一部がいつの間にか別のものに利用されるなど、融通されることは良くある話だ。毎日動いていて欲しいが、保証はない。


そこで、僕達は小企業ではあるが、ある程度はオンプレでテスト環境を持つことにした。潤沢なリソースがあるわけではないので、その上を仮想化して環境ごとのテストをスクラップ&ビルドしようと言う目論見だ。

結局出来上がったのは、以下のようなCI環境だった。

  1. リポジトリへコード修正が上がる
  2. rpmなどのパッケージを自動生成する
  3. テスト環境が無い場合、
    いくつものマシンイメージを自動生成し、rpmパッケージも自動インストールする
  4. 上記マシンイメージをテスト環境でVMとして起動し、コンフィグする
  5. テスト環境があれば、そこにデプロイスクリプトが走り、rpmなどが更新される。
  6. テストスクリプトが走る
  7. 上記プロセスの進捗がHipchatに逐次報告される
  8. 必要なければ好きな時にテスト環境を廃棄できる

僕達の場合は、テストをどうするかと言う観点から始まったが、これは当然一般のアプリケーションのデプロイと言う視点でも捉えられる。Webアプリケーションの場合、テストのための環境をVMで再度構築するようなプロセスは大げさすぎるかもしれない。しかし、このプロセスがあれば、いつでもアプリケーションをゼロから構築しなおせる。上流のネットワークで切り替えれば、このテスト済みの環境をそのまま本番環境に仕立てることもできる。あとはデータベースなどのデータをどうマイグレートするかを検討すれば良さそうだ。



ImmutableでBlue-Green Deploymentをやろう

ここまでで、パッケージを基にマシンイメージを作り、起動したらテストを流して確認し、本番環境として切り替えて利用する、そんなプロセスが出来上がった。この過程でまた細かなツール群が誕生し、僕達の中でも、何だか全部こんな感じで良いんじゃないかって言う気がしてきたわけです。


あとは、いかにマシンイメージをオンデマンドに作るかと言う手軽さが論点になってくる。望む状態のマシンイメージが好きな時に手に入りさえすれば、現在稼動中のサーバを維持する必要がなくなる

マシンイメージの作成って面倒くさいけど、もし、簡単に好きなイメージがポンと作れたら、生きているインスタンスを触ってミドルウェアをちまちまとインストールする現在のスタイルは変わる気がする。

— Yasuhiro Yamazaki (@sparklegate) December 25, 2012

そして、色々議論して約1年前の2013年春には、こんな結論に達した。

当時のWakame-Fuelやめた理由は、環境の差分をコードで表現するのに限界を感じたから。某パペも某シェも、結局良い答えが見つかっていないと思う。最近、僕らのなかでは、もうマシンイメージから作り直すのが一番合理的って事になってる。

— Yasuhiro Yamazaki (@sparklegate) May 27, 2013

それが、Immutableな発想に基いて準備されたマシンイメージを用いて、Blue-Green Deploymentが日常的になされている世界なんだね。

]]>
仮想ネットワークはユーザへシンプルなネットワークを提供することが最も重要な役割になる http://blog.livedoor.jp/sparklegate/archives/50907757.html ユーザのメリットを見直してみた ここ1年ほど、様々な方と仮想ネットワークについて議論を重ねてきた。いつも決まって話題になるのは、ユーザのメリットは何があるのかと言う点。 よく言われるのは、柔軟性だ。確かに、仮想のネットワークのレイヤに、L2やL3を自由に組み上... sparklegate 2014年04月01日T15:40:33+09:00 開発スタイル ユーザのメリットを見直してみた

ここ1年ほど、様々な方と仮想ネットワークについて議論を重ねてきた。いつも決まって話題になるのは、ユーザのメリットは何があるのかと言う点。 よく言われるのは、柔軟性だ。確かに、仮想のネットワークのレイヤに、L2やL3を自由に組み上げられるその仕組みは柔軟性が高く、物理ネットワークで苦労してきた人には外し難いメリットの一つなのかもしれない。 見方を変えると、これは仮想ネットワークで複雑な構成が組める、と言うことを意味するわけだが、本当にそれがメリットなのだろうか



アプリケーションエンジニアが作るネットワークこそ究極の姿になる

私が仮想ネットワークに期待するのは、プレイヤーが変わることによる、「思いもつかないユースケースの発生」だ。つまり、かつて物理ネットワークを触ってきた人ではない人が、仮想ネットワークから触り始めることによって、何が起こるのかに興味がある。


アプリケーションエンジニアと呼ばれる人々の中には、物理ネットワークの変更操作まではできない人がそれなりにいる。そうなると、彼らはそれが出来る他の専門の人へ作業をお願いすることになる。組織としても、ここで役割が大きく分かれているため、コミュニケーションのオーバヘッドが大きい。これがプロジェクトの持つスピードを損ねる要因になったりもする。


仮想ネットワークは、物理ネットワークを隠蔽し、本来自分が欲しかったネットワークを仮想のレイヤへ、自由に構築できるものである。アプリケーションエンジニアのような人々にも、ネットワークのコントロール権限を与えるものだ。物理ネットワーク専門の人へ作業を依頼せずとも、おおよそのことはこの仮想レイヤで賄えるようになる。


シンプルなネットワークへのパラダイムが起こる

そしてパラダイムはここから起こる。物理ネットワークの世界で、職人芸を見せてきたエンジニアの方々であれば、軽々しく賛同いただけないような構成を、アプリケーションエンジニアは試し始めるのだ。「ヒャッハー」「ネットワークちょろいぜー」って言いながら、ネットワークを我流で組み始める。時はまさに世紀末だ。そして仮想の世界は、ソフトウェアの力が全てである。Try & Errorが圧倒的にやりやすい世界であるので、アプリケーションエンジニア達は、あっという間にベストプラクティスを作り上げることになるだろう。そして、そのベストプラクティスは、物理ネットワークのエンジニア達が想像もしなかったような、一種原理主義的で、極端に合理的な結論として姿を見せる。


その結論が今何なのか具体的に述べられないが、間違いないのは、複雑なものではなく、シンプルなものだ、と言うことだ。何でもできるようにと議論が重ねられ、複雑になったXMLやSOAPは世界を制しなかった。結局程々に大体のことができ、シンプルなJSONやRESTが主流になった。仮想ネットワークを使い倒して行くと、想像もできないほどシンプルで合理的なものがベストプラクティスとして生き残る


僕には、それが生み出せるポテンシャルこそ仮想ネットワークの真価だと思える。


The virtual network simplifies our network.

仮想ネットワークは、複雑なネットワークを作り出すためのものではない。仮想ネットワークは、複雑な物理ネットワークを意識することなく、究極にまで削ぎ落とされたシンプルなネットワークをオーバレイするものだ


僕はそう信じている。

]]>
【商用事例】Fluentdを使ったログのメッセージ監視を使ってみた http://blog.livedoor.jp/sparklegate/archives/50903448.html 本記事は、Fluentd Advent Calendar 2013へのエントリ記事です。関連があるので、ついでにWakame Users Group Advent Calendar 2013の方にもダブルエントリしておきます。(ズルい) IaaSに強力なメッセージ監視を備えられる! 京セラコミュニケーションシステム様にて運営な... sparklegate 2013年12月16日T13:40:42+09:00 Wakame 本記事は、Fluentd Advent Calendar 2013へのエントリ記事です。関連があるので、ついでにWakame Users Group Advent Calendar 2013の方にもダブルエントリしておきます。(ズルい)

IaaSに強力なメッセージ監視を備えられる!

京セラコミュニケーションシステム様にて運営なさっている"GreenOffice Unified Cloud (GOUC)"と言うサービスがあります。特長的なのは、IaaSであるWakame-vdcを拡張した運用管理の統合ツールとなっている点です。システムそのものはシンプルで面白い試みがたくさん詰まっており、特に本日記事に取り上げるFluentdを用いたログ監視(メッセージ監視)はお手軽で強力なので、ご紹介します。

おおまかな手順としては下記の通り進めます。

  1. ブラウザからログ内で検出したい文字列を指定する
  2. サーバ内部の設定を修正する
    • td-agent.confに監視対象のログファイルを指定する
    • td-agentを再起動する
  3. アラートを動作させ、ブラウザで確認をしてみる
これだけです。

ブラウザからログ内で検出したい文字列を指定する

[画像:gouc_overview]

上図のようなUIを用いて、サーバを起動し、グローバルIPを割り当てて、セキュリティグループはssh接続とhttp(80)のアクセスを許可しておきます。起動ができたらログ監視の設定をしていきます。

[画像:gouc_messagemonitoring]

上図にあるように、起動したサーバに対し、ログ監視の設定をします。ここでは、apacheのアクセスログの中に、"HelloWorld"と言う文字列を見つけた際に、アラートを上げるように仕掛けてみました。実際は、UIではこの程度の設定をするだけで準備が完了します。あとは、サーバの内部の設定をしましょう。

サーバの設定を変更する

これも簡単です。お手元のターミナルからsshを用いてサーバへログインします。この辺りはIaaSを使ったことのある方ならもはや説明は不要でしょう。

[画像:gouc_ssh]

起動したサーバには、下記する通り、予めtd-agent 1.1.13がインストールされています。

$ rpm -qi td-agent
Name : td-agent Relocations: (not relocatable)
Version : 1.1.13 Vendor: Treasure Data, Inc.
Release : 0 Build Date: Tue 23 Apr 2013 02:56:08 PM JST
Install Date: Fri 27 Sep 2013 12:50:40 PM JST Build Host: ip-10-123-31-198.ec2.internal
Group : System Environment/Daemons Source RPM: td-agent-1.1.13-0.src.rpm
Size : 94742991 License: APL2
Signature : (none)
URL : http://treasure-data.com/
Summary : td-agent
Description :
あとはこいつの設定ファイルを変えるだけです。本来ならapacheのインストールやら、ログのパーミッション変更やらあるのですが、その辺も常識的な話なので割愛して、さっさと設定に移ります。

まずは、設定ファイル(td-agent.conf)を修正しましょう。

$ sudo vi /etc/td-agent/td-agent.conf
下記のような設定にします。この辺りは、Fluentdをご利用の方には馴染みのある設定だと思います。ちなみに、GOUCでは、td-agent.confのサンプル設定がコメントアウトで入っているため、実際は#を取り除いていくだけの作業になります。
<source>
 type tail
 format /^(?<message>.*)$/
 path /var/log/httpd/access_log
 pos_file /var/log/td-agent/position_files/httpd_access_log.pos
 tag var.log.httpd.access_log
</source>
<match **>
 type forward
 flush_interval 60s
 <server>
 name logservice
 host fluent.local
 port 24224
 </server>
</match>
少し変わっているのが、fluent.localと言うエンドポイントです。これは、GOUCの基盤であるWakame-vdcによってあらかじめ仮想的に準備されているものです。サーバの管理者は、特にその先を意識することなく、ただログを投げつければ良くなっています。あとは、td-agentを再起動しておきましょう。これで設定は完了です。あっという間でした。
$ sudo /etc/init.d/td-agent restart
Shutting down td-agent: [ OK ]
Starting td-agent: [ OK ]

アラートを作動させてみよう!

あとは、access_logをtailしつつ、このサーバ上のapacheにアクセスをしてみます。

$ tail -f /var/log/httpd/access_log
xxx.xxx.xxx.xxx - - [16/Dec/2013:13:03:28 +0900] "GET / HTTP/1.1" 403 5039 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"
xxx.xxx.xxx.xxx - - [16/Dec/2013:13:03:28 +0900] "GET /icons/apache_pb.gif HTTP/1.1" 200 2326 "http://yyy.yyy.yyy.yyy/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"
xxx.xxx.xxx.xxx - - [16/Dec/2013:13:03:28 +0900] "GET /icons/poweredby.png HTTP/1.1" 200 3956 "http://yyy.yyy.yyy.yyy/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"
xxx.xxx.xxx.xxx - - [16/Dec/2013:13:03:29 +0900] "GET /favicon.ico HTTP/1.1" 404 290 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"
当然ですが、ログが記録されていますね。さて、このログ内に、"HelloWorld"があればWakame-vdcが検出をするはずです。一番簡単な方法は、User-Agentを"HelloWorld"に偽装してアクセスしてみることですので、ChromeのUser-Agent Switcherを利用します。リロードしてみましょう。
xxx.xxx.xxx.xxx - - [16/Dec/2013:13:05:35 +0900] "GET / HTTP/1.1" 403 5039 "-" "HelloWorld"
xxx.xxx.xxx.xxx - - [16/Dec/2013:13:05:35 +0900] "GET /icons/apache_pb.gif HTTP/1.1" 304 - "http://yyy.yyy.yyy.yyy/" "HelloWorld"
xxx.xxx.xxx.xxx - - [16/Dec/2013:13:05:35 +0900] "GET /icons/poweredby.png HTTP/1.1" 304 - "http://yyy.yyy.yyy.yyy/" "HelloWorld"
無事、access_logに、"HelloWorld"の文字が出現しました。これでアラートが挙がるはずです。

アラートを確認してみよう!

しばらくすると、UIからはアラートが確認できます。設定されていれば、メールも飛んできますよ。 [画像:gouc_alert]
詳細画面からは、実際にどのようなメッセージを検出しているのかが閲覧できる他、自動的にチケットとして起票して、解決の運用フローへとつなげることもできます。 [画像:gouc_monitoring_detail]
このように、Wakame-vdc基盤側に、サービスとしてFluentdを埋め込んでおくと、サーバからそれを利用するだけで良くなります。ログに関する様々な厄介事から逃れることができます。アラートはサーバに近いところでやり、将来的には分析のためにTresure Dataさんに直接ログを飛ばしても良いかも知れません。実際目の当たりにすると、更に色々な応用を思いつきますね。

以上、商用のIaaS基盤GOUCで使われているWakame-vdcがFluentdを活用しているお話でした。

]]>
エンジニアじゃないけど仮想ネットワークOSSのOpenVNetをサクっとインストールしとく。 #wakameug http://blog.livedoor.jp/sparklegate/archives/50902898.html 12/2担当: Wakame Users Group Advent Calendar 2013 前日12/1に、記念すべき本企画最初の記事「Wakame-vdc編 - nested KVM を用いた環境で Wakame-VDC 環境の作り方」が羽深さんの手によりリリースされました。おかげさまで幸先良く無事開幕しました。Wakame-vdcのインスト... sparklegate 2013年12月02日T19:30:58+09:00 OpenVNet 12/2担当: Wakame Users Group Advent Calendar 2013

前日12/1に、記念すべき本企画最初の記事「Wakame-vdc編 - nested KVM を用いた環境で Wakame-VDC 環境の作り方」が羽深さんの手によりリリースされました。おかげさまで幸先良く無事開幕しました。Wakame-vdcのインストールに試行錯誤をした素敵な記事だったので、僕は最近リリースされたOpenVNetのインストールについて書いてみることにしました。これでアナタもOpenFlowの世界へ飛び込んでみてください!ちなみに、今からでもエントリは遅くありません。参加記事の中から最も素敵な記事には、なんとプレステ4を差し上げます。

OpenVNetは、GitHubにrpmを構築する方法が記載されています。このrpmを、あらかじめ置いておいたものを利用して、インストールすることもできます。 現在、公式なものではありませんが、rpmが下記URLにて提供されています。

この他、サードパーティ製のバイナリも下記にまとめてあります。

前準備

とりあえず簡単にインストールするために、下記の環境を用意してみました。

  • ホスト環境: MacBook Pro 2.4GHz Intel Core i5 / 16GB RAM
  • ハイパーバイザー: VMware Fusion Professional Version 5.0.3
  • ゲスト環境: CentOS 6.4 / GNOME Desktop
僕のマシンは、エンジニアのお下がりなのですが、メモリが16GB入っていて快適です。 CentOS 6.4が動き出しているところからインストールを初めてみます。

yumコマンドを利用する場合は、冒頭のrpm群を、リポジトリファイルとして書いておくと便利です。早速作業にとりかかりましょう。

/etc/yum.repos.d/openvnet.repo
[openvnet]
name=OpenVNet
baseurl=http://dlc.openvnet.axsh.jp/packages/rhel/6/vnet/current/
enabled=1
gpgcheck=0
/etc/yum.repos.d/openvnet-third-party.repo
[openvnet-third-party]
name=OpenVNet Third Party
baseurl=http://dlc.openvnet.axsh.jp/packages/rhel/6/third_party/current/
enabled=1
gpgcheck=0

インストールしてみよう

epelも必要ですので、下記にまとめてあるrpmをインストールしておきます。

$ rpm -Uvh http://dlc.wakame.axsh.jp.s3-website-us-east-1.amazonaws.com/epel-release

先述したリポジトリファイルがあれば、下記するコマンドでインストールすることができます。

$ yum install -y wakame-vnet
wakame-vnetは、OpenVNetのプロジェクトネームで、現在もまだ変更されずに色々な箇所で名残を見せています。いずれ修正されるはずですので、お気をつけください。 しばらく時間がかかりますが、Complete!と出れば完了です。

設定ファイルを見てみよう

設定ファイル類は、おおよそ /etc/wakame-vnet/ 以下に配置されています。

$ ls /etc/wakame-vnet/
common.conf vna.conf vnmgr.conf webapi.conf
基本的に、各ノード共通の設定ファイル"common.conf"と、個別の設定ファイルによって構成されており、vna、vnmgr, webapiと言ったシステムを構成するノードの名称が見えます。

vna (Virtual Network Agent)

これが、OVSのコントロールをするエージェントです。ネットワークを流れるパケットの動きを変えたいと思ったところに、OVSと対になるようにこのエージェントを配置する必要があります。現在ではそのような配置から、vnaはOVSとUnix Socket通信するように書かれています。いずれはOVSをオフロードするようになれば、一般的なTCP通信へと切り替えるのが良いのでしょう。設定ファイルのアドレスは、ZeroMQと言うキューサーバーへの接続先です。

vnmgr (Virtual Network Manager)

キューネットワークを介したMySQLへのアクセスを司る他、データセンター全体の物理・仮想ネットワーク構成を俯瞰して観ることができるプログラムです。必要なvnaへの指令を出し、ネットワーク全体を正しく動かす役目を持ちます。

webapi (Web API)

HTTPサーバとして機能し、curlや、wgetのような、HTTPクライアントからの接続と要求に応じて、vnmgrに向けて処理の依頼を投げかけるプログラムです。どのようなインターフェイス定義になっているかは、ドキュメントを御覧ください。ただし、ソースコードは日々更新されているため、ドキュメントが少し古くなっていることがあります。

MySQLを起動し、データベースを設定しよう

手動での起動のついでに、自動起動もONにしておきましょう。

$ service mysqld start
$ chkconfig mysqld on
その後、データベースへスキーマを流し込みます。
$ cd /opt/axsh/wakame-vnet/vnet
$ bundle exec rake db:init
一応、下記の手順でスキーマが入っているかを確認してみてください。
$ mysql -u root
mysql> use vnet;
mysql> show tables;
うまく行けば、vnetデータベース内に、networksなど複数のテーブルが確認できるはずです。

OpenVNetのサービスを起動してみよう

とりあえずここまでで基本的なインストールはおしまい。あとは各プログラムを起動してみましょう。

$ initctl start vnet-vnmgr
$ initctl start vnet-webapi
$ initctl start vnet-vna
うまく起動しているかどうか確認するには、statusを見ると良いでしょう。
$ initctl status vnet-vnmgr
vnet-vnmgr start/running, process 41789
その他のプログラムも同様に確認することができます。

さて、次回はこれらのノードの説明と、データパスの設定などがあり、それから応用としての使い方などの説明へとつなげて行きたいと思っています。

]]>
エッジネットワークの分散ルータ構成は、物理ピアでルーティングできるところが強力すぎる http://blog.livedoor.jp/sparklegate/archives/50902376.html 最近OpenVNetにご質問いただく中で、分散ルータってのが、役割としては理解できるが、アーキテクチャ上どうなっているのかと、そのメリットが分かりづらいらしく、どんなものなのかまとめておきます。 ルータの機能をVMとして実装してしまうのは、あまりに効率的ではない ... sparklegate 2013年11月19日T17:44:50+09:00 Wakame 最近OpenVNetにご質問いただく中で、分散ルータってのが、役割としては理解できるが、アーキテクチャ上どうなっているのかと、そのメリットが分かりづらいらしく、どんなものなのかまとめておきます。

ルータの機能をVMとして実装してしまうのは、あまりに効率的ではない

最初に、分かりやすいがオススメできない実装を述べておきます。それは、Vyattaみたいなものを、VMの内部に立てて、そいつのコンフィギュレーションを外部から行うことでルーティングさせる方法です。VMがあるのでトポロジが従来のルータとして見えやすく、その辺りが理解を助けているのでしょう。ここでは、便宜上このようなVMになったルータを、VMルータと呼んでおきましょう。

[画像:vm_router]

しかし、動作実験と決め込むなら良いですが、これを商用ネットワークの基盤として標準機能にしてしまうのは、下記する理由で、全くあり得ないなと思っています。

  • (1) 管理やコントロールが悪くなる
  • (2) スケーラビリティが低い
  • (3) エッジネットワークになっていない

最後の(3)は、エッジネットワーキングと言っているのに、エッジで処理されていないと言うアーキテクチャ上の一貫性が無いと言うだけなので、説明は割愛しておきます。最初の2点について詳しく述べておきます。

(1) VMルータだと管理やコントロールが悪くなる

まず、仮想ネットワーク上にVMルータを置いて制御すると、エッジ側の物理ネットワークのVM間をパケットが走ります。 エッジネットワークは、仮想ネットワークを解釈された結果として、物理のピアができて、そこにパケットが流れるのですが、VMルータを持つことで、異なる仮想L2に属するVM間が、VMルータを経由し、純粋に物理のピアとはならなくなるのです。

このような状態で、トラフィックを管理/コントロールしようと思うと、これが非効率なのは明らかです。 物理のピアで通信しないとなった以上、パフォーマンスの面からも、VMルータのネットワーク的な距離も重要になってきますね。 無駄なトラフィックを生まないように、帯域を踏まえた設計をする必要があり、クラクラしてきます。 物理ネットワーク上の経路制御が困難になるのです。

(2) VMルータだとスケーラビリティが低い

これも大きな課題です。現段階であまり必要がありませんが、将来的に大規模ネットワークを仮想ネットワーク上に設計する場合、仮想ルータを数個配置し、ルーティングさせるようになるかもしれません。 VMルータを複数設置すると、それぞれのVMルータ間にパケットが走るため、ルーティングのホップ数が増えるだけでトラフィックを消費してしまいます。 エッジネットワークでは、おおよそのトラフィックは集約された帯域の物理ネットワークに収容されることが多いため、ルーティング程度でLANの帯域をどんどん消費してしまうのはマズい

これらの課題は分散ルータで解決できる!

[画像:openvnet_router]

解決方法は、VMルータを止め、ルーティングが必要なパケットを物理のピアで届くように最適化することです。 特に仮想ネットワーク内では、パケットが最終的に届く先が物理的にどこになるのか判定することができるため、複数の仮想ルータで複雑にホップするように指定していても、物理のピアとして決めて届けられるはずです。

OpenVNetの分散ルータは、パケットの最終到着地を決定するために、エッジノード内部でルーティングを済ませ、物理のピアを決定してから転送をするものです。 VMルータのように、どこかにVMとして起動されていて、そこでルーティングの処理を集中的に行うものではありません。 全てのエッジノード内部にルーティングを解決する処理を持たせるのです。 物理ネットワークに対して集中型のトポロジをもたらしてしまうVMルータと対比して、OpenVNetでは上記のようなルーティングの仕方を、分散ルータと呼んでいます。

もちろん良いことだけではない

最終的に物理でピアになる分散ルータは、複雑なルーティングを設定された仮想ネットワークであっても効率的にパケットを転送することが分かりました。 しかし、そのせいで、tracerouteのようなものを仕掛けると、最適化されたホップで結果を返してしまいます。 運用時のトラブルシュートが難しくなるので、ここでは「仮想化されたネットワークの特性として、そうなるものだ」と捉えるか、「シミュレーションするモードを入れるべきだ(それで得られた結果がどんな意味を持つのか)」など、今後は考え方が色々出てくると思います。


何にしても仮想ネットワーク面白いです!

]]>
オープンソースだけで手軽に仮想ネットワークを実現しようと思ったらぜひOpenVNetを http://blog.livedoor.jp/sparklegate/archives/50902066.html 仮想ネットワークの時代がやってきた! ちょうど2週間前にOpenVNetを無事リリースいたしました。 仮想ネットワークを無料で誰もが作れるようになる、そんなオープンソースライセンス(LGPL v3)の最先端ソフトウェアです。 同じ分野には、プロプライエタリソフトウェアとして... sparklegate 2013年11月12日T19:39:12+09:00 事業内容に関するもの 仮想ネットワークの時代がやってきた!

ちょうど2週間前にOpenVNetを無事リリースいたしました。 仮想ネットワークを無料で誰もが作れるようになる、そんなオープンソースライセンス(LGPL v3)の最先端ソフトウェアです。 同じ分野には、プロプライエタリソフトウェアとして、Nicira(現VMware)社のNVP(現NSX)や、ミドクラ社のMidoNet、ストラトスフィア社のSSPなどがあり、オープンソースプロジェクトとしては、このOpenVNetの他に、OpenDaylightや、OpenContrailがあります。細かなものも拾うと、OpenStackのプラグイン類も含まれそうですが、オープンソースのものは、他にも色々あるので、SDN Centralの一覧ページをご参考になさってください。

色々あって悩ましいですが、オープンソースだけで手軽に仮想ネットワークを実現できるOpenVNetをぜひお試しください。ハードウェアに特殊なスイッチも必要がありません。

OpenVNetは何が良いのか

まず、オープンと言うこと。最先端技術がブラックボックスではいけません。また、実績が多くあると言うこと。OpenVNetのソフトウェアアーキテクチャは、エッジネットワーキングと言うWakame-vdcのモダンな設計を踏襲しており、パブリッククラウドの構築実績を含め、多くのプロジェクトで既に利用されてきたものです。

OpenVNetの経緯

簡単に言うと、OpenVNetは、Wakame-vdcからのスピンアウトプロジェクトとして2013年4月に始まりました。それ以前に、2011年12月時点でWakame-vdcがOpenFlow 1.0に対応を済ませて、現在の設計の基礎を完成させました。その後、機能を仮想ネットワークへと拡張していますが、この辺りの経緯は別のエントリにまとめてあります。2012年3月には、仮想ネットワークは動作していました。それから1年間はWakame-vdcもやることが増えてきたため、仮想ネットワーク以外の部分に力を入れていました。無事、仮想ネットワークについてもニーズが見えてきたので、2013年4月から本格的にOpenVNetと言う独立したプロジェクトにまとめなおすことになりました。新しく考えなおしたのは、OpenFlow 1.3へのアップグレード対応と、新機能(仮想L3やゲートウェイなど)を追加した部分で、基本設計と言う意味ではWakame-vdcと大きな違いはありません。

Wakame-vdcの時代から、Tremaを利用してきたのもきっかけとなり、NEC様のご協力をいただき、OpenVNetの検証がなされています。現場の技術者グループとは良く意見交換をさせていただくのですが、お互い実際に動くコードを使いながらの話なので非常に明快で、活用方法にもきちんとしたビジョンがあり、非常に楽しいです。ここからコミュニティを発展させていくつもりですので、ぜひ皆様もご一緒しませんか。

]]>
「独習Linux専科」を読みました。これから学ぶ人も、すでに知っている人も、基礎知識の総集編としておすすめ。 http://blog.livedoor.jp/sparklegate/archives/50899461.html 著者の中井さんからいただいた「独習Linux専科」を読みました。 少し前にいただいていたのですが、ボリュームがあって、結構時間かかっちゃいました。 第4、5章がとても良い 特に4章は、ファイルサーバ作ってみよう!とか、データベースを管理してみよう!とか、Ruby on ... sparklegate 2013年09月19日T18:04:38+09:00 第4、5章がとても良い

特に4章は、ファイルサーバ作ってみよう!とか、データベースを管理してみよう!とか、Ruby on Railsを使えるようにしよう!とか、目標が明確だから良いのです。モチベーションの湧かない人は、こういうところから入るべし、です。第4章を進める上で、基礎部分に課題が見えたら、その前の章までに記述がありますので、その時遡って読んでもいいかも知れない。そして、最後の5章で、この書籍の中で一番ディープなところに踏み込みます。おそらく4章を読み終えたら、Linuxってそもそもどう言う概念で作られているんだっけ?みたいなところが気になってきますよね。完全に網羅されているわけではありませんが、期待通りエッセンスは書かれています。

実際、ここまで読み進めていくと、このまま第6章が読みたくなってきますが、残念ながら本書はここでおしまい。でも、気がつけば、自力で羽ばたくことができるようにはなっているのではないでしょうか。最後には、読者の学習意欲に期待しつつ、著者も学びの手を止めません、という旨が書かれていました。

「分かりやすさ」でオススメしたい

中井さんの文章は分かりやすい。つい最近もそれを知らしめるエピソードがありました。僕から、中井さんに、昨今考えている技術の話を説明したんです。この話は3年くらい色々な人に話しをしたけれど、なかなか理解してもらえなかった。きっと難しいんだろうと思って諦めていたんです。でも、中井さんは、そんな僕の話を理解してくださっただけでなく、自分の言葉で皆に分かるように直してしまった。実際にその言葉を聞いた皆さんが納得している。つまり、僕の話は決して難しいものではなく、ただややこしいだけだったんですね。そう言う視点で僕はこの本を読みました。

平易な言葉でありながら、決して足りなくはない。慎重に選ばれています。脳みそに染みこんで来ます。だから今からLinuxを始める人もそうですが、復習がてら自分の理解をまとめるためにも、この本はきっと役立つと思いますよ。知識を得た皆様は、いつか誰かに自分も誰かへLinuxの「いろは」を教えなければならない日がくるかも知れません。その時は、この本に書いてある言葉で伝えてみてください。いや、この本を手渡してしまった方が早いかな。

「独習Linux専科」サーバ構築/運用/管理 ――あなたに伝えたい技と知恵と鉄則 (Software Design plus)
「独習Linux専科」サーバ構築/運用/管理 ――あなたに伝えたい技と知恵と鉄則 (Software Design plus) [大型本]
中井 悦司
技術評論社
2013年08月30日


]]>
Wakame-VDCを活用したKCCS様の新サービスGreenOffice Unified Cloudについて http://blog.livedoor.jp/sparklegate/archives/50893005.html Wakame-VDCを利用したKCCS様の新サービスGreenOffice Unified Cloud (GOUC)が5/15(水)にリリースされました。 Wakame-VDCを用いたオンデマンドなリソースコントロールと、仮想データセンターの技術コンセプトが活かされているのはもちろんです。それだけでなく、クラウド上... sparklegate 2013年05月16日T23:55:08+09:00 Wakame Wakame-VDCを利用したKCCS様の新サービスGreenOffice Unified Cloud (GOUC)が5/15(水)にリリースされました。

Wakame-VDCを用いたオンデマンドなリソースコントロールと、仮想データセンターの技術コンセプトが活かされているのはもちろんです。それだけでなく、クラウド上でのサービス開発・運用に必要な機能が付いている!と言う点が、僕が個人的に思う最大の特長です。

記録を残しながらクラウドを管理する

GOUCで実現されている機能のうち、一番運用を意識していて面白いと感じるのは、チケットシステムです。チケットを起票して、それのステータス管理やら、コメント記入やらをやるものです。

これに類する仕組みは、どの現場でも割りと広く使われているのではないでしょうか。しかし、特にユニークだと思うのは、チケットにコメントを書くのと同じ要領で、インフラの操作をしたものもチケットへ記録に残せると言う点です。そう、チケットシステムが、インフラとガッチリ連携しているのです。

想像してみてください。運用時には様々なトラブルが起こるわけです。特定のサーバだけレスポンスが悪いだとか、リリースのために新しいマシンイメージを作るだとか、監視してたらアラート来たとか。

それらを全部チケットで管理するわけですが、GOUCでは、手動で任意のチケットを作るのはもちろん、アラートなどはできるだけ自動でチケット化されます。その上で、各チケットに関連した作業として、マシンのリブートをしたとか、新しいインスタンスを追加で起動したとか、そんなのがコメントと一緒に残るのです。

通常、この辺りはデータセンターリソースを操作する事だけを目的に作られたコンパネではやらない部分です。仮想マシンを再起動したりする操作はGUIで提供されますが、その操作が「何のために行われたのか」は管理していません。チケットに基いて操作を行う、このコンセプトが運用のシーンでは嬉しいですし、基盤とガッチリ連携していなければ実現できない部分でもあります。

この辺り、現場の方とはお客様に何が必要なのかと言うところを議論したり、実際にヒアリングに行ったりして、組み立ててきた背景があります。そのプロセス自体がとてもおもしろい試みでしたし、結果的に面白いものができた実感につながっています。これからもお客様の声で成長していくものですから、ぜひ使ってみて、ご意見ください。

技術的なところ

前回同様、今回も機能面が色々パワーアップしています。

一番大きいのは、東京と京都の二拠点にデータセンターがあり、Wakame-VDCはそれぞれに分散してインストールされて、相互にマシンイメージの転送を行うことができるようになっています。これで、バックアップサイトや、激甚災害対策(DR)等の構築の役に立てることができると思います。bkstaと言う専用のエージェントが追加されています。

次に、グローバルIPを任意のVMに割り当てることができるようになりました。Wakame-VDCにはnatboxと呼ばれるエージェントが追加されており、ここには、OpenFlowのフローテーブルがバリバリ使われています。

それから、割りと地味な機能ですが、Wakame-VDCのログ保存方式が、fluentd+cassandraになりました。今までのファイルベースのやり方でもいいのでしょうけれども、今後ログの収集は基本的にこの仕組を横展開しようと考えています。

メッセージ通知サービス(プロジェクト名"Dolphin")も追加されています。これは内部では死活監視Zabbixと連携して、イベントメッセージを吸い上げるためのインターフェイスとして利用されています。

(注記)public/masterへのソースコード公開はもう少々お待ちください

Wakame-VDCはまだまだ成長します

順調に成長していますので、今後もご期待ください。無い機能、欲しい機能は一緒に作りましょう!OSSはそうして成長をしていくのです。そしてまた、いつでもそのフィードバックを得ることができます。

]]>
Wakame-VDCを利用したパブリッククラウドWebARENA VPSクラウドについて http://blog.livedoor.jp/sparklegate/archives/50890011.html Wakame-VDCを使ったWebARENA VPSクラウドが、このほどNTTPCコミュニケーションズ様よりリリースされました。このプレスリリースは2013年3月5日のものでしたから、今日でもう2週間も経ってしまってブログを書いていると言う体たらくですみません。 ぜひ使ってみてください。今な... sparklegate 2013年03月21日T22:33:54+09:00 Wakame Wakame-VDCを使ったWebARENA VPSクラウドが、このほどNTTPCコミュニケーションズ様よりリリースされました。このプレスリリースは2013年3月5日のものでしたから、今日でもう2週間も経ってしまってブログを書いていると言う体たらくですみません。

ぜひ使ってみてください。今ならキャンペーン中なので、2013年5月13日までに申し込むと、最大3ヶ月間、プラン100が無料になってお得です。

Wakame-VDCの進化

実際、NTTPCコミュニケーションズ様とは、Wakame Software Foundationにご加盟いただいて、一緒にWakame-VDCを育てていこうと言うところからスタートしています。最初の頃の打ち合わせは、どうやってWakame-VDCを活用するのか四六時中議論をしました。Wakame-VDCは、なぜ現在のアプリケーションデザインになっているのか、未来のクラウドコンピューティングの形、そしてOpen Source Software (OSS)に対する考えなどを共有していくにつれ、サービスのイメージが出来てきた、と言った感じです。そこから足りないものを、共同でどんどん実装し、リリースとなったわけです。

OSSは製品ではなく、生き物です

個人的に思うのは、OSSを製品として見ても良いのですが、製品として見過ぎると、今ある機能に目が行きがちです。OSSの最も重要なポイントは、自らの力で変化をさせられるところです。「製品」と言うよりは、未来をどうするべきか考えながら成長をさせていける「生き物」なのです。機能比較表みたいなものを作って、現時点版のOSSに、しろまる×ばつだったものも数カ月後にはしろまるになる。未来を共に作れるのです。それがOSSの意義なのであり、Wakame-VDCのような、オープンな技術を採用した効果と言えるわけです。

割りとこの辺りで、主体的に動こうとする企業様が少ないのは事実です。どうしても自分でやるよりは、誰かにやらせようとします。OSSは自分で学ぶことができ、それを怠りさえしなければ、ベンダーロックインから開放されるのです。実装を誰かに任せ、取り扱いも誰かにやらせ続けていたら、ベンダーロックインに自ら嵌り込むだけなのです。OSSがプロプライエタリ製品と大きく違うのは、ソースコードを見て自ら学習できる点です。ここに投資しなければ、OSSである意味がありません。

僕達は、本当にオープンな技術とは何か、真の意味を問うています。Wakame-VDCは、それを応援できる数少ないOSSです。関連する全ての技術をお渡しします。皆様と共に、Wakame-VDCの輪を広げたいと思っていますので、どうぞよろしくお願いいたします。気軽にご連絡ください

]]>
OpenFlow実践入門を読んだよ http://blog.livedoor.jp/sparklegate/archives/50885825.html 献本いただきました 以前、Twitterなんかでは呟いていたのだけれども、OpenFlow実践入門と言う本が出まして、そこにWakame-VDCの仮想ネットワークの仕組みについて書いていただきました。感謝です。改めて献本いただいたので、他の章も合わせて読んでみました。 プログラマ... sparklegate 2013年01月10日T16:01:35+09:00 献本いただきました

以前、Twitterなんかでは呟いていたのだけれども、OpenFlow実践入門と言う本が出まして、そこにWakame-VDCの仮想ネットワークの仕組みについて書いていただきました。感謝です。改めて献本いただいたので、他の章も合わせて読んでみました。

プログラマブルなネットワークを体験するのに十分な知識が詰まった本

一番良いのは、Rubyを使った大量のサンプルが掲載されているところです。Tremaはコードがとにかく短くなるので、この手の実践書籍にはサンプルを掲載するには向いていて、十分な情報量にあって尚、可読性が保たれています。まぁTremaじゃなかったら、サンプルのコードはクソみたいなコメントが大量についていて、やっと理解できるような代物だったでしょう。

Rubyを知らない人に向けて、Rubyの読み方・書き方までも、きちんと補足されていて、これも良い点だと思いました。テーマがネットワークとTremaに絞られているので、Rubyそのものも理解しやすい。個人的には言語だけを学ぶと、すぐに飽きますので、テーマがありつつ、コーディングした方が飲み込みが早くなります。とにかく、インフラエンジニアはコードを書く機会が少ないですし、いいチャンスですから、この本からプログラマブルな世界に飛び込むのはアリだな、と思います。

Wakame-VDCの仮想ネットワークの説明

Wakame-VDCならではの特徴的なアプローチについて、分かりやすく書いていただきました。僕はネットワークの専門家ではないので、このアプローチが「他と比較してどうなのか」まで横断的に理解してやっているわけではないのです。目の前にある課題を、1つずつソフトウェアで解決しているだけに過ぎず、そう言う意味では、やっと自分たちの何がユニークな点なのかについて、客観的な理解ができたような気がしています。

詳しくはぜひ、書籍をご購入いただいて、お読みいただけたらと思います。Wakame-VDCも、ここから今後どんどん新しい実装を加えていきますので、引き続きご注目ください。

[フレーム] ]]>
品質と実績の悪魔が潜む日本 http://blog.livedoor.jp/sparklegate/archives/50882462.html クリス・アンダーソンから日本人への質問 〜『MAKERS』編集後記2 上記記事を読んでいて、ちょこっと思った事をば。日本のビジネスに揉まれた物は、大体品質が良い。それと同時に、その品質の考え方と、実績主義であるところに悪魔が潜んでいると僕は思う。 技術のユーザも... sparklegate 2012年11月15日T19:41:44+09:00 雑談 クリス・アンダーソンから日本人への質問 〜『MAKERS』編集後記2
上記記事を読んでいて、ちょこっと思った事をば。
日本のビジネスに揉まれた物は、大体品質が良い。それと同時に、その品質の考え方と、実績主義であるところに悪魔が潜んでいると僕は思う。

技術のユーザも技術者

日本人は、自分で意思を持って技術を生み出し、自分から世界を変えて行こうとする主体性が少し低い気がする。誰かがそうするなら僕もやりますけど、って人が大多数ではなかろうか。だから、これ流行るの?そんな世界本当に来るの?みたいな不思議な問いが出る。僕が日本は「一億総ユーザの国」だと言ってみたり、「ユーザがユーザに商売する国」とか言ってみたりするのはそう言うところ。技術者の大半は、技術のユーザに徹するから、新しい物を生み出す気が無いし、枯れたものを好む傾向にある。

これには、「生み出せる技術者は一体どこへ行ったんだ」って嘆きの意味もある(もちろん居ないわけじゃない)けれど、実際は悪いことばかりではない。ユーザがユーザに対して商売するんだから、品質にはとにかくうるさいし、要求された側も、割りと素直に事情を理解してしまう。技術を磨くことについては疑いもせず突き進める。多少のバグに目を瞑ることなどできない。品質第一。そこが日本の良いところだと思う。

新しい技術は大体海外からやってくる

その代わり、日本から新しい物やコンセプトが出てくることが少ない気もする。何せ最初から「高品質」で「実績アリ」でなければ売れない。技術者も、技術のユーザとして、その目線で技術を選んでいる。自分で何とかしようなんて露程にも思わない。従って新しいチャレンジは、ビジネス的にも技術的にも価値がゼロ。市場からのフィードバックの初速はびっくりするくらいに悲惨だ。ほんとに辛い。

すると、結局どこか外国で確立された物を見つけて来て、猿マネするなり輸入するなりアライアンスを組むなりして、日本に適用していく...みたいな手段が、一番現実的で良いよね、ってことになる。これをうまくやっている人もいて、実はビジネス的には全く正しいと思うし、本当に素晴らしい。僕は、そのようなビジネスとは別に、日本もどんどん新しい技術を生み出して試してみる流れが、もっとたくさんあって良いんじゃないかなって思うんです。新しいものを生み出せる日本、そして磨ける日本。これがセットになったら、どんなに素敵だろうか...と。

何としてでも生み出したい

僕が思うのは、将来も技術者として生きていくのであれば、より己の力を信じるべきではないかと。能力を持っているのだから、技術を生み出すことに挑戦したい。そして、日本からスタートしても、世界を変えていけることを証明したい。もちろん、僕はビジネスも成功させたいけれど、それ以上に、生み出した技術で成功しなければならないよね、って思うのです。

勢いで書いたら冒頭記事と関係無くなったけどまぁいいや。何が言いたいのかって言うと、ウチは技術に拘りすぎていて儲かってません、ってこと。あれ?そう言うことだったっけ。
]]>
Wakame-VDCがOpenFlowにたどり着いたのは何故か http://blog.livedoor.jp/sparklegate/archives/50880645.html Wakame-VDCは、OpenFlowへの取り組みを2011年からやってきて、かれこれ1年以上経過しているわけだけれども、今になってやっと流行って来た感じがしている。多分、Niciraが2011年暮にステルスを解除して、VMwareに買収され、その金額に驚いたところから、一気に話しが大きく... sparklegate 2012年10月19日T15:33:59+09:00 Wakame Wakame-VDCは、OpenFlowへの取り組みを2011年からやってきて、かれこれ1年以上経過しているわけだけれども、今になってやっと流行って来た感じがしている。多分、Niciraが2011年暮にステルスを解除して、VMwareに買収され、その金額に驚いたところから、一気に話しが大きくなったような気はしている。何にしても、扱っている技術がメインストリームになっていくのは嬉しい事です。

2009年秋〜2010年4月の初期バージョンリリースまでネットワークは悩みのタネ

Wakame Software Foundation (WSF)は、2009年の秋からWakame-VDCの開発に取り組み始めた。それから数ヶ月後の2010年2月に、中間成果報告と言う形で、WakameTechと称する会合を開いたのです。当時はスライドに明記されている通り、ネットワークの課題が大きいことだけが分かって来ていて、とりわけAWSのセキュリティグループをどうやって実現するかが興味の対象でした。この時考えていたのは、Netfilterによる分散スイッチの構成でした。今で言うエッジネットワーキングです。スライドでは、本当に999台のシステムに1台加えた時に、1000台分のNetfilterの設定が変わってしまって良いのだろうか、と心配事が記されています。


その時のリリースでは、物理NICを使い分けて逃げることにしていました。

[フレーム]
Wakame Tech #1 from axsh co., LTD.

初期リリースから半年後に、エッジネットワーキングへ

WakameTechの後、Wakame-VDCのセキュリティグループの実装に着手し、2010年11月にはリリースをしました。エッジネットワーキングしている様子は、下記のダイアグラムで示されています。各物理サーバで動いているVMから出てくるパケットを、Netfilterで処理させます。VMのオーナーが設定変更を指示し次第、このフィルタ部分をダイナミックに書き換えるのです。

[フレーム]
Wakame Project - 自作クラウド研究会 from axsh co., LTD.

1年後の2011年12月に、OpenFlow対応を実現

そして、2011年12月には、エッジネットワーキングの仕組みをそのまま、OpenFlowが使える構成に置き換えました。基本的なアーキテクチャはそのままにして、使うプロダクトだけをOpenFlowのために置き換えたのです。それが、Open vSwitchとTremaでした。当時のTremaはイベントループの部分で独自のメッセージングを行なっていました。改善したものをTremaプロジェクトへコミットしたところ、無事に取り込まれたので、そのまま利用しています。

OpenFlowを採用した理由はスライド中にありますが、将来パケット処理のオフロードに期待できそうだと言う部分です。それ以上の理由が見当たりません。

[フレーム]
OpenFlow in IaaS - Wakame from axsh co., LTD.

2012年3月には仮想ネットワークが動作し、今に至る

セキュリティグループは、Netfilter版とOpenFlow版の2つありますが、お客様に必要とされるのは以前からあるNetfilter版でした。そのため実装差が少しずつ出てきており、それを埋めながら、OpenFlow版に期待される仮想ネットワークとSDNをやり切るのでは、問題を複雑にします。そのため、ここから我々は仮想ネットワークとSDNに注力するようにしました。


結果として、3ヶ月後の2012年3月には、仮想ネットワークが動作するようになりました。GUIからも使えるように、利便性を上げるための実装を追加し、今に至ります。

[フレーム]
The Power of Virtual Network: Infrastructure as a Service Cloud Computing - Wakame-VDC from axsh co., LTD.

IaaS基盤のOSSとして、ここまで出来ているのは、今のところWakame-VDCだけです。ぜひ皆様、お試しください。

]]>
Wakame-VDCをオープンソースライセンスにしている3つの理由 http://blog.livedoor.jp/sparklegate/archives/50876762.html 最近、Wakame-VDCをやっていて、オープンソースにしている理由は何故なのか、と問われる事があります。 3つの理由を述べておきます。 理由1: いつでも改変できる自由を保証したいから 自分達のプロジェクトのために、機能追加や改変ができることがとても重要だと思ってい... sparklegate 2012年08月24日T20:22:20+09:00 Wakame 最近、Wakame-VDCをやっていて、オープンソースにしている理由は何故なのか、と問われる事があります。 3つの理由を述べておきます。

理由1: いつでも改変できる自由を保証したいから

自分達のプロジェクトのために、機能追加や改変ができることがとても重要だと思っているからです。

こんな話があります。GNUプロジェクトを始め、GPLを作ったリチャード・ストールマンの話です。彼は、購入したプリンタのドライバに不具合があるのを見つけました。不便であったので、自分で修正するためにソースコードを手に入れようと企業に掛け合ったが、開示されることは無かったのです。重要なのは「自分が不便だと思ったので、自分で改善する」と言う手段が絶たれている事です。自分がお金を払って買ったものなのに、なぜ自分のためにソフトウェアを修正することが許されていないのでしょうか。

僕はこの話はもっともだと思います。物理的な物も、買ってきたまま使って不便であれば、日曜大工をして工夫をします。バラバラに分解して、組み立て直すこともできます。部品を交換したり、新しい装置を取り付けることだってできます。それがソフトウェアになると、なぜ許されなくなるのでしょうか。

自分達のプロジェクトで使おうと思っていたソフトウェアだって同じ事です。不便なまま使い続けなければならない理由は無いはずです。自分達のために、改変するべきです。より便利なものにして利用すれば良いのです。

一方で、不便な物や、使えないソフトウェアは捨てて違うものを探せば良い、と言う人もいると思います。ユーザであればそれで十分です。自分にぴったりの物が登場するのを、いつまでも待ち続け、使えない使えないと文句を言い続ける必要があります。しかし、私たちは技術者であって、現状を変えていける力を持っているのですから、行動をするのが先でなければいけません。

理由2: 課題を共有し合うことができるから

多くのオープンソースプロジェクトでは、共通した課題をどう乗り越えるのかが議論されています。言ってみれば、ソースコードは、そうした知の集合体であり、再利用可能なノウハウなのです。コミュニティの中で、ひとつずつ解決されて、蓄積されていくものです。あとは、自分達のためにどうやって応用するか、更に何を改変していけば良いか考えるだけで良いのです。

このような活動の中で、小さな新規のコードや、変更でも、大きな効果を生むことがあります。自分達のためにやったことではあるが、これを共有すれば、同じ問題で困っている人の役に立てるかも知れません。その1つ1つが、コミュニティの中で、また良いスパイラルを作るのではないか、と思います。

理由3: いずれサポートも不要にできるから

オープンソースソフトウェアは、しばしばサポートを受けられない、と懸念されることがあります。近年は、サポートを名乗り出る専門家集団も、少しずつですが現れ始め、懸念も和らいでいるのではないでしょうか。オープンソースであれば、専門家にサポートしてもらいながら、自分達も学習をすることができます。最も信頼できるマニュアルが、ソースコードとして開示されているからです。秘密にされているものは何もありません。最終的に、専門家のサポートを不要にして、コスト構造を変えることができます。実際サポートを無しにしてしまうかどうかは別ですが、選択肢があるのは大きな意義があります。

プロプライエタリ製品では、ヘビーユーザーにはなれますが、いつまで経っても専門家にはなれないのではないでしょうか。

さぁ、ソースコードを読もう!

僕たちがオープンソースに魅力を感じ、お客様にオススメするのも、このような考え方がますます重要になってきていると感じているからです。コスト削減をしたいと考えて、プロプライエタリ製品からオープンソース製品へと安易にシフトしてはいけません。ソフトウェアの価格がゼロになったから達成できたと言うべきものではないのです。短期的にはそれで良いのかも知れませんが、結局サポートを他人任せにしている以上、プロプライエタリ製品であろうと、オープンソース製品であろうと、コスト構造は変わらないのです。自分達が専門家にならない限り、それは変えられません。オープンソースライセンスは、全てのコードを開示して、あなたが専門家になるための道へと導いてくれます。

IaaS型クラウド基盤ソフトウェアであるWakame-VDCも同じ考えです。最初はサポートをお手伝いしますが、最も重要な「自ら専門家になる」と言うポイントも同時にお手伝いしたいと考えています。最終的には、自分達の力で機能開発できるようになること、これがオープンソースソフトウェアの世界では大切なのではないでしょうか。

]]>
仮想ネットワークとエッジネットワーキングを理解する http://blog.livedoor.jp/sparklegate/archives/50867049.html Wakame Software Foundationでは、Wakame-VDCと言うIaaSの基盤になるソフトウェアを開発していて、ここでも仮想ネットワークについては検討されている。いくつかはもうWakame-VDCの設計にすでに実装済みだ。もう少し検証と試験がしたいので、協力していただける企業様を募集... sparklegate 2012年04月13日T15:04:13+09:00 Wakame Wakame Software Foundationでは、Wakame-VDCと言うIaaSの基盤になるソフトウェアを開発していて、ここでも仮想ネットワークについては検討されている。いくつかはもうWakame-VDCの設計にすでに実装済みだ。もう少し検証と試験がしたいので、協力していただける企業様を募集しているところ。そこで、今一度、仮想ネットワークとは何かについてまとめておきたいと思う。

参考資料

最初に一言

私は、かつてネットワークプログラミングを好んでやっていたものの、特にネットワークの研究者ではないので、間違ってる点は指摘していただけますと幸いです。

ここで言う仮想ネットワークの定義と処理の概要

仮想ネットワークとは、物理ネットワークの構成とは無関係に、ユーザが任意にあたかも物理ネットワークを構成できる機能だ。
どのように無関係にするか。ユーザが送出したパケットには仮想ネットワークの中を通るようにアドレス類が書き込まれている。これを物理ネットワークでも通じるように変換し、目的のサーバーへパケットを届ける。受け取った側はパケットを送出時の状態に戻せば良い。大雑把に言えば、Ether Frameに送信先、送信元として書き込まれたアドレス類を、仮想と物理の境界で読み変える技術さえあれば実現できる

パケットは書き換えてしまうと、パケット単体では元の情報に復元しづらい。そのためGREのような、カプセル化の技術を利用するのも良さそうだ。物理ネットワークを通過できる新しいパケットを作り、そのペイロードに元のパケットをそのまま載せる事ができる。実際、この処理のオーバヘッドは小さく、現実的だ。

仮想と物理の境界線をどこに設けるか

仮想ネットワーク上のノードで生成されるパケットは仮想ネットワークでしか流通させられない。当たり前だが、そのまま物理ネットワークに流しても届くわけがない。その為、物理ネットワークへ出て行く前にはパケットは物理ネットワークへの変換を完了していなければならないだろう。そう考えると、ノードの持つOS(Kernel)から出た直後、もしくはその直前に処理をするのが、差し当たって良いポイントになる

最近ではデータセンターのホスティングサービスや、社内のコンピューティングリソースを集約するソフトウェアとして、IaaSの基盤技術を活用する企業が増えている。このソフトウェアは、コンピューティングリソースを管理するために仮想サーバを利用している事が多い。IaaSは仮想と物理の境界に立つソフトウェアだとも言える。このソフトウェアに変換の契機を作ってもらうのが良さそうだ。仮想サーバは仮想ネットワークのパケットを物理ネットワークに向けて送出するのだから、VNICの辺りで直ぐにパケットを処理できる

こうして、エッジノードに配された仮想サーバにできるだけ近い場所で、パケットの変換をする。物理ネットワークを抜けて無事に目的となるエッジノードに到着したら、そのパケットを復元するようにする。エッジノードはIaaSの仕組みが分散管理しているのだから、パケットを正しく変換できるように、それぞれのエッジノードをIaaSにコントロールさせる。
IaaSは、あるユーザが作った自分だけのネットワーク…すなわち仮想ネットワークを定義できるようにし、そのネットワーク上にセットアップされた仮想サーバが、うまくパケット物理ネットワークに流せるようVNICの出口それぞれに仕掛けを施す。この仕掛けが仮想と物理をうまくマッピングし続けられるよう、IaaSはユーザの要求に合わせて自動的に設定を調整していけば良い

ここでのポイントは、このシステムは物理ネットワークの設備に依存しないと言う点だ。物理から独立した形で仮想ネットワークを作れるようになる。仮想マシンもそうだった。物理マシンに依存せず、独立した形で仮想マシンを動作させられる。同じことがネットワークについても起こる。

パケットの変換に使える技術

さて、後は仮想サーバのVNICにてパケットの変換をする技術に言及することにしよう。現時点で我々が利用しているのは、GRE Tunnelだ。先ほど触れたが、パケットのカプセル化が可能であるため、物理ネットワークを通過できるパケットの中に、仮想ネットワークのためのパケットを内包させることができる。
これを用いれば、元のパケットを傷つけること無く物理ネットワークに流せる。 また、サブネットを越えないL2レベルに収まるネットワークであれば、ARPのコントロールをするだけで、スイッチの学習機能を騙す事ができるため、GREに頼らず目的の仮想ネットワークは構築できる。 このようなテクノロジを組み合わせて仮想ネットワークを作る。効果は一様だが、実現には様々な方法が考えられるので、試しながらベストプラクティスを組み立てて行く事になるだろう。

Wakame-VDCと仮想ネットワークの歩み

Wakame-VDCは、v10.11 (2010年11月リリースのバージョンと言う意味でもある)で、セキュリティグループと言うAWSと同等のパケット制御機能を入れた。Wakame-VDCにとって、セキュリティグループの実装方法はプロジェクト開始直後からずっと悩んで来た部分だ。
Eucalyptusがそれをスケールしない形で実現しているのも知っていたし、実装次第ではWakame-VDCでも課題になってしまうため、慎重に設計する必要があった。

そのため、このフェーズであらゆる調査を行った。何社かスイッチベンダーの技術者とも議論したが、彼らもわからない(もしくは、分かっているけど言えなかったのかも知れない)と言う。悩み続けている最中、たまたまAWSのセキュリティホワイトペーパーを読む機会があった。これを見る限りどこか中央集権的にネットワークが処理されているのでは無い。恐らく全てのネットワークがインスタンスを出た直後に分散スイッチのようなものでコントロールされているのではないかと言うヒントを得た。
早速そのアーキテクチャを社内で議論し、行けそうな感覚がつかめたので、直ぐに分散スイッチを設け、そこにファイアウォールを実装してみた。これをセキュリティグループのスタイルで管理できるようにし、v10.11はリリースされた。Wakame-VDCは、おそらくエッジネットワーキングが組み込まれた最初のオープンソースなIaaSだろう。このアーキテクチャはスケーラビリティが非常に高く、物理ネットワークと分離されているため、特殊な機器を用意しなくても良いのが最大の特徴だ。VLANすら必要がない。

ここでエッジノードでのネットワークコントロールの可能性がはっきりした。エッジにインテリジェンスを持たせれば、Fabricに影響無く自由に仮想ネットワークが実現できる。現に、v10.11はVLANを一切使わないため、VLANに対応していない時代の古いスイッチでも機能する。これは非常に大きいアドバンテージである。
米国でコンピュータサイエンスが専門の大学教授にもこの実装をみてもらったが、非常にユニークで面白く、他の類似するクラウド基盤には無いテクノロジだと評価していただいた。

Wakame-VDCは、エッジノードではLinuxを利用していたため、Netfilterを使って、パケットのコントロールを行うようになっている。よくよく考えてみればKernelの仕事は山積みだ。エッジノードでは仮想マシンを動かし、その上今後は仮想ネットワークも押し付けられる。CPUは、より高速かつ超並列に処理できる装置になって行くだろう。しかし、同様にネットワークも10Gbを超え、高速化して行く。CPUのワークロードを減らすには、Kernelの上にある仕事を減らさなければならない。これが課題だった。

また、早いうちから次のようなアイディアもあった。仮想ネットワークと物理ネットワークをハッシュテーブル式のデータベースで管理し、パケットが仮想と物理の境界を越えるタイミングでこのテーブルを使ってパケットの変換を行えば、仮想ネットワークが作れる、と言うもの。
ちょうどOpenFlowを見ていたエンジニアが、そのアイディアとダブらせ、こんな技術があると教えてくれた。よく読んでみるとOpenFlowはNetfilterの代わりになるだけで無く、SwitchとControllerが分離されているためKernelから遠隔の操作を可能にしている。この性質を利用してオフロードできる装置が用意された暁には、そちらに仕事を寄せられるはずだ。

ひとまず興味を持っているエンジニアにセキュリティグループをこれで置き換えられるかどうか実験をお願いした。ネットワークの基本的なアーキテクチャはv10.11から変える必要がない。OpenFlowの使い方が分かったので、そのまま実装して組み込むことにした。こうしてWakame-VDCはOpenFlowでエッジネットワーキングできるようになった。それが2011年12月にリリースしたv11.12になる。

一方でv11.12の着地点を議論しながら、社内ではネットワークの未来像の議論を並行してきた。製品のビジョンも整理し直した。v10.04リリース当初から仮想データセンターを作る事を標榜してWakame-VDCと名付けたはずだ。我々が作りたいのはクラウドではない。仮想データセンターだ。その為、Wakame-VDCの位置付けを表す言葉として、データセンターハイパーバイザーを使う事にした。Wakame-VDCは、仮想化されたデータセンターを動かせるハイパーバイザーである。ハイパーバイザーは、仮想と物理の境界線に立つ。それはサーバだけではなく、ネットワークも同様だ。これがWakame-VDCのあるべき姿なんだと思う。

さて、引き続きどんどん実装して未来へ進みたい。

]]>
Wakame-VDC v11.12をリリースしてみて http://blog.livedoor.jp/sparklegate/archives/50858707.html 先月末にWakame-VDC v11.12がリリースされました。 私たちはこの半年の間、Wakame-VDCの安定化と、実案件への適用、運用、数多くのバグフィックスを通じて様々なナレッジが得られました。 今回のバージョンアップはそれらが全て反映されたもので、今すぐインストールDVDを入... sparklegate 2012年01月04日T20:12:01+09:00 Wakame 先月末にWakame-VDC v11.12がリリースされました。 私たちはこの半年の間、Wakame-VDCの安定化と、実案件への適用、運用、数多くのバグフィックスを通じて様々なナレッジが得られました。 今回のバージョンアップはそれらが全て反映されたもので、今すぐインストールDVDを入手することができます

早速いろいろと感想が届いていて嬉しい限りです。(←日本語の感想はまだ無い)

OpenFlow対応

特に大きな機能追加は、前回ポストした通り、OpenFlowに対応したことです。おそらく正式リリースされたプロダクトの内、IaaSのようなクラウド基盤ソフトウェアとしては初めてではないでしょうか。 優秀なエンジニア達が組み上げた野心的な試みです。 現在はOpenFlow Specification v1.0.0に準拠する機能しか使えていません。 v1.1.0以降のバージョンに興味深い機能はたくさんあるのですが、まだ使える実装が無いのです。 今はOpen vSwitchと、Tremaを組み合わせています。OpenFlowに足りない機能は、一部Open vSwitchに依存していますし、Tremaも部分的にコードを改造して利用しています。 やってみて分かったのは「機能はするが、それぞれ外部環境となる動きがまだ激しく、安定を志向するユーザ様にとっては時期尚早と言う印象」です。 これとは逆に、新しい可能性を感じられる方々にとっては、Wakame-VDCは十分に検証用のシステムになり、大きな価値を提供できます。 クラウド基盤ソフトウェアにとって、ネットワークは最もエキサイティングな分野です。 この部分の機能拡張を強く進められたことは、Wakame-VDCのこれまで積み重ねて来た確たる実装と、拡張のしやすさ、そしてエンジニアのパワーであると改めて認識しています。

安定化への挑戦

Wakame-VDCは、品質の安定化に向けた取り組みもすでに始まっています。 一文字でもプログラムに変更があれば即時ビルドしてテストを通して確認するプロセス(Continuous Integration - CI)が出来ています。

テストは重要です。 特に、まとめてテストをするよりも、小さな変更が起こる度に行われるテストが重要です。 システム開発のご経験がある方ならご理解いただけるかもしれません。 バグは解析に時間がかかります。 注意深く解析してたどり着いた答えはいつも明快で、原因は小さな不注意です。 そしてプログラマはいつも「このコードは確かに悩みながら何度も書いた」とか「なぜこのバグをその時に見つけられなかったのか」悔やむのです。 CIのプロセスは今加えた変更が、これまでのテストを通さなくするものかどうかはっきりさせます。

また、冗長化構成を取れるように、インストールのガイドラインを準備中です。 これまでもアーキテクチャは冗長化可能なように設計をしてきましたが、ノウハウをまとめてアウトプットしてはいませんでした。 これは、Wakame-VDCが大手電力会社様の次世代向けインフラとして使われており、そこで手を尽くしてきたところです。 皆様にも良い事例としてお示しできるのではないかと考えています。

機能面でユーザへ安定を提供

今回追加された様々な機能が、ユーザに安定を提供します。 物理サーバの障害対応したり、DHCP無しの環境でも動作させられるようになったり、実に様々な試みが組み込まれています。ぜひお試しください。

今後はより開発に注力できる環境作りを

Wakame-VDCは、開発を始めて3年目に突入しました。 オープンソースプロジェクトがこのように長く続いたこと自体、クラウド基盤技術への注目度が高く、また必要とされていることをヒシヒシと感じます。 国内でこのような活動をしている企業はあまり聞きません。 使う側からすれば単純な機能に見えますが、それを研究しながら首尾良くプロダクトにまとめながら使える形にしていくところに、想像していた以上の難しさを感じています。

私共は、こうしたテクノロジをしっかりやっていく企業になりたい。今後は開発スピードを上げて、引き続き世の中へ価値を生み出していきたいと考えています。 そのための3年計画も考えました。 次々に施策を進めていきます。 今年もどうぞよろしくお願いいたします。これからもお楽しみに!

ご協力者募集中!

Wakame-VDCは、オープンソースライセンスに基づくプロダクトです。常々皆様と一緒に開発をしていきたいと思っています。メールなど何でも結構ですので、ご連絡ください。お待ちしております。

]]>
EC2互換APIの開発を始めましたけれども...! http://blog.livedoor.jp/sparklegate/archives/50850411.html AWS EC2のインターフェイスを受け付けられるだけでなく、相互互換するためのプロジェクトであるWakame-adaptersの開発を始めました。現時点で実案件のニーズはあるので、作っておけば他に使いたい人も居るかしら...と言う判断です。将来的には、むしろWakameのWeb APIで、AWS ... sparklegate 2011年10月05日T21:55:00+09:00 Wakame-adaptersの開発を始めました。
現時点で実案件のニーズはあるので、作っておけば他に使いたい人も居るかしら...と言う判断です。将来的には、むしろWakameのWeb APIで、AWS EC2をコントロールする方向を考えています。

ただし、色々なところで以前から公言している通り、「AWS EC2のインターフェイスでWakame-vdcをコントロールできる機能をWakame Project内で未来永劫サポートする」ことをお約束するものではありません。

今回はその理由を以下に3つ述べておきます。
  1. AWSのWeb APIは設計が古い
  2. インターフェイスだけではなく、挙動も合わせなければならない
  3. AWSが未来のクラウド像とは限らない
Wakame Projectでは、設計当初からAWSと互換するのを公式サポートするのだけは避けたいと思っていました。元々AWSのインターフェイスはモダンなWeb APIと比較すると仕様的に重くて、開発者に優しくないのです。
今どきXMLを使っているとか、パピルスに記されたクサビ形文字を読めと言っているようなものです。パースの手軽さを失っているので、新しいWeb APIが公開されただけでは気軽に試そうと思えない。そんな人は言語レベルでのアクセスライブラリの提供を待つことになります。(最近は提供速いのかな?)AWSクラスの素晴らしいエコシステムを持っていても、サードパーティがこれらを組み入れるのは更に後のことですし。
AWSもその内軽量のアクセス方法を併用してくるんじゃないかしら、と勝手に思っています。

次に2.についてですが、互換と言うのはインターフェイスだけを合わせれば済む話ではありません。内部の挙動も合わせる必要があります。IPアドレスが決まるタイミングや、ステータスの遷移パターン、例外処理など、期待される動作が一致していなければ動く物も動かないのです。
例えばIPアドレスなんかは、EC2ではインスタンスがブートしてから決まります。しかしWeb APIを利用するプログラムにしてみれば、早期にIPアドレスが決まればコードが簡潔になります。そうした効率的動作はWakame-vdcに組み込めるはずなのに、AWS EC2互換する時には使えないんですね。その辺りはやっぱり開発者に優しくない。

また、いくつかの案件ではEC2にはない特殊な要件がありました。それは互換APIのレベルには無い機能なので、実現すれば互換ではなくなるわけです。AWSと互換する宣言は、自分達の思惑や戦略を捨てて、AWSと同じ物を作ると言う意思がなければ言えない言葉です。
今後も背負っていくには少々重すぎます。

最後は3.です。
皆さんは未来のクラウドは仮想ネットワークが実現されていて、好きなネットワーク構成を自由にデザインできて手に入るようになっているのでは?と夢想したことはありませんか。
Yesと答えた方、そう、あなたです。もうあなたの未来にあるクラウドはAWS EC2と互換していません。AWSが未来のクラウド像であるとは限らないのです。

長々と書きましたけど、まとめると下記の通りです。
  • AWSとWakameは似てるけど、目的が違う物です
  • 目的が違うので、今似ていると言う理由だけで互換を宣言できないです
...と言うことで。

補足


誤解の無いように補足しますが、AWSがダメだと言っているのではありません。
APIのデザインは古くからやり続けて来た歴史的背景もありそうですし、未来のあるべき姿では無いと言うのも、自らのニーズに忠実に設計して生み出されたものであれば、我々が勝手に夢想して未来と思い込んだ物と異なるのは当然かも知れません。まさに今使える物を、欲しい人に届けている。だからAWSは凄い。

どこまでも真っ直ぐだなーと思うわけです。 ]]>
ネットワークの仮想化について考えてみた結果がこれだよ! http://blog.livedoor.jp/sparklegate/archives/50843930.html ネットワークの仮想化を手がけている会社は少ないとおっしゃる方もいらっしゃいますが、IaaS型クラウド基盤のコード読んだらおわかりの通り、今やどのコードにも大なり小なりもう組み込まれています。「ネットワークの仮想化って一体なんだ?」に答えられる記事にできたらな... sparklegate 2011年08月08日T18:30:32+09:00

ネットワークの制御を集中的なトポロジでやるとスケールしない


IaaS型クラウド基盤としては先駆者であるEucalyptusにもすでにネットワークを制御する試みはあります。Cluster Controllerと言う名前で、Node Controllerに対するパケットフローの掌握に挑んでいます。スケールアウトしなかったのとSPOFになった点を除けば、設計が悪かっただけで、 自由なネットワークを作るアプローチの一つであり、まさにネットワークの仮想化を目論んだ仕組みなんだと思います。

VLANは数に限りがあってスケールしない


僕達はWakame-VDCを作るにあたって悩んでいたことがひとつありました。それはもちろんネットワークです。
ユーザーが望むネットワークをどうやって自由自在に構築するのか、これに全く良いアイディアが無かったのです。逃げ道として考えたのが、貸し出す仮想サーバーのNICをいくつか用意し、VLANで区切られた目的別のネットワークに流すと言うものでした。しかし、VLANは12bitの上限があり、4000+α個作るともうそれ以上スケールしません

スケールアウトさせるため分散を前提に制御せよ


悩んで悩んで、無い知恵を絞って考えていたら、ある時こうすれば良いと言う結論に至ったのです。それが、2010/11にリリースしたWakame-VDC v10.11に反映された分散ファイアウォールの考え方でした。そしてその発想は、2011/06にリリースしたv11.06の分散NATにも反映されています。

これらはどこに分散しているのかと言うと、「すべてのエッジノード(末端部分)に分散している」のです。エッジノードに分散してしまうと制御が大変ですから、ここにソフトウェアの力が必要になります。Wakame-VDCのネットワーク制御はすべてエッジノードで実現しています。

分散ファイアウォールの仕組み


分散ファイアウォールは、AWSで言うところのSecurity Groupsです。Wakame-VDCのインスタンス(ゲストOS)は、すべてホストOS側にファイアウォールを1つずつ持つ、と言う概念の設計がなされています。このファイアウォールで、パケットの送信元を調べallow/denyの制御をし、インスタンスを安全に保ちます。

実はAWSのSecurity Groupsの概念で一番面白い点は、「End to Endでルールを設定するだけで論理ネットワークが組める」と言う点にあります。

[画像:security_groups_physics]物理ネットワークでは、左図のように仮にフラットなスイッチ構成であったとしても、個々に持つファイアウォールで通信の制御を行えば...

[画像:security_groups_logics]右図のように論理的には直列のネットワークと似た動きを再現することができます。

エッジノードでの制御でも十分ネットワークのパケットフローをコントロールできます。しかもVLANを一切使わずに済ませることができました。
ここまで実装して、この辺りにネットワークの仮想化の未来像がありそうだと社内で議論していました。エッジノードでネットワークを制御すると言う方針はここで決まりました。

分散NATの仕組み


すっかりSecurity Groupsに気を良くした僕達は、IPアドレスの付与にNATが必要で、このコントロールもユーザーに与えようと言う話しになった時も結局分散して実装するアイディアを継続しました。Firewallができるなら、NATもできる、と言う単純な動機です。

WANに出ていくパケットに対し、指定のグローバルIPを付与しなおすと言うだけの仕掛けなのですが、これもインスタンス(ゲストOS)に分散させて配置しました。ここで使ったのは伝統的なNATの技術ですから、VMが送出したパケットを作法を守って変換すれば正しく通信ができるのです。

この実装が終わった時には、Default Gatewayもエッジノードに持って来たら便利だとか議論をしていました。ここまで来たので、エッジノードで全力を出してネットワークのあらゆるものを制御したらどうなるかや、OpenFlowの動向も踏まえて立ち返って整理しなおしました。

今後はOpenFlow対応してネットワークの仮想化を完了させる


僕達はこれらの経験から、次の結論を導きました。
  1. VMを使うユーザが意識しているネットワーク体系を使える(=これが仮想ネットワーク)
  2. しかしこのパケットはエッジノードで変換され、物理ネットワークを通過する
  3. 変換のルールを作るために物理ネットワークはデーターベース化されている
  4. 制御範囲である物理ネットワーク の境界がエッジノードであるから、インターネットから出入りするパケットも変換の対象である
そしてこれらエッジノードを制御するソフトウェアがIaaS型クラウド基盤の役目ではないかと考えています。もうVLANも何も必要ありません。L2だけで仮想化できるかも知れません。エッジノードがひたすら賢くなり、ユーザの望むネットワークを受け入れるのです

こうしたパケットの制御は、OpenFlowの技術が適しています。これまでは同じ目的のためにLinuxに備わっているNetfilterを利用してきましたが、実装に縛られないため標準技術に対応する方が良いでしょう。僕達はNetfilterをOpenFlowに置き換える作業を行います。

今はハードウェアSwitchがOpenFlow対応してきている流れですが、僕達はできるだけエッジノードに処理を持って行きたいので、Switchの動向に現時点ではあまり魅力を感じていません。それよりも、エッジノード上で動くNICがOpenFlow対応するのを心待ちにしています。今はネットワークが1Gb, 10Gbと高速化しており、転送量だけを処理するのでCPUの負担は増え続ける一方だからです。

例えば、ここをサポートしてくれるNIC(クラウド対応NIC?)が出たら僕達は小躍りすることでしょう。
喜ぶのは僕達だけかも知れませんけど、SR/IO-V対応していてその先にOpenFlowで制御できるCPU(GPUっぽいもの?)が備わっているNICとかあと何年かしたら出そうな気がします。

*言いたいことのまとめ


  1. ネットワークの仮想化で
    ユーザ視点のネットワークを自由に用意できる
  2. ネットワークの仮想化は
    エッジノードで物理ネットワークに相互翻訳される
  3. ネットワークの仮想化のために
    クラウド対応NICの登場を期待してます!
引き続き、もうちょっと丁寧にまとめて行こうと思います。
]]>
OpenCloudCampusでWakame-VDCの話【そして技術面補足】 http://blog.livedoor.jp/sparklegate/archives/50839113.html 睡眠も準備も不足の状態で参戦。空気読んでテクノロジの話をもっとすべきだった。.prezi-player { width: 550px; } .prezi-player-links { text-align: center; }Wakame-VDC v11.06 Release on Prezi ちょっと発表内容とか全然関係なくなるんですが、このPreziってツール面白... sparklegate 2011年07月07日T22:03:30+09:00
[埋込みオブジェクト:http://prezi.com/bin/preziloader.swf]

Wakame-VDC v11.06 Release on Prezi

ちょっと発表内容とか全然関係なくなるんですが、このPreziってツール面白いんです。
リリースされた時にどこかのニュースサイトで見かけて、良いなーと思っていたところ、iPad版を出す!と宣言されていて、ならばいつかiPadがモニタ出力できるようになったら使おうと思ってたもの。
つい最近iPad2を手に入れて、こいつは外部出力できる!と思ってPreziの有料会員になったりやってみたのです。
ところが、肝心のiPad版のビュアーがAdobe系のフォーマットで差し込んだコンテンツ(背景は実写をベクターに変換してPDFで保存したもの)を表示できないと言うことが分かり、当日はPCでプレゼンしました。くっ...。

Wakame-VDC v11.06リリースしました!

これが一番のニュースです。Wakame Software Foundationのご意見を元に、仮想ネットワークの機能を盛り込んで、更に面白くなってきました。分散NATは以下のように設定します。
$ # Create the inside network
$ ./vdc-manage network add --ipv4_gw 192.168.2.1 --prefix 24
output => nw-5oj1klj9
$ # Create the outside network
$ ./vdc-manage network add --ipv4_gw 172.16.0.1 --prefix 24
output => nw-n9d3tvjv
内外のネットワークを定義して以下のようにマッピングします。
$ ./vdc-manage network nat nw-5oj1klj9 -o nw-n9d3tvjv
これで、nw-5oj1klj9に属するインスタンスは、nw-n9d3tvjvのネットワークからの通信を受けられるようになります。
この vdc-manageは、今回リリースに含めた管理コマンドです。
こんな調子で管理していくことができます。
個人的にはインフラの未来を感じます。
分散NATに代表されるように、分散Firewall (Security Groups)も既に実装されており、L3レベルでのフィルタリングは実現できています。
仮想ネットワークの機能としてはまだやりたいことがたくさんあるので、今年のテーマです。

その他、追加したものとしてはスライドにある通りで、LXC対応でパフォーマンスの良いインスタンスが使えるようになっていたり、外部オブジェクトストレージへスナップショットが転送できるようになっていたりしています。

開発者募集中

ぜひこの辺り興味のある方は一緒に開発をしてみませんか。Twitterなり何なり、ご連絡お待ちしております! ]]>
【簡単】Ubuntu v11.04にWakame-VDCを入れてみよう! http://blog.livedoor.jp/sparklegate/archives/50839104.html まだWakame-VDCを見たことが無い人はぜひ。VirtualBoxなどでUbuntu v11.04をインストールして、ターミナルから以下を実行してみてください。$ sudo apt-get install ebtables$ sudo apt-get install ipset$ sudo apt-get install git$ git clone git://github.com/axsh/wakam... sparklegate 2011年07月07日T21:23:53+09:00 VirtualBoxなどでUbuntu v11.04をインストールして、ターミナルから以下を実行してみてください。
[画像:04_getting-started]
$ sudo apt-get install ebtables
$ sudo apt-get install ipset
$ sudo apt-get install git
$ git clone git://github.com/axsh/wakame-vdc.git
$ cd ./wakame-vdc/tests
$ sudo ./vdc.sh install
$ sudo ./vdc.sh
しばらくしてscreenが起動してきたら、ひとまずFirefoxなどで http://localhost:9000/ にアクセスしてみましょう。
[画像:04_login]
起動してきました。この認証画面は、ID/Passwordの順に、demo/demoでログインできます。
[画像:04_dashboard]
Enjoy!

制約

  • 【フル機能有効にはなっていない】特にZFSが無いので、Block Storageが有効になっていません。 ボリュームを作成しようとしても失敗します。自動的にダウンロードされるマシンイメージはサンプルです。認証の連携をしません。認証も連携させたい場合は、目的のインスタンスの上で、./wakame-vdc/tests/image-builder 以下のスクリプトを実行してください。 そのサーバーがブート時に連携するよう設定されます。
  • 【unstable版】上記方法は安定しない最新版が適用されます。


]]>
子会社Axsh North America, Inc.を設立した背景について http://blog.livedoor.jp/sparklegate/archives/50835033.html 無事に米国での登記が完了し、子会社として先週事務所をオープンさせました。何年か前はRubyなど技術メインのブログだったのに、最近そう言う系の書き込みが無くなってすみません。今求められるアプライアンス製品を作りたい日本ではほぼソフトウェア開発ばかりやってきたわ... sparklegate 2011年06月13日T23:54:30+09:00 事業内容に関するもの 何年か前はRubyなど技術メインのブログだったのに、最近そう言う系の書き込みが無くなってすみません。

今求められるアプライアンス製品を作りたい


日本ではほぼソフトウェア開発ばかりやってきたわけですが、米国では認定ハードウェアセットの構築をして、ソフトウェアをプリインストールし、垂直統合型のアプライアンスとしての事業展開を目論んでいます。
日本でも実現できないか検討したのですが、ハードウェア寄りのビジネスはどうしてもリスクが高いとみられがちで、資金面での支援者を得るのが難しい側面があって、こういうのは実際に見込み顧客のいる場所でやはり自分達の力でやるべきだと判断しました。
僕たちも顧客が居ないのにアプライアンスを作りたいと思っているわけではないので。

ここ3ヶ月間は何度も米国へ出向いて、会社設立準備の他に平行して、顧客とコンタクトを続けていました。
現地のメンバーにうまくフォローされてコミュニティから歓迎を受けました。
本当にありがたいことです。
私は英語が得意ではありませんので、助かりました。

米国子会社の強みであるストレージ技術を活用していく


この辺りは、おおよそ「ソフト担当が日本」で「ハード担当が米国」となっていますが、日本から米国に技術者を派遣してハード対応のためのソフト要員として仕事をします。
米国子会社の強みは実はストレージ技術です。
現地法人のCEOは、元々金融系企業での経験が豊富で、その分野含めストレージについて幅広く熟知しています。
Wakame-VDCのブロックストレージにZFSを採用したのも彼の影響が大きいのです。

彼はストレージアプライアンスが世の中に多く出回っている事は当然良く知っていますし、 だからこそ我々が何をすれば良いのかも分かっています。
元々の日本の強みであるクラウドコンピューティング基盤となるミドルウェアの開発力と、ハードウェア構成が重要なストレージ技術の強みがうまく噛み合います。
このWakame-VDCの未来をワクワクした気持ちで描いているところです。

インターナショナルを意識したワークスタイルへの変化を促したい


ワークスタイルと言う観点では、日本側も社内の共通言語が英語になった点が大きいかもしれません。
元々オープンソースプロダクトを作っている間もソースコードのコメントは英語で書くなど、ある程度意識を持つようにはしてきましたが、今ではバグトラッキングなど米国との共有を図る必要がありそうなものは英語で記述されています。
しかし、実は弊社には正しい英語を話せる人はいません。
伝える気持ちを持って文章を書くという基本はどの言語も同じなのではと考えています。

また、オフィスの時差が10時間ほどあります。
うまく使えば、24時間の有人監視・対応も可能になります。
営業時間の始まりと終わりに少しオーバーラップする時間が作れるので、そこでコミュニケーションができる。
Webカメラと壁掛けテレビを使って互いに接続し「窓」のようにしてオフィスを繋ぎます。

これからはこうした仕事の仕方が当たり前になっていくのではないか、と思っています。
オープンソースプロダクトを扱う以上は、本来世界が相手であるはずです。
世界のどこからでも万人が参加できなければなりません。
こうした動きは日本にとっても大切なノウハウになるのではないでしょうか。
日本は優秀な国で、優れたマーケットですが、世界の一部でしかないのも事実です。

楽しく仕事をするための環境を提供したい


コスト面では、米国現地の生活は東京と比較すると非常に低いのも魅力です。
特に土地代が非常に安く、事務所費も大変ローコストなのに、ゆったり広く利用できます。
ただし、ネットワークの費用だけは日本が遙かに安いですね。

また、今回ドミトリーとして、ベッドルーム、バス・トイレが3つずつ備わっているタイプ(リビングと キッチンだけが共用)の大きな家を用意しました。
東京のワンルームより遙かに大きく、住み心地が非常に良いです。

弊社メンバーは、希望をすれば米国でのびのびと仕事をすることができる。
これは福利厚生としても良いオプションではないか、と思っています。

電力消費量削減を実現したい


今年は地震の影響もあり、日本では電力消費量の削減と言う課題が大きく掲げられています。
米国事務所へ社内サーバを移設したり、メンバーが米国で稼働したりすることによるPC、光熱費の削減が見込めます。
この辺りを意識して夏の前にオープンすることを目標に動きました。

まだ始まったばかりですが、今後もこうした取り組みの手を緩めることはありません。
近々Wakame-VDCの新しいバージョンもリリースをします。
今後も頑張っていきますので、どうぞよろしくお願いします。 ]]>
クラウドごった煮会(CloudMix)でWakame-vdcの発表をいたしましたので、簡単なまとめを。 http://blog.livedoor.jp/sparklegate/archives/50698310.html 気分的に久しぶりの発表。最近のクラウド動向の一部と言うことでWakame ProjectとWakame-vdcについてお話させていただきました。簡単にまとめます。Wakame-vdcはIaaSを構築するためのオープンソースソフトウェアです。Wakame Projectには、Wakame-vdcの他、Wakame-os, Wakame... sparklegate 2010年12月11日T18:24:51+09:00 Wakame 最近のクラウド動向の一部と言うことでWakame ProjectとWakame-vdcについてお話させていただきました。

簡単にまとめます。
  1. Wakame-vdcはIaaSを構築するためのオープンソースソフトウェアです。
  2. Wakame Projectには、Wakame-vdcの他、Wakame-os, Wakame-fuelが含まれています。
  3. Wakame Software Foundationによって運営されています。
  4. Wakame Projectは、世界中のデータセンターを一つのコンピュータにすると言うビジョンの元、それに必要なソフトウェアを開発しています。
  5. Wakame-vdcは、ハイブリッドクラウドを構築する足がかりとしてご活用いただくことを想定しています。
  6. リソースが大量に必要な部分は、AWSとも連携できるようにしていきます。
]]>
Wakame-vdcのリリースと今後の方針について http://blog.livedoor.jp/sparklegate/archives/50689538.html Wakame-vdcのリリース詳細 先月末(2010年10月29日)にWakameTech#3を開催して、ここでWakame-osの話と、ベースとなるWakame-vdcのデモをお披露目しました。 link: Wakame Projectのページ Wakame-vdcの意義 この辺なかなかご理解いただけないので、補足説明をしておきます。 Wakam... sparklegate 2010年11月23日T20:16:10+09:00 事業内容に関するもの Wakame-vdcのリリース詳細

先月末(2010年10月29日)にWakameTech#3を開催して、ここでWakame-osの話と、ベースとなるWakame-vdcのデモをお披露目しました。


[埋込みオブジェクト:http://www.youtube.com/v/fQfGBbYPaDE&feature=youtube_gdata_player]
link: Wakame Projectのページ

Wakame-vdcの意義

この辺なかなかご理解いただけないので、補足説明をしておきます。
Wakame-vdcのようなマシンリソースの管理システムは他にも存在します。 EucalyptusやOpenStack、CloudStackなどがそうです。 中には僕たちがこうしたソフトウェアを構築している事に対し、なぜ既存のものがあるのにそれを使わないのか、グローバルに展開しているソフトウェアに参画する方が良いのではないかなどご意見をくださる方もいらっしゃいました。
しかし、実際に僕たちがやりたいのはこの上のレイヤなのです。 この上のレイヤには、Wakame-osや、かつてのWakame-fuelがあります。 これが実現できると、今言われているWeb系システムの管理が大きく変化し、確実に便利になるのです。
実現するにあたって、一部Wakame-vdcのレイヤで対応しなければならない機能がどうしても出てきます。 だからこそ、その部分を誰かに頼っていてはいけないと思うのです。 実用性を証明し、それを他のクラウド事業者にご理解いただきたい。 そう考えています。

プロジェクトの再整理をした

2010/4にWakame-fuelをリリースして、外部状況が大きく変化する中、私がここ数年間の流れとして一番信じているのが「AWSのような大型データセンターと、企業特化型のデータセンターが連携・補完しあってエンタープライズサービスを形作る」と言うもの。 その流れの中で、足りないのは「企業特化型のデータセンターの基盤ソフトウェア」と、「連携・補完しあうための仕組み」なんだと思っています。この辺りはすでに結構色々な方が指摘している流れではないでしょうか。
そこまで腹をくくって、連携や補完について技術動向など踏まえて方向性をまとめまして、それをWakame-osより上の層と定義して着手することにしたのです。
しかし、実際連携と言う橋を掛けるには、出発点と到着点の2つが整備されなければ意味が無いわけです。 僕たちは出発点をWakame-vdcに託し企業内でご利用いただきながら、到着点としてAWSなどの大型データセンターサービスを見据えて行こうと、現時点ではそう考えています。

僕たちは2009/11頃からWakame-vdcの開発に着手することになりますが、その前にもWakame-vdcではなく上のレイヤへ進むかという検討と議論はありました。当時はAWS一択に近い状況で、プラットフォームとして決め込むにはやや絞りすぎている感は否めず、それで基盤技術となりそうなEucalyptusに注目するようにはなったのですが、コードを読んでみるとどうも方向性が違うと感じました。
僕たちが欲しかったのは、「上の層」の要求に対し変化できる「アジリティ」だったので、AWS互換は大げさでしたし、アーキテクチャや開発体制などがそれに応えられないと思いました。 色々調べましたが、案外シンプルで良さそうなものが見当たらず、結局作ることにしました。 仕組みはWakame-fuelとほぼ同じRuby+AMQPで行けると踏んで、検証コードなどいくつか試して実際の開発に乗り出します。 そして2010/2に動き始め某iDCの環境にて検証可能になり、色々あって2010/4にひっそり公開しました。

シンプルな基盤としてスタートし、実際にWakame-fuelの検討に入り流れの中で、一度根本的に見直しして、当初掲げていた設計思想に立ち返ってもう一度整理し直しました。 そこで出て来たのが、Wakame-osの概念です。
その検討中にも色々状況も変わり、Wakame Projectそのものを再度捉え直さねばならないタイミングが来ましたが、これも結局「上の層」がますます大切になったと言う結論です。 シンプルな基盤だったWakame-vdcも、色々な方々とお話しながらある一定の機能は必要とされてきたので、大きく機能拡張して2010年11月19日リリースの今に至ります。

これからは、Wakame-vdcの機能拡張と、いよいよ「上の層」を攻めて行きます。ご期待ください。

]]>
Wakame-osのリリースとその詳細 http://blog.livedoor.jp/sparklegate/archives/50675062.html 今回、Wakame-osなる物をリリースしました。これはニーズから見た世界ではなく、日頃感じていることをまとめて形にする流れで生まれたプロダクトです。require 'wakame' process = WakameOS::Process.setup(:credential => {:user => 'your_name'}) process.fork { print "... sparklegate 2010年09月01日T23:46:28+09:00 事業内容に関するもの Wakame-osなる物をリリースしました。
これはニーズから見た世界ではなく、日頃感じていることをまとめて形にする流れで生まれたプロダクトです。
require 'wakame'
process = WakameOS::Process.setup(:credential => {:user => 'your_name'})
process.fork {
 print "Running code on the remote!\n"
}
少し分かりづらいかも知れませんが、端的に言うと上記コードが動くものです。
特筆しなければならないのは、forkに付与されたblockが、新たに用意されたインスタンスの上で実行される、と言う点です。
このように、インスタンスの管理を、LinuxなどのOSが管理するプロセスのそれに近づけてみました。
ただし、この管理レイヤはいわゆる単体のマシン上で動作するOSを越えて動作するレイヤですので、僕たちは勝手にメタOSと呼んでいます。

Googleクラウドの核心 Googleクラウドの核心
著者:ルイス・アンドレ・バロッソ、ウルス・ヘルツル
日経BP社(2010年08月05日)
販売元:Amazon.co.jp
クチコミを見る
上記書籍の原文(英語)では、このメタOSが動作するような環境を、Cluster Level Infrastructureと呼んでいて、Wakame-osはまさにこれのためのOSと思って作っています。

Wakame-osには大きく3つの特徴があります。

(1) 従来のプログラミングテクニックのまま、CPU資源のとらえ方に変化をもたらすことができる

従来のforkは同一OS内にプロセスが起動するものでしたが、今回のforkはOSを越えて、サーバとしてプロセスが起動するものです。
前者がやればやるほどCPU資源が分割されていくのに対し、後者はCPU資源が増設されていくように見えます。

まだオモチャのようなものですが、実態はforkによってサーバに処理を動的分散させると言うものです。
モンテカルロ法による円周率の計算などは、この仕組みで簡単に書けるようになります。
円周率の計算はHadoopの処理例にもなっていたりするのですが、インフラを用意し、アルゴリズムを変更してまでして実行する必要がありません。
単純にforkすれば良いので、バッチ処理などでも対象となるデータを単純に分割して並列処理させることができます。
MapReduceという仕組みにどう合せるかを考えるよりシンプルだと思いますし、実質そのレベルでバッチ処理が高速化したいと考えるケースの方が多いのではないかな、と思っています。

(2) 従来の管理方法でクラウドにアクセスできる

システム管理者はキーボードをマウスに持ち替えたくて仕方がないのではありません。
psコマンドやkillコマンドなど、慣れ親しんだCLIベースの操作を失わないことと、自分の仕事を手早く片付けるためのスクリプトが書ければ良いのです。
僕が従来からGUIはさほど重要ではないと思っている理由でもあります。
Wakame-osにはこれから機能を補っていきますが、ps/kill相当のコマンドが提供できます。
プロセスもそう管理したように、サーバも同じ手法で管理します。

実際現在のLinuxサーバ1台には100個ほどプロセスが起動しています。
同じ文脈が提供できれば、100サーバも管理できると踏んでいます。

(3) 設定でハイブリッドクラウドとして機能させることができる

この単純な理屈はAWSの他にも、AWSほどの機能を持たない異なるクラウド間でも共有しあえる物です。
forkする際には論理名を与えることができるので、論理名に紐尽くサーバの設定ファイルを記述しておくだけで、その処理は適宜任意のクラウド上で動作させることができるようになります。

例えばAWSにはHPC用のサーバがありますし、他のクラウドだとディスクI/Oが良いなど、価格面も含め個性があります。
使うサーバを設定ファイルとして別に記述できれば、高い柔軟性の確保と、動いているプログラムに与える影響を最小限にできます。

今のところはそんな狙いを持ったものです。
開発者募集中です。 ]]>
献本していただきました。「よくわかるAmazon EC2/S3入門」 http://blog.livedoor.jp/sparklegate/archives/50675060.html よくわかるAmazonEC2/S3入門 ―AmazonWebServicesクラウド活用と実践 (Software Design plusシリーズ)著者:藤崎 正範技術評論社(2010年06月11日)販売元:Amazon.co.jpクチコミを見るかなり前に献本いただいたのですが、読む時間が取れなかったので今更かもしれないと思いつつも... sparklegate 2010年09月01日T23:32:52+09:00 書籍/DVDレビュー よくわかるAmazonEC2/S3入門 ―AmazonWebServicesクラウド活用と実践 (Software Design plusシリーズ) よくわかるAmazonEC2/S3入門 ―AmazonWebServicesクラウド活用と実践 (Software Design plusシリーズ)
著者:藤崎 正範
技術評論社(2010年06月11日)
販売元:Amazon.co.jp
クチコミを見る

かなり前に献本いただいたのですが、読む時間が取れなかったので今更かもしれないと思いつつもレビューします。

クラウドという単語は最近少しずつ理解されつつあって、その定義について議論になることは少なくなりましたが、 そこをさらに一歩押し進めて、きちんと「実践して感じてみることができる入門書」だと感じました。
その分野を試すに当たって、良い入門書に出会うことができるかどうかは技術者にとって大きなテーマだと思います。

本書はその中でもいわゆるガイドとして最適な構成になっています。内容は詳細で、まさに入り口から運用まで手広く書かれていますので、あとはクレジットカードだけ準備していただければ今スグにでも試してみることができるのではないでしょうか。
途中に楽しいマンガも入っていて、読み手に深呼吸を与えてくれる点も見逃せません。

AWSはもはや「やったこと無いんですよね」と言えなくなってきています。
良い機会ですから、ぜひクラウドの世界に飛び込んでみてはいかがでしょうか。 ]]>
[Wakame] AWSのユーザグループ会でLightning Talkして来た。スライドも少し修正して公開します。 http://blog.livedoor.jp/sparklegate/archives/50649865.html 無謀だった。よく考えたら5分で2トピックだものね。片方に注力すべきだった。 Wakameのアップデート 簡単にWakameの説明と、実績の情報しかなかったのですが、東芝様でWakameが使われている件に関しては、僕が考えていたよりも大きな反響があることを初めて実感できました... sparklegate 2010年04月07日T14:52:03+09:00 Wakame 無謀だった。よく考えたら5分で2トピックだものね。片方に注力すべきだった。

Wakameのアップデート

簡単にWakameの説明と、実績の情報しかなかったのですが、東芝様でWakameが使われている件に関しては、僕が考えていたよりも大きな反響があることを初めて実感できました。次はプロダクトについてのアップデートが話せるようにしたいです。

Amazon VPCをやってみた

これも密かに実績のある話しなんですが、詳細はお伝えできないので、VPCとしての一般論を発表してみました。 TwitterのTLでは色々突っ込みがあり、議論を呼び、プレゼンして良かったなと思っています。 VPCの問題点とか言うところで5分タイムアップとなり終了。 続きは懇親会で…と言うことになり、むしろ2度も発表させていただく流れになりまして、不手際の結果であるくせに厚かましくてすみません。

僕たちはもっとコンピューティングの未来を語った方が良い

色々お話させていただきましたが、ここ最近の結論はAPIの有無なんですよね。ホントに。その話しもそうなんですが、個人的にクラウドコンピューティングの先はこうなる!とか勝手に色々思っているので、技術者同士で一度大風呂敷を広げる会をやってみたいなと考えています。きっと世の中の技術者みんなが、ある程度のコンセンサスを持つと、世界は大きく変わると思うのです。

経営者や営業の方からは「技術者っていつも目先の面白いものに飛びついているだけだ」と見られることもしばしば。人間力は否定しませんが、技術こそが世界を動かす原動力でもあります。僕たちはもっと自信をもって未来を語って良い、そう思うのです。

賛同者はTwitter @sparklegateまでご連絡ください。

当日のスライド

]]>
2010上期針説明、自分たちのアイデンティティは何かを考える http://blog.livedoor.jp/sparklegate/archives/50647147.html 久しぶりにブログを書く。弊社2月末締めで、3月から5期目に入りました。1ヶ月遅れてやっと2010年の上期方針説明を行えた。平たく言うと、あくしゅはOSを作るんだ、というビジョンを出した。我々はもっとコンピューティングという姿に立ち返り、ネットワーク型アプリケーショ... sparklegate 2010年03月29日T19:32:57+09:00 ネタ 久しぶりにブログを書く。
弊社2月末締めで、3月から5期目に入りました。

1ヶ月遅れてやっと2010年の上期方針説明を行えた。

平たく言うと、あくしゅはOSを作るんだ、というビジョンを出した。
我々はもっとコンピューティングという姿に立ち返り、ネットワーク型アプリケーションという物が記述できる仕掛けを提供しなければならない。
それには今のAmazon EC2の仕組みがぴったりかと言うとそうでもない。
途中までEC2などは便利に使っていくとは思うのだけれども、これは最終的には自分たちで全てを取りそろえないことには、実現できない仕組みなのです。

正直、僕だけがワクワクしていても仕方ないので、これをメンバ全員と共有して、みんなで未来を作って行けたらと思っているところ。

メンバが2名増えました。

嬉しいことに、新規メンバが2名増えた。
以前はアルバイト抜きの正社員で7名だったので、それが9名になった。
特に1名は社会人になってからずっとお世話になっていた方で、ご自身から是非とご提案いただけたりするなど、願ってもいないことです。

今体制を組み直し、ちょっと大変だけれども、今年の目標に向かってどんどん進んで行けたらと思っている。
皆様今年も宜しくお願いいたします!

]]>
[Wakame] IaaSを本気で作る会のスライド(内部構造について)がアップされました http://blog.livedoor.jp/sparklegate/archives/50641470.html 以前、IaaSを本気で作る会を開催した際に、Wakame 1.0(当時)の内部構造について色々発表して下さった登尾さんのスライドがアップされています。直前に僕が発表した内容を踏まえて作ってくださいましたので、分かりづらい単語についてはそちらを一度ご覧ください。色々議論し... sparklegate 2010年03月12日T14:30:37+09:00 Wakame 以前、IaaSを本気で作る会を開催した際に、Wakame 1.0(当時)の内部構造について色々発表して下さった登尾さんのスライドがアップされています
直前に僕が発表した内容を踏まえて作ってくださいましたので、分かりづらい単語についてはそちらを一度ご覧ください。

色々議論して作った結果だけれど、こうして見てみると面白い仕組みになったなー、とか思います。

]]>
[Wakame] IaaSを本気で作る会のスライドをアップしました! http://blog.livedoor.jp/sparklegate/archives/50574156.html 当日発表の資料(1/30の出来事) その日にお集まりいただいた方々は皆様やはりこの手の動きに注目なさっている方ばかりで、懇親会も相当濃い感じでした。仮想化と言ってもサーバの仮想化ばかりに注目されていますが、その部分は比較的簡単なんです。実際はネットワークの仮想化... sparklegate 2010年02月24日T18:54:44+09:00 Wakame 当日発表の資料(1/30の出来事)

その日にお集まりいただいた方々は皆様やはりこの手の動きに注目なさっている方ばかりで、懇親会も相当濃い感じでした。仮想化と言ってもサーバの仮想化ばかりに注目されていますが、その部分は比較的簡単なんです。実際はネットワークの仮想化が大きな課題になります。そして良い解決策が見当たらない部分なのです。

デモンストレーションはわかりにくい感じになりましたが、ネットワークの問題を無視すればIaaSは簡単に作れてしまいます。ちゃんとインスタンスも起動してきましたし、SSHでログインすることもできる。Web APIだって付いていて動いているわけです。dcmgr-gui-instance

今後の課題は、ひたすらネットワークの課題解決を進めることと、管理ツールの充実を図ることでしょう。リリースは最低限デモでお見せしたレベルのものが動くところまで整えて出したいと思っています。

]]>
「WakameTech #1 そろそろ本気でIaaS型クラウドを作る会」 やります。 http://blog.livedoor.jp/sparklegate/archives/50567458.html IaaS型クラウドを本気で自作しよう!待っていてもなかなか日本のデータセンタからAmazon EC2のようなIaaS型クラウドが出てこないので、そろそろ作ってみることにしました。Eucalyptusを使うという選択肢で頑張っている方がいるのは知っているのですが、Amazon EC2と互換する... sparklegate 2010年01月06日T20:22:58+09:00 Wakame IaaS型クラウドを本気で自作しよう!待っていてもなかなか日本のデータセンタからAmazon EC2のようなIaaS型クラウドが出てこないので、そろそろ作ってみることにしました。
Eucalyptusを使うという選択肢で頑張っている方がいるのは知っているのですが、Amazon EC2と互換する意味があまりない(ツールやAPIのナレッジは貴重だとは思います)ので、 スクラッチから作ることにしました。

これら試行錯誤の結果を他の技術者と共有したい、そんな思いで立ち上げたカジュアル勉強会です。
ぜひご参加くださいませ!

WakameTech #1 - そろそろ本気でIaaS型クラウドを作る会 ]]>
管理機能とかもう作りたくない時はGoogle Spreadsheetsに逃げる http://blog.livedoor.jp/sparklegate/archives/50565152.html 応募フォームを作ったりアンケートを取ったり、その度にアプリケーションを開発するのは面倒なので、Google Spreadsheetsを使うことにした。しかしどうもGoogle Formとか言うのは使いづらいし、もうちょっと何とかならんかなーと思ったので試作してみた。こんな感じ↑管理者... sparklegate 2009年12月12日T23:14:20+09:00 デザイン 応募フォームを作ったりアンケートを取ったり、その度にアプリケーションを開発するのは面倒なので、Google Spreadsheetsを使うことにした。
しかしどうもGoogle Formとか言うのは使いづらいし、もうちょっと何とかならんかなーと思ったので試作してみた。

こんな感じ

[画像:gss_00]
↑管理者は空っぽのSheetを開いてじっと見ています。

[画像:gss_01]
↑利用者は管理者が設置したサイト上にあるこんなhtmlに適当な値を入れてSubmitします。Submit後、利用者は「ありがとうございました」ページを見て立ち去ることでしょう。

[画像:gss_02]
↑管理者は、その値がシートにスポンと入るのを目撃します。自動更新されるみたいです。良くできてる…。

こんなのを作ろうと言うわけです。
調べていたらGoogle SpreadsheetsをActiveResourceのように扱う素敵なコードを発見したので利用することにしました。コードもまとまっていて、使いやすさも良かったので、即決。

やることは3ステップ。

  1. Google Spreadsheetsに格納先シートを用意する
  2. htmlを用意する
  3. Controller(Rails)を用意したりする

Google Spreadsheetsに格納先シートを用意する

これは簡単。Spreadsheetドキュメントを作成して、Sheetを使うだけ。Excelを知っている人なら説明なしにやれるでしょう。1行目に欲しいデータセットのカラム名を列挙していきます。
今回は hoge, fuga, moke, created と書いてみました。
ちなみに、Web API経由だとアンダースコアは指定できないようなので、英数字だけでカラム名を付けると良いと思います。

htmlを用意する

app/views/gss/form_sample.erb

<html>
 <head>
 <title>Sample Form</title>
 </head>
 <body>
 <form method="post" action="append">
  <%= token_tag %>
  <input type="hidden" name="target_sheet" value="sample" /><!-- シートの指定 -->
  <input type="hidden" name="thanks_page" value="thanks_sample" /><!-- 画面遷移先 -->
  <!-- gsx_* はカラム名に対応する -->
  <input type="text" name="gsx_hoge" value="" />
  <input type="radio" name="gsx_fuga" value="A" />
  <input type="radio" name="gsx_fuga" value="B" />
  <select name="gsx_moke">
  <option value="OPT1">OPT1</option>
  <option value="OPT2">OPT2</option>
  <option value="OPT3">OPT3</option>
  </select>
  <input type="hidden" name="gsx_created" value="auto" /><!-- オマケ機能(後述) -->
  <input type="submit" name="go" value="submit" />
 </form>
 </body>
</html>

Controller(Rails)を用意したりする

app/controller/GssController.rb

require 'ares_google_spreadsheets'
class GssController < ApplicationController
 include Environment
 def method_missing(method)
  if(method.to_s.match(/(form_.*)|(thanks_.*)/))
   filename = params[:controller]+'/'+method.to_s
   render :file => filename, :use_full_path => true
  else
   raise NoMethodError.new(method.to_s)
  end
 end
 def append
  GoogleSpreadsheets::Base.user   = Settings.credential[:user]
  GoogleSpreadsheets::Base.password = Settings.credential[:password]
  records = {}
  params.each { |key, value|
   name = key.to_s.match(/gsx_(.*)/)
   if name
    method = Settings.auto_insertion[name[1]]
    value = method.call(value) if method
    records[key] = value
   end
  }
  target_sheet_key = params[:target_sheet]
  raise MissingParameterError.new('Please set \'target_sheet\' value in your html.') unless target_sheet_key
  target_sheet = Settings.target_sheet[target_sheet_key]
  raise TargetSheetNotFoundError.new('Please check Environment.target_sheet values.') unless target_sheet
  raise TargetSheetNotFoundError.new('Please check document_name and sheet_name in Environment.target_sheet.') unless
   (target_sheet.has_key?(:document_name) || target_sheer.has_key?(:document_id)) &&
   (target_sheet.has_key?(:sheet_name)  || target_sheet.has_key?(:sheet_id))
  doc_id = target_sheet[:document_id]
  if !doc_id
   docs = GoogleSpreadsheets::Spreadsheet.find(:all) || []
   docs.each { |doc|
    if(doc.title==target_sheet[:document_name])
     doc_id = doc.id
     break
    end
   }
   raise DocumentNotFoundError.new("document_name '#{target_sheet[:document_name]}' is not available.") unless doc_id
  end
  sheet_id = target_sheet[:sheet_id]
  if !sheet_id
   sheets = GoogleSpreadsheets::Worksheet.find(:all, :params => {
    :document_id => doc_id,
    :visibility => 'private',
    :projection => 'full'
   }) || []
   sheets.each { |sheet|
    if(sheet.title==target_sheet[:sheet_name])
     sheet_id = sheet.id
     break
    end
   }
   raise SheetNotFoundError.new("sheet_name '#{target_sheet[:document_name]}' is not available.") unless sheet_id
  end
  new_row = GoogleSpreadsheets::List.new({
   :document_id => doc_id,
   :worksheet_id => sheet_id,
   :visibility  => 'private',
   :projection  => 'full'
  }.merge(records))
  new_row.save
  redirect_to :action => (params[:thanks_page] || 'thanks_default').split(/\./)[0]
 end
 class MissingParameterError < StandardError; end
 class TargetSheetNotFoundError < StandardError; end
 class DocumentNotFoundError < StandardError; end
end

config/environment.rb (設定ファイルなので、場所はenvironment.rbじゃなくても良いです)

require 'time'
module Environment
 class Settings
  def self.credential
   {
    :user   => 'your_account@gmail.com',
    :password => 'secret_password',
   }
  end
# formのtarget_sheetに指定されるもので、シートを特定する設定を書きます def self.target_sheet { 'sample' => {
# 名前で指定する場合は以下を指定 :document_name => 'Sample Sheet', :sheet_name => 'Sheet1', ## もしIDが分かっている場合は以下を指定
## 検索クエリを出さない分、高速です # :document_id => '...', # :sheet_id => '...', }, } end def self.auto_insertion { 'created' => Proc.new { Time.now.rfc2822 }, } end end end

オマケ機能の説明

htmlでgfx_createdなどカラム名が指定されると、それに対応するProcが起動して値を自動的に上書きする機能が付いています。
例えば記録時間とかそのタイミングで決まるものなんかはここに定義しておけば良いかも。

あと、viewの命名規則があって、form_*.erbとthanks_*.erbは用意さえすればGssControllerが勝手に表示します。

欠点

サーバサイドで入力チェックを全くやっていないので、その辺機能不足です。値はGoogle Spreadsheetsにそのまま渡されるので、文字の最大長はそこで決まります。その他セキュアじゃないとか何かありそうなので、本気で使おうと思っている方は十分な検証をお願いします。

]]>
「フリー」を読めばWakameがフリーな理由もわかるはず http://blog.livedoor.jp/sparklegate/archives/50563804.html Wakameも「フリー」です Wakameの説明をしているとたまに「Wakameを無料で配布してしまって、御社はどこで儲けるんですか?」という質問をいただくのですが、この書籍「フリー」をご覧いただくとわかるかもしれません。大体この本に書かれているモデルはうちの会社も似た感じ... sparklegate 2009年12月01日T20:02:45+09:00 書籍/DVDレビュー Wakameも「フリー」です

Wakameの説明をしているとたまに「Wakameを無料で配布してしまって、御社はどこで儲けるんですか?」という質問をいただくのですが、この書籍「フリー」をご覧いただくとわかるかもしれません。大体この本に書かれているモデルはうちの会社も似た感じなんです。

[フレーム]

今年4月にリリースして以来、Wakameは各方面より色々な反響をいただきまして、おかげさまで年度内は殆どがWakame関連のお仕事で埋まりました。
リリース前には社内で何でもフリーにして良いのかと言う議論もあったのですが、僕個人的としてはプロダクトとしてフリーでやっていくことに疑問はありませんでした。 その辺り勘ではなく論理的にきちっと書かれた本が「フリー」なんだと思います。

Wakameは、全社員たった7名のうち、もっと言うとその内数名のプログラマによって生み出されているプロダクトです。そんな弱小集団が取れる戦略はフリーしかないってのも事実なんですよね。

]]>
クラウドを実現する技術とか言われたら期待しちゃいます http://blog.livedoor.jp/sparklegate/archives/50560854.html よーし、これでクラウドを実現しちゃうぞ〜!って本ではない 勝手に期待して読んだ方が悪いのかもしれないけれど、タイトルを見たら誤解しちゃう。クラウドというキーワードの周辺で目立った要素技術をピックアップしている紹介本。酷評かもしれないけど、この本に書かれてい... sparklegate 2009年11月25日T23:32:36+09:00 書籍/DVDレビュー よーし、これでクラウドを実現しちゃうぞ〜!って本ではない

勝手に期待して読んだ方が悪いのかもしれないけれど、タイトルを見たら誤解しちゃう。クラウドというキーワードの周辺で目立った要素技術をピックアップしている紹介本。
酷評かもしれないけど、この本に書かれているのは要素技術としても本当に導入だけ。実現できるとかありえない。肝とも言えるネットワーク周辺の話が丸々抜けているのが痛い。

でも良いところもあります。プロセッサの仮想化については良くまとまっていますので、ここらを一度振り返ってまとめておきたい人にはお勧め。

[フレーム]

あと、どうしても技術用語が5年くらい古いのが気になります。

]]>
これさえあればAmazon EC2/S3の活用で困らない!どんな人にもぴったりな本 http://blog.livedoor.jp/sparklegate/archives/50559894.html たまに「Amazon EC2/S3って実際運用してみてどうなの?」と問われることがあります。これからはそんな質問も減る!そう感じさせる本に出会いました。最近出たAmazon EC2/S3関連の本の中では最も「運用」についてしっかり書かれている本です。 入門から実運用まで、これほど... sparklegate 2009年11月18日T20:13:18+09:00 たまに「Amazon EC2/S3って実際運用してみてどうなの?」と問われることがあります。
これからはそんな質問も減る!そう感じさせる本に出会いました。
[フレーム]
最近出たAmazon EC2/S3関連の本の中では最も「運用」についてしっかり書かれている本です。
入門から実運用まで、これほど幅広く書かれているにもかかわらず、構成も文章もすっきりまとまっていて無駄がないのも素晴らしいところ。
実際にEC2/S3で動くシステムを作ってトラブルを恐れずに切り込んでいった人の生々しさがエッセンスとして随所に散りばめられており、知っている人が読んでも楽しい。
もし近場のお客様などでEC2/S3に興味を持っていそうな方がいたら、まず迷わずこの本を教えてあげて下さい。
聞きたいこと知りたいことが漏れなく詰まった一冊です。
]]>
時にはもっと気合いを入れてTwitterで発言することも大切だから、ブログを併用して解決することにした。 http://blog.livedoor.jp/sparklegate/archives/50559544.html Twitterの危険性 お会いしたことはないのだけれど、小野さんと言う方が「Twitterは気軽にOutput可能にしてしまうため、そこから先を深堀する前に終わることが多いのでは」と言うようなエントリを書かれていた。 ふむふむなるほど、と思ったので僕もエントリしてみる。 僕も最... sparklegate 2009年11月15日T21:59:01+09:00 ワークスタイル Twitterの危険性

お会いしたことはないのだけれど、小野さんと言う方が「Twitterは気軽にOutput可能にしてしまうため、そこから先を深堀する前に終わることが多いのでは」と言うようなエントリを書かれていた。 ふむふむなるほど、と思ったので僕もエントリしてみる。

僕も最初はアカウントを取って放置しておいたTwitterだったけれど、最近少しずつ使い始めていて、手軽さが気に入っている。 それと同時に、ブログのエントリが減ったのも事実だ。 そろそろ気合いを入れるべき発言をきちんと見極めないとなー、と思う。

気合いを入れて140文字で発言するためにBlogを使う

最近はlivedoor Blogに記事を書いたらTwitterに発言する、という機能がついている。 これを活用するのがよさそうだ。 140文字で発言されるのはブログのタイトルだ。 あたかもTwitterで発言したようにして、そのつぶやきを補ったり深堀したりするためにこの機能が使えそう。

]]>
スパコンの研究費は削減せず、むしろ防衛費に振り替えるってのはダメ? http://blog.livedoor.jp/sparklegate/archives/50559515.html なんだか事業仕分け(笑)が話題になって、スパコン切られそうだとかネットでニュースになっていますね。 あまり軍備としてのコンピュータについて触れている人がいないのでエントリを残してみます。スパコンは気象予報などのシミュレーション分野では役に立っているのは有名で... sparklegate 2009年11月15日T16:51:56+09:00 ネタ なんだか事業仕分け(笑)が話題になって、スパコン切られそうだとかネットでニュースになっていますね。 あまり軍備としてのコンピュータについて触れている人がいないのでエントリを残してみます。

スパコンは気象予報などのシミュレーション分野では役に立っているのは有名です。 それ以外にも暗号技術の世界では解読に使えるコンピューティング能力の向上が非常に脅威ですから情報戦時代には必要だと思います。 そう言う意味で僕はスパコン開発は手を止めるべきではないと思う。 防衛省に移してでもやるべきだと考えます。

海外から買ってこい!日の丸印に意味は無い!CPUから設計している時代じゃないんだよ!なんて言っている人もいるけれど、上記理由で輸出しないって言われたらおしまいじゃないのかな。
調達が不明瞭だとか言うならならそこを正せばいいし、目標を達成できるとは思わないという意見もあるが、それは削減理由ではなく、むしろ大いにやるべき理由ではないか。 自分で稼いでその金でやれ、と言う意見もあって民間ではごもっともなんだけれど、僕は防衛費的な意味合いを考えると稼ぐためにやる研究ではないと思う。

]]>
Wakame 1.0開発者の募集を締め切りました。 http://blog.livedoor.jp/sparklegate/archives/50559451.html Wakame 1.0開発者へのご応募ありがとうございましたおかげさまで2名のご協力者を得て、現在開発スピードが加速しております。WakameはこれまでEC2上でスケールアウトするオートメーションを実現してきましたが、Wakame 1.0ではこの役割を根本的に捉えなおし、EC2はもちろんの... sparklegate 2009年11月14日T22:39:43+09:00 事業内容に関するもの Wakame 1.0開発者へのご応募ありがとうございました

おかげさまで2名のご協力者を得て、現在開発スピードが加速しております。
WakameはこれまでEC2上でスケールアウトするオートメーションを実現してきましたが、Wakame 1.0ではこの役割を根本的に捉えなおし、EC2はもちろんのこと、EC2以外のホスティングサービスでもスケールアウトするように改良中です。

もちろんこれにはデータセンタ側でもやるべきことがあります。
Wakame 1.0ではデータセンタで供給すべきスケールアウトのためのインフラからユーザアプリケーションまで垂直に提供できるようになる予定です。
すべての開発者に、開発時から使えるプログラマブルなデータセンタと、運用を楽にするシステムオートメーションを。
お楽しみに。

]]>
[Wakame]Wakameの開発にご協力くださる方を探しています http://blog.livedoor.jp/sparklegate/archives/50556494.html しかく急募:"Wakame 1.0"開発協力者!株式会社あくしゅでは"Wakame 1.0"の開発者を募集しています! Wakameは次世代データセンターには欠かせないクラウドコントローラとして、今後大幅に機能拡張していきます。 Rubyでミドルウェアを開発してみたいという意欲あふれる方は是非... sparklegate 2009年10月19日T19:07:42+09:00 しかく急募:"Wakame 1.0"開発協力者!

株式会社あくしゅでは"Wakame 1.0"の開発者を募集しています!
Wakameは次世代データセンターには欠かせないクラウドコントローラとして、今後大幅に機能拡張していきます。
Rubyでミドルウェアを開発してみたいという意欲あふれる方は是非お問い合わせください。

しかく仕事内容

  1. "Wakame 1.0"の使用目的を拡大するために、ミドルウェア部分の機能拡張を実施
  2. "Wakame 1.0"を使いやすくするために、GUIの追加開発を実施
  3. "Wakame 1.0"を分かりやすくするために、ドキュメントの整備を実施
上記の内、得意なもの1つ以上をお願いすることになります。

しかく募集要項

  • 下記(A)(B)(C)の知識・技術セットをいずれかお持ちの方
    1. Ruby, 現在のWakame, メッセージング, 並列処理, Xenなどのハイパーバイザの知識
    2. JavaScript, XHTML, Ruby on Rails, http通信(REST), ユーザビリティ, 画面設計の知識
    3. HTML, ドキュメンテーション
  • システムの設計が得意で、オブジェクト指向を理解している方
  • 人とのコミュニケーションが好きな明るい方
  • 期間:2009年11月初旬〜2010年3月下旬

しかく条件

応募期限は10/26(月)までです。
それ以降10/30(金)までに一度仕事内容や関わり方をミーティング形式でご相談させていただきましてその後、弊社基準で判断してからお見積もりをお願いします。

しかく一言

設立3年目の若い会社です。
来年からは「世界のクラウドソリューションを」をテーマに事業展開していく予定です。
そのために今後は弊社で開発している"Wakame"を機能拡張し、より高度なプロダクトへと躍進させていきます。
あなたもぜひ、この新しいチャンスに乗ってみませんか?

しかく連絡先

Twitter: @axsh_co_ltd
E-mail: r_at_axsh_dot_net (_at_と_dot_は適宜文字列を置換してください)


]]>
なんでクラウドのデータは消えてしまうん?←節子...それ、クラウドやない http://blog.livedoor.jp/sparklegate/archives/50555984.html クラウドにデータを預けて大丈夫なのか?という議論がたまにあるけれども、僕はそんな議論をするより、データを預けて大丈夫なものをクラウドと呼べば良いだけなのに、と最近思う。 近頃の「クラウド」という言葉は、技術のコモディティ化が進行していることを良く表した生き... sparklegate 2009年10月14日T22:11:27+09:00 雑談 クラウドにデータを預けて大丈夫なのか?という議論がたまにあるけれども、僕はそんな議論をするより、データを預けて大丈夫なものをクラウドと呼べば良いだけなのに、と最近思う。
近頃の「クラウド」という言葉は、技術のコモディティ化が進行していることを良く表した生きているバズワードであって、コンセンサスが有る部分と無い部分を混在させた状態にあるのは間違いない。
僕がこのエントリで言いたいのはそのコンセンサスの中に「データ消失対策が十分に練られたものをクラウドと呼び、そうじゃないものはクラウドと呼べない/呼ばない」という点を追加できないかなぁと言うこと。

今週ちょうど厄介なニュースが飛び込んできた。

ネット史上最大の惨事のひとつ発生―Microsoft Danger、T-MobileのスマートフォンSidekickのユーザーデータのすべてを失う


悲しい事に、このニュースは「クラウドの弱点」だとしてコンセンサスを形作ってしまうかも知れない。はてブではクラウドというタグが付いたり、クラウドにネガティブなコメントもある。
それはそれで良いんだけれども、細かいがどうも釈然としない点がある。
今回はそれを問題にしてみたい。

T-MobileとMicrosoft Dangerが何重にもバックアップを取っていなかったことについて弁解の余地はない。特にSidekickはローカルの端末にデータを記録せず、すべてをクラウドに保管していたのだからなおさらだ。
ネット史上最大の惨事のひとつ発生―Microsoft Danger、T-MobileのスマートフォンSidekickのユーザーデータのすべてを失う

この引用で問題にしたいのはこのDangerのバックアップの仕組みについてではない。もちろんニュースになるような事件はあってはならないし、擁護するつもりはない。ただ、実際にどのような仕組みがあって、どう言った事情が背景にあるのかも良く分からないので、外から推測で指摘できることはない。

僕がこの場で問題にしたいのはこの記事にサラッと書かれた「ローカルなどクラウド以外のコピーを持っていないことは落ち度である」と暗に指摘している点だ。
はて、本当に「ローカルの端末にデータを記録」することがバックアップの防衛ラインとして重要なのだろうか?この発想こそが旧世代的で、いつまで経ってもクラウドにデータを持って行けない元凶であると思う。
そもそも、データストレージ型のクラウドの中で幾重にも防衛ラインが敷かれていれば、ローカルのバックアップなど本来は必要なくできる。そうするのがストレージとしてのクラウドの役目ではないだろうか。
ローカルにある使い古された故障ロットかもしれないHDDにコピーしてバックアップをした!と得意げに叫ぶ方がバックアップをなめているとしか思えない。RAIDで持てばいい?世代バックアップすればいい?メディアへの書き出しもしている?風化・劣化しないように暗室に保存している?違う違う、それは「クラウドが無かった時代にやらなければならなかった事」なんじゃないの?そう言いたい。

ストレージの標準APIに望むこととして、またこんな変な指摘が出てくる。
利用者側でバックアップをローカルや別のクラウドに持っておくなどの柔軟な操作が(実際にユーザーが行わないとしても)可能になっていることが望まれます。
クラウドストレージの標準APIがストレージ団体「SNIA」から提案される

僕は必要ないと思います。

それより、どのようなバックアップ手法をとっているのかが分かるとか、何か数値的な指標が出せる運用を宣言できていればいいんじゃないでしょうか。SLAみたいに。

]]>
ネットに必要なのは匿名か実名か http://blog.livedoor.jp/sparklegate/archives/50555698.html ネット上でも実名で表現を少なくとも人とのつながりを目的とした利用においては、できる限り実名を明らかにするのが好ましい上記は勝間さんの提案ですが、個人的にはほぼ反対。どんな場面においても匿名にする自由はあって然るべきです。 既存メディアと同等の信頼を得るため... sparklegate 2009年10月12日T16:04:30+09:00 ワークスタイル ネット上でも実名で表現を
少なくとも人とのつながりを目的とした利用においては、できる限り実名を明らかにするのが好ましい

上記は勝間さんの提案ですが、個人的にはほぼ反対。どんな場面においても匿名にする自由はあって然るべきです。
既存メディアと同等の信頼を得るために発信される情報は実名にしろなんて話にはならないでしょう。既存メディアだってうまく匿名を使い分けている。新聞記事にだって社名以外のクレジットが無いものがほとんど。芸名で通す芸能人が宗教にも使われている。実名というのが信頼を得たり失ったりする役に立っていない証左ではないだろうか。何かの影響は有るかも知れないけれども。

僕が実名でやりはじめた理由

それが最初の商品だったから、かな。
独立して仕事を始めましたとか言っても、何か売れるものを持っていたわけでもないし、何もないから名前でも出しておくか、ってただそれだけ。
学生時代も山崎という名前だし、前職でももちろん山崎だし、それなりにその名前で名刺を配ってきたりもしていたわけです。
どこぞの一社員として見られるのが大方とは言え、中には社名ではなく僕の名前を見てくださる方もいらっしゃるのではないか...そんな淡い期待があったに過ぎません。ちっぽけな「山崎泰宏」というタグがどこかに付いていたら良いな、と。

そう言う意味では、名前のユニーク性も大切かも知れない。ググると僕以外の「山崎泰宏」が何名か存在する。匿名というか偽名が許されるのであれば、ネット上では少し文字った名前でやっとけば良かったかなーなんてふと思うことがある。

実名で何か良いことあった?

音信不通だった大学時代の友人がメールをくれた以外、実質的には良いことは無いかも。

]]>
クラウドって何ですか?と聞かれた時の答えを1つ http://blog.livedoor.jp/sparklegate/archives/50555625.html 最近、色々な人から聞かれるので、専門家ではないけれども僕なりの答えを述べておきます。身も蓋もない表現ですが。 クラウドとはネットワークコンピューティングのコモディティ化が進んだことを表す言葉 いきなりごめんなさいだけど、これに尽きると思います。 クラウドって... sparklegate 2009年10月11日T18:28:38+09:00 雑談 最近、色々な人から聞かれるので、専門家ではないけれども僕なりの答えを述べておきます。身も蓋もない表現ですが。


クラウドとはネットワークコンピューティングのコモディティ化が進んだことを表す言葉


いきなりごめんなさいだけど、これに尽きると思います。

クラウドって別に新しい技術ではなく、既存の技術を高度に組み合わせてできたネットワークコンピューティングの体について、そろそろ何か名前付けとかないといちいち面倒だぞ、ってタイミングで出てきた、ズバりピタッとくる「ちょーどいい言葉」なんだろうなと思うんです。

Wakameを世に出してから、色々な方々とお話し合いさせていただきました。
技術的にクラウドを理解しようとする人や、物事の解決へのアプローチ・考え方からクラウドと言う言葉を使う人、ユーザの立場や世の中へのインパクトからクラウドを理解している人、様々な人がクラウドという言葉を使っています。
本当に良くできたバズワードなのです。
今この世の中がどのような技術を使っていて、それらが何を提供しているか何のコンセンサスもないのにクラウドという言葉を便利に使っていて、それなりに意味を通じさせてしまっているわけですね。

元々、"コンピュータ"という言葉そのものも最初は計算する「人」を表していた言葉だそうです。かつての"コンピュータ"は今とは違って、チューリングマシンでありノイマン型であり(おじさんにとっては)IntelでありWindowsでありExcelやWordまで想像させるような言葉ではなかったはず。

これまでも、コンピュータが高度にネットワーク化されたこの現状を、WebサービスだのASPだの色々な言葉が説明しようと試みられたわけだけれど、どこかそれそのものを具体的に言い過ぎている部分と足りていない部分があって、何だかクラウドって言う「間違っていないし、難しくもない抽象的な表現」を引き合いにしたら、それが「現代のコモンセンスで理解できた」と。
そう言う意味で、これを言い出したエリック・シュミット氏は天才を超えた天才だと思う。


クラウドに踊らされるな!昔からあった!我々も主張していた!と言う人々


恥ずかしいから止めた方が良いと思うんだよね...。踊らされるな!って言うと警告めいてはいるけれどもその反面、世間があなたの知識に近づいて来たのを恐れているようにも見えるし、昔からあった!なんて言っても認知されなきゃ無かったのと一緒だろうし、我々も主張していた!って言うと更に悪くて「じゃあ最初からクラウドって言えばいいじゃないか」って話にもなるんじゃないだろうか。

そう言う意味で、やっぱり良くできたバズワードだし、意味が通じるという側面は、ネットワークコンピューティングの複雑な技術がそれなりにコモディティ化した結果なのだと思う。


]]>
社内で下期方針を出しました。 http://blog.livedoor.jp/sparklegate/archives/50555049.html 社内で下期方針をプレゼン 売上伸ばして行こうという話に始まって、そのために何をすべきか、どこ目指すべきか、各々何をすべきかについて述べた。来年のWakameが進むべき道を描いて下期の成長戦略を企画したレベル。いつものことだが、この戦略もある部分では当り、ある部分... sparklegate 2009年10月08日T17:35:57+09:00 事業内容に関するもの 社内で下期方針をプレゼン

売上伸ばして行こうという話に始まって、そのために何をすべきか、どこ目指すべきか、各々何をすべきかについて述べた。来年のWakameが進むべき道を描いて下期の成長戦略を企画したレベル。いつものことだが、この戦略もある部分では当り、ある部分では外れるはず。そうやって当たり外れが見えるだけでもマシだろう。


収益をどう上げるかって言う話も当然難しいんだけれど、お金の使いどころって言うのはもっと難しい。ひとまず、会社がどう維持されるのかについての計画があって、使って良いであろう予算と必要そうな経費とを相談しながら決めている。

何となくではあるが、結構独断で決めちゃったりもしたので、今後はきちんとその計画に沿って進めていかなければならない。


あと最近、資本政策やらベンチャーキャピタルについての本を何度も読んでいるので、「何?IPOしようとか思ってるの?」なんてからかわれているのだけれども実は理由は逆で、どうしてみんなIPOを目指すのだろうかと。それについて理解しようと思ったのがきっかけ。

でも読めば読むほどやらない方が良い気がしてくる。まだきちんと理解できていないのが理由なのだろうが、株というのは未だにどうも気持ち悪い代物で...。

そのうち、やりたい人が出てきた時にその理由が理解できないと困るので、もうちょっと粘って読んでみることにします。

]]>
[Wakame]Wakame 0.5.0リリースしました! http://blog.livedoor.jp/sparklegate/archives/50552984.html Wakame 0.5.0のリリースです。1ヶ月半ぶりなのは、Wakameの実案件が複数同時に進んでいてリソースを集中させることが難しく、そんな僕の采配の悪さのせいで開発が当初ここまでと決めたところまでなかなか進んでいません。申し訳ないです。 新機能:Wakame Masterが吹っ飛ん... sparklegate 2009年09月18日T22:57:32+09:00 Wakame Wakame 0.5.0のリリースです。1ヶ月半ぶりなのは、Wakameの実案件が複数同時に進んでいてリソースを集中させることが難しく、そんな僕の采配の悪さのせいで開発が当初ここまでと決めたところまでなかなか進んでいません。申し訳ないです。



新機能:Wakame Masterが吹っ飛んでも復帰させられるように!


Wakame Masterの状態をDBに持つようにしたことで、途中で吹っ飛んでもDBに書かれたその状態から再開できるようになっています。今まで完全にオンメモリで動いていたので、そこを全面的にDBへシリアライズするよう書き換えられています。(最初からそう作れよって突っ込みはごもっともです...。)



目標:下期はWakameの開発にもっと力を入れたい!


最近、Wakameのロードマップが公表されていない点や、ドキュメントが不足している点を指摘されます。お問い合わせいただきました皆様本当にありがとうございます。

Wakameのあるべき姿として目指している画はあるものの、実績となる実案件も面白いので、ついついその対応で計画を流動的にしてしまっているだけなのです。プロダクトにご注目くださっている方にはとても申し訳ないと思っております。


下期はWakameと言うプロダクト開発にもっと注力していきたいと考えております。一緒にやってみたい方がいらっしゃいましたら、ぜひご連絡ください。
Wakameは「世界のクラウドソリューションへ」という安直なスローガンを掲げ、アホ臭いと言われようともけっこう真顔でそっち方面を目指しています。良いのか悪いのかもわからない。でも楽しい。


ちなみに、人材紹介系のリクルーティングサービスは絶対に使わない方針なので、その辺よろしくお願いします。>テレアポの方

]]>
Amazon S3を共有ファイルシステムとしてマウントするとスケールアウトする時に便利 http://blog.livedoor.jp/sparklegate/archives/50549672.html s3fsは共有ファイルシステムとして使うと超便利 ポイントは、複数のインスタンスからs3fsで同一バケットをマウントし、共有ディスク化できる、というところ。 ファイルアップロードするとローカルディスクに書き出しちゃう典型的なアプリに便利 結構この手のWebシステム... sparklegate 2009年08月21日T23:44:19+09:00 デザイン s3fsは共有ファイルシステムとして使うと超便利

ポイントは、複数のインスタンスからs3fsで同一バケットをマウントし、共有ディスク化できる、というところ。



ファイルアップロードするとローカルディスクに書き出しちゃう典型的なアプリに便利


結構この手のWebシステムは存在する。例えば、CMSのデザイン変更やブログ記事の写真など、アップロードされたファイルをディスクに書き出すような仕組みのWebシステムがあったとしよう。
そのシステムをそのままスケールアウトすると、アクセスを分散させることになって、毎回アップロード先のサーバが変わってしまう
大抵の場合、アップロードされたサーバ上のファイルに書き出してしまうわけで、そのまま使うと各サーバのローカルファイルに保存され、他のサーバから参照できなくなってしまう。



NFS無用


できるだけWebシステムを変更せずに先述の状況を改善しようとすると、NFSなどの共有ファイルシステムが有効になってくるわけだが、どうもスケールアウトさせながらNFSの面倒をみるのがうっとおしい。そんなときにこそs3fsが便利なのです。



やってみよう!


早速、半袖先生に試してもらった。仕方なく表示が256Tのストレージになってるけど、理論上も無限のサイズ。さらにインスタンス間で共有できるとなれば、これを使わない手はないでしょう。



注意点


いくつか気になるところを試してもらったんだけど、S3の性質はちゃんと理解した上で使ったほうがいい。通信状況を見ていると大量にあるファイルのlsなんかは本当に悲惨だし、

% cat>> hoge
のようなファイルの追記をはPUTで丸ごとアップロードし直しだ。おそらくログなんか格納したら目も当てられなくなっちゃうだろうなぁ。

]]>
ブラック企業っぷりを紹介(続・小企業に勤務時間は必要ない) http://blog.livedoor.jp/sparklegate/archives/50548414.html 前回の記事ではてブをいくつかもらえて、コメントを見ていてなるほどと思った。やはり皆様勤務時間についての考え方はシビアなのだね。ただ、僕もかつては雇われる側だったけれど、どこの会社も大なり小なり問題を抱えながら進んでいるのではないだろうか。社員を雇用し... sparklegate 2009年08月11日T01:31:59+09:00 ワークスタイル 前回の記事はてブをいくつかもらえて、コメントを見ていてなるほどと思った。やはり皆様勤務時間についての考え方はシビアなのだね。ただ、僕もかつては雇われる側だったけれど、どこの会社も大なり小なり問題を抱えながら進んでいるのではないだろうか。社員を雇用してやっと1年経ったばかりだから、丁度いいタイミングなので、もう少し弊社のブラック企業っぷりを反省点として暴露しておこうと思う。

(注記)ただし、これだけは最低限の誤解ないようにと思って言いますが、自己責任で勤務時間を設計できるようにしたことはあくまでも仕事に対する自由度と成果を期待してのことです。 この自由を与えたことにより労使関係が消えてなくなるわけは無く、法律によって定められた従業員の保護を放棄するものではありません。って言うかできない。当たり前だけど。

労働時間の管理は確かにできていない

悔しいけれど、これはその通りで、正直感覚でしか見れていない状況。 メンバーの働き方を見ていると、大体以下の通り。

  1. たぶん1日7〜8時間くらい勤務しているのではないかと思う。休憩も思い思いに取っているのだが、このアバウトさは要改善のポイントだろう。
  2. たまに在宅でやる人もいる。
  3. そして出勤時間は朝8時の人もいれば、夕方4時の人もいる
  4. もちろんお客様とのお約束には合せる前提。
  5. 土日は休みだが、人によっては土曜日仕事している人もいるはず。たまにメールが飛んでいる。
  6. 年間20日の有給を設置しているものの、これも消化率は悪く、呼び掛けをしないとなかなか休まない状況。ここも要改善。
最近会社内で議論されているのは上記3番太字の部分。みんな自分を最適化するために勤務時間を設定しているんだけれど、労働時間ベースの管理がどうも合わない。会社が早朝出勤を善とするなどどちらかを優遇したり、どちらともつかない折衷案で勤務時間を決めれば、どちらの人間にも不都合なわけだ。

ゆえに勤務時間って本当に決めなければならないのか?要らないんじゃないの?と思っているわけです。

うちは管理できているもんねフフフっていう会社でも、結局実態と合っていない管理をする会社は多い。 結局帰宅後に勉強するよう強要してみたり、社員が労働時間を申告する形式になっていて残業時間のつじつま合わせを自主運用しなきゃいけない雰囲気になっていたりしていて、そっちの方が問題だろう。

成果成果と言うけれど正直それだけで給与は決定できていない

実は全く成果と連動しない基本給が少ないながらも設定してある。あとは家賃補助手当(家賃の半額相当、上限あり)があるくらい。旅費交通費は普通に支給している。言う人に言わせるとこれは本当の「成果主義」ではないかもしれないので、割合が大きいことから「成果中心」と表現した。

そして成果を正しく評価することも正直できていないと思っている。 これは永遠のテーマになると思っていて、今なお自信はない。

しかしひとまずここで言う成果とは何か、どこまでやると成果で、実際どのくらいリターンがあるのかは説明して合意をもらっているつもり。この算出アルゴリズムは社員と決めているんだけど、結局議論しているうちに「とにかくやってみて、数字出すしかないね...」という弱小企業故の悲しい結論に。失注なんかがあるとかなり悲しい空気に包まれます。

ただ、労働時間に対し対価を払うという考えだけは絶対によろしくないと思っている。成果が正しく評価できない以上に、同じ条件下のメンバー2名がいたとして、ダラダラ仕事している人の給料が高くて、サクっと1時間で仕事を終えた人の給料が低くなるというのはどう考えてもおかしいだろう。

生い立ちが制度無しのブラックスタート

社員を雇う環境整備が出来ていないことを理由(←ご指摘の通りこれはイイワケ)に、当初は2名の役員だけで進めていた。 残業なんて関係ない世界で徹夜もあった。 そんな中、偶然社員になりたいと言う人材に出会ったのをきっかけに、それならと急遽社会保険など最低限の仕組みだけは何とか準備。

そういう意味では基本的に社員の労働環境整備は全て後手に回っているのは事実。 せいぜいアーロンチェアとHHKを支給したくらいか。物的な改善しか出来ていない。

これまで「全て自前で勉強して環境整備する」という方針で進めてきたので、行政書士さんや社労士さん、税理士さんなどにお願いすることなくやってきた。本来なら迅速に会社を働きやすいものに仕立てていくところは犠牲にしてきた。そろそろ綻びも出てくるだろうと言うことで、税理士さんだけは付けてみることにした。今後は過去に独学でやった部分の修正をしていくことになるんだろうと思っている。

それから弊社は今フルタイムメンバーが7名しかいない。労使関係で言うと、取締役が4名もいて正社員は3名しかいない。まだ誰が何をどれだけやっているのか把握できない人数ではないと思っている。 「人数が増えたら今の制度ではダメなので変える」という話はメンバーに毎回言うことだが、今の段階では引き続き勤務時間というものを明確に規定しない方向でやってみようと考えている。

]]>
VAIO君はあきらめて工人舎の超軽量超小型ネットブックを買いました http://blog.livedoor.jp/sparklegate/archives/50548385.html 工人舎SC3WX06AS購入修理前にと思って代替機として準備しました。これで4万円切る価格ですよ。最大の特長は以下の通り。超軽量798g!これでバッテリ込みの重量。電源アダプタが小さい&2個も付いてくる!片方は事務所に常設。回転するタッチパネル液晶!マウス要らない。外... sparklegate 2009年08月10日T21:42:05+09:00 ワークスタイル 工人舎SC3WX06AS購入

修理前にと思って代替機として準備しました。これで4万円切る価格ですよ。最大の特長は以下の通り。

  1. 超軽量798g!これでバッテリ込みの重量。
  2. 電源アダプタが小さい&2個も付いてくる!片方は事務所に常設。
  3. 回転するタッチパネル液晶!マウス要らない。
外出が多いので、個人的には上記が気に入っていて、あとはOffice 2007(特にパワポ)が動いてくれる+VGA端子もあるので文句無いです。鞄に入れても重さを感じないところは素敵。
もちろん欠点もあります。
  1. キーボードが小さすぎる!でもこれは軽量化・小型化とのトレードなので正直目をつぶれます。キータッチは好き。メモを取ったりちょっと編集したり小一時間作業する分には全く問題ない作り。
  2. とにかくダサい!起動時に出るギラギラとしていて旧近未来なロゴはいただけない。これは本当にひどい。筐体も「小さい=カワイイ」を否定できる底力を秘めている。
  3. 本体が結構早々に熱くなる。
何にしても前回はちょうどシステムの開発中だったので、キーボードの使いやすさなどを追求した結果VAIO Type-Sになったりした。引き続きこの壊れた原因がまだ分かっていないもののVAIOは修理できる見込みはあるので、その後も開発用途に使っていきたいので、あとは本当に持ち運びだけを意識したPCがあれば外出時のメインマシンとして重宝することにはなると思う。 ]]>
VAIOが8ヶ月で不調、SonyStyleの対応が重たすぎる http://blog.livedoor.jp/sparklegate/archives/50548112.html VAIOが壊れた 8ヶ月は最短です。今年1月にType-Tが壊れ、開発の一部実装を担当していたまっただ中、急遽買い替えた法人向けモデルのType-Sだったが、8ヶ月経った最近になってキーボードのShiftが接触不良のような感じになり時々効かなくなるようになった。 仕事では外出で... sparklegate 2009年08月08日T13:57:49+09:00 雑談 VAIOが壊れた

8ヶ月は最短です。今年1月にType-Tが壊れ、開発の一部実装を担当していたまっただ中、急遽買い替えた法人向けモデルのType-Sだったが、8ヶ月経った最近になってキーボードのShiftが接触不良のような感じになり時々効かなくなるようになった。


仕事では外出で必ずと言っていいほど持ち運んでいたので、壊れやすい境遇ではあったのかも知れない。Shiftが効かないのは色々不便なので、早速サポートに連絡した。


SonyStyleのサポート電話があまりにひどすぎる


最初のうちは、ソフトの不具合なのかハードの故障なのかを見極めたいという趣旨で質問が始まったので了解し、変なソフト入れたんじゃないかとか、リブートしろだの何だの電話で30分やりとりしていたのだけれども、一向に改善されない。調査要求も次第にエスカレートしてきて、ついにサポートから電話越しに「それではOSの再インストールをしましょう。バックアップしてください。」と切り出された。すごい!やる気だ!


さすがにびっくりです。そんなのやる時間があったらとっくにやっているだろうと思い、代替機もない状況で他に仕事もあるので、修理に出してキーボード取り替えたいだけだと伝える。すると「それでハードのせいじゃなかったら調査費に3,500円とる」と言う案内。高いとか安いじゃなくて、サポート電話の質問や要求に全て答えなきゃならない前提になっている事にガッカリ。質問攻めでオールグリーン、送ってよし!って言う流れ。例外は無いのだろう。


VAIOはこれで3台目で、製品そのものは気に入ってはいたんだけど、うーん。今回初めて法人向けのモデルを買ったのですが、それはそれですぐに対応してくれるワケでもなさそうです。個人で買うのと実質何が違うのかわからない。(サポートの電話の人も良くわかっていないようでした)ノートPCを持ち運ぶ人にとって壊れたときの迅速な対応は結構重要だと思います。




調べてみたら、SonyStyleの対応については別の内容だけれど堀江さんもイラっとしていらっしゃるご様子です。電話長過ぎ。

]]>
小企業に勤務時間は必要ない派の意見 http://blog.livedoor.jp/sparklegate/archives/50548043.html 最近、社内で色々と語られている問題として「小企業に勤務時間を決める必要はあるか?」という話があります。いやー、そうか〜、今その議論をしなければならない人数になったと言うことなのか。ちなみに僕は「ルールなんて少ない方が良い」と思っている派で、以下にその理由... sparklegate 2009年08月07日T22:07:45+09:00 ネタ 最近、社内で色々と語られている問題として「小企業に勤務時間を決める必要はあるか?」という話があります。
いやー、そうか〜、今その議論をしなければならない人数になったと言うことなのか。ちなみに僕は「ルールなんて少ない方が良い」と思っている派で、以下にその理由を3つ書いてみようと思います。

  1. 成果中心のワークスタイルに合わない
  2. ペナルティの多い会社が魅力的とは思えない
  3. 守ったところでそれを評価する意味がない

成果中心のワークスタイルに合わない

なぜならば、メンバーに成果を期待する企業が、メンバーに対してルールをもって律しようとするのはある種の矛盾がある。ルールは成果に対してあまりに大きな足かせであると思う。

ルールが少ないからこそ成果を発揮するためのワークスタイルを設計できる。 自分が成果を出そうと試行錯誤したい時に、会社がそのやり方はダメだと言う必要があるだろうか?

成果を発揮するためには、自分を最適化する必要がある。自分のルールを自分で作らなければならない。これは自分のルールを他人に強要しないことでもあるわけで、善とされるルール、悪とされるルールはあくまでも当人だけの価値観なのだと思う。

だから1日1時間働いて帰ろうが、夕方に出社しようが、周囲と調整した上で自由にやって欲しい。これについて文句を言ったことは無いわ けだが、ただし、成果が上がっていない時には1時間で帰ったことに対して文句を言われることがあるというだけ。最適化のための自分ルールが間違えていると言うことを示している。

ペナルティの多い会社が魅力的とは思えない

社内のルールはただ作っても形骸化を待つだけ。
「守れなかった」→「次こそ守りましょう!」という話を繰り返すことに何の意味もない。チェックを増やそうとか強化しましょうとか言ったところで同じ事。
それを避けるため、今度はどうしても守らせる力学の議論が必要になる。つまり、ペナルティをどう設計し運用するのか、だ。

企業内においてのペナルティというのはすなわち給与・賞与との連動だろう。ただし、昨今は旧産業が新産業の創出を可能にし、より多様化されてきている中で、それなりに「仕事を選択できる時代」にあると思う。
メンバーに給与・賞与をそもそも低く設定している状況下では、これ以上に「選択されなくなる条件を増やす」ことを行うのは得策ではないように思える。

守ったところでそれを評価する意味がない

ルールとは「成果への足かせ」であり「ペナルティとセット」であるとは先述した通りなんだけど、今度は逆にこのルールを守った人をどう評価すれば良いかということにもなる。

足かせを乗り越えるエネルギーで売上があがっていくわけでは決してない。ある者は与えられてしまった足かせを振り払えないまま、その閾値を超えることをあきらめ、ルールに従うことが仕事であるかのように振る舞うようになるだろう。
そんな状況で企業が「成果を出せ」「イノベーションを起こせ」と叫ぶのは矛盾ではなかろうか。こうした事象の一側面が、大企業病の何かと共通している気がしてならない。

ここで言うルールは約束とは違う

そもそもペナルティのあるものは守るべきだと思うが、それって大抵はルールじゃなくて約束に類するものだったりする。お客様とのミーティング、打ち合わせ予定、納期...などなど。

元は勤務時間の議論だが、何でもルール化して従うか否かを善し悪しとするのではなく、個々はもちろん、組織が成果を出すためにどうあるべきなのかという観点で柔軟に考え直すことが大切なんじゃないだろうか。

]]>
WebGL始動! http://blog.livedoor.jp/sparklegate/archives/50548029.html OpenGLとJavaScriptをバインド Webブラウザ向け3D標準規格、「WebGL」は2010年前半登場実は4年前に全く同じ事考えて少しだけ実装してみたことがあります。いつか時間ができたらコードを増やしていこうと思っていたのですが、気づいたらすっかり時間が経過していました。以前... sparklegate 2009年08月07日T20:15:30+09:00 ネタ OpenGLとJavaScriptをバインド Webブラウザ向け3D標準規格、「WebGL」は2010年前半登場

実は4年前に全く同じ事考えて少しだけ実装してみたことがあります。
いつか時間ができたらコードを増やしていこうと思っていたのですが、気づいたらすっかり時間が経過していました。

以前も書きましたが、第二のMesaになることを想定していたので、寿命は長くて1年。ブラウザの基本機能として組み込まれたらすぐに置き換えられるだろうと考えていて、あまりモチベーションが沸かなかったのは事実です。結果論ですが実際はこうして4年あったので、ある程度でも実装を進めていたら面白かったのかなとは思います。

]]>
[Wakame] Wakame 0.4.2をリリースしました。 http://blog.livedoor.jp/sparklegate/archives/50546198.html Wakame 0.4.2をリリースしました今回大きく変更されたのは以下の3つ。Wakame masterへのコマンド発行がWeb APIになったAgentが必要ないリソースを定義できるようになった対応プロダクトが増え、MySQL Slaveの追加をサポートした特に、最後の対応プロダクトは、以下の4つで... sparklegate 2009年07月24日T19:34:11+09:00 Wakame Wakame 0.4.2をリリースしました

今回大きく変更されたのは以下の3つ。

  1. Wakame masterへのコマンド発行がWeb APIになった
  2. Agentが必要ないリソースを定義できるようになった
  3. 対応プロダクトが増え、MySQL Slaveの追加をサポートした
特に、最後の対応プロダクトは、以下の4つです。
  • MySQL_Slave
  • Nginx
  • Elastic IP
  • Elastic Load Balancer
Elastic IPや、Elastic Load Balancerに対応するためには、そのインスタンス上にAgentがおけないことも考慮しなくてはなりません。そのため、Agentが必要ないリソースを定義できることが重要になります。また、masterへのリクエストがHTTPになったことで、CUIでのコマンド発行だけでなく、将来的にはGUIなどからリクエストを受け付けることも可能になると思っています。

バグレポートなどよろしくお願いいたします。

]]>

AltStyle によって変換されたページ (->オリジナル) /