2011-10-26
DevOpsというオシゴト
DevOpsというオシゴトをご存知だろうか?
DevOpsというのはDevelopmentとOperationsのかばん語で、この数年話題になっているフレーズである。伝統的に、ソフトウェアの世界は、大きくわけてDevelopmentとOperationsの2つに分かれていた。Developmentに属するのは、いわゆるプログラマーやソフトウェアエンジニアと呼ばれる人たちで、ガンガンコードを書いてアプリケーションを作る人たちのことだ。Operationsは、プログラマーたちが書いたソフトウェアを管理したり、開発環境を整えたり、サーバーを監視したりするのが主な役割で、インフラエンジニアやシステム管理者と呼ばれる人たちがこちらに属する。
今までDevelopmentとOperationsは、きっぱりと分離されていた。それもそのはず、必要とされるスキルも経験も大きく違う。例えばウェブの世界でいえば、ソフトウェアエンジニアにとって重要なことは大雑把にいって以下の3つになる。
D1. MySql/Memcachedといったデータまわりの基礎知識
D2. サーバー言語(Ruby/Perl/Python/PHP)が書けること
D3. フロントエンドの知識 (JavaScript/CSS/HTML)
まあ大体のエンジニアはD1+D2かD2+D3だと思う。それに比べ、Operationsに必要とされる知識は、
O1. ネットワークカードなどといったハードウェアに関する深い理解
O2. OSをはじめとする基礎ソフトウェアの理解と、クラウドサービス(EC2/S3)の運用経験
と言える。ぼくの勤める会社も2006年に創始された比較的若い会社だが、やはりDevelopmentとOperationsは、きっぱり分かれている。Facebookも一緒だ。ていうかデカイ会社は大方そうだ。
しかし、この2−3年で、様子が大分変わってきた。D1 + O2、さらに欲を出せばD2もできる技術者が必要となってきたのだ。DevOps = D1 + O2 (+ D2)となる。
変化の一番の要因は、AmazonやRackspace、Herokuなどに代表されるクラウドサービスだ。クラウドサービスというとRPGの魔法みたいだが、要は、「誰かがサーバーを貸してくれて、物理的にサーバーを構築したり管理したりするめんどくさい作業を一手に引き受けてくれる」サービスだ。最近は、サービスも比較的安価で、月2−30ドルから使用できる(もちろん使用状況に応じて高くなる)。
これらのサービスは、自分でデータクラスターを作ったりするよりは圧倒的に低コストなので、ここ2−3年のスタートアップは、ほぼ全部なんかしらのクラウドサービス上で運営している。
クラウドを使うと、自分で物理的なサーバーを管理する必要がないので、O1が必要なくなる。となるとO2のためだけに1人インフラエンジニアを雇ってくるのは、ちょっとコストが...そんだったら1人でO2もD1も、できたらD2もできる人はいないかなという考えに至り、そのニーズに応えるのがDevOpsというわけだ。
実際にどんな仕事をDevOpsはするんだろうか?これは会社によってまちまちだが、コードプッシュの仕組みを構築したり、Memcachedなどのキャッシュのいじったり、データベースのチューニングをしたりしている人が多い。もちろん彼らは必要とあればアプリケーションのコードもデバッグするし、サーバーの監視もする。サッカーに例えれば、ソフトウェアエンジニアがフォワードで、インフラエンジニア・システム管理者がディフェンダーだったら、DevOpsはミッドフィールダーだ。トップ下の人もいればボランチの人もいるが、多かれ少なかれ攻め(Development)と守り(Operations)の橋渡しを担っている。
今、シリコンバレーではDevOpsの需要がグングン伸びている。DevOpsという職種でなくても、話を聞くと、DevOpsを探しているという会社は多い。基本的にスタートアップは予算が厳しいので、一人二役できる人材を探しており、DevOpsは理想の初期社員と言える。
何でこんな話をすることにしたか。今日、GREEを退職できないエンジニアの記事を読んでいたら、こんなくだりがあったから。
その知人は極めて優秀なインフラエンジニアだ。コードも書ける。得難い人材と言えると思う。
どなたか知らないが、この人はまさしくDevOpsである。そして筆者の方がおっしゃる通り、なかなか「得難い人材」だ。わざわざシリコンバレーまで来なくても、日本で沢山仕事のオファーはあるだろうが、こっちでも重宝されますよと是非伝えたい。