クラウド時代、ビッグデータ時代に求められるスキルは何なのか?
Google App EngineやAmazon EC2、Microsoft Azure、SalesforceなどのSaaS/PaaS/IaaSが広まるにつれて、
またHadoopやNoSQLのようなビッグデータを扱う技術が登場し広まるにつれて、
従来のシステム開発とは求められるスキルも変わってくるのではないかと思いつつあります。
そしてこれはSIerとかWeb業界とか関係無い気がしています。
ここで言っている従来のシステム開発というのは役割に応じた分業体制による仕事の進め方のことです。
つまり業務SEがお客さんと要件をつめ、インフラSEがインフラ設計をし、アーキテクトがアプリの基盤を設計し、開発者が実装し、QAが試験するという流れのことです。
個々の作業自体はクラウド時代、ビッグデータ時代でも必要なのですが、その中身が変わってきたため個々人の役割や求められるスキルも変わっていくように思います。
さすがにOpenStackやCloudStackのようなクラウド基盤ソフトを使ってAmazon EC2のようなものを作ろうとするところは無いと思いますが、Amazon EC2を使った案件は増えるでしょう。
ベンダー側が担がなくてもお客さんからEC2でって言われたら検討せざるを得ません。
そのときになって慌てて調べ始めるのでは不安がありますので素振りは必要でしょう。
EC2が内部でどういう技術を使っているかはわかりませんが、いずれにせよ仮想化技術は知らないとまずそうです。
あとネットワークね。仮想化ソフト使っていろいろ構築する場合のネットワーク設定をどうするかっているのはかなり肝になるでしょう。ping通らねーーーとかイヤですもんね。。。
しかも最近はOpenFlowなんてのも出てくるし、ネットワークエンジニアはモテな気がします。
一方でビッグデータですが、こちらもマシンを何台も並べての分散技術の話になるので引き続きネットワークのスキルは必要です。
Hadoopにネットワークトポロジを伝える必要性が出てくる場合もあるでしょう。
NoSQLはDBスキルがあればすんなり馴染めそうな気がします。
MongoDBのようなスキーマレスかつjoin無しなものを扱う場合でもどのようにデータモデルを設計するかという話は重要で、そこはDBのスキルが生きてくるでしょう。
RDBMSを使っていた場合でも正規化をくずして(受注テーブルと受注明細テーブルをあらかじめ結合するなど)フラットな形のテーブル設計をすることもあるでしょう。
NoSQLでのデータ設計でもその辺の勘所が効いてくると思います。
アプリ開発のやり方も従来と変わってきそうです。
Google App Engineを使うのであれば内製フレームワークを使うことも無いでしょうし、その世界にあった開発、デバッグ、テストをやることになるでしょう。
Hadoopの場合は生MapReduceが工数かかるのでHive, Pig, Asakusaを使うことになるでしょうが、それにしても開発のやり方が従来と変わるでしょう。
特にデバッグ、テスト系ですね。テスト環境をどう準備しどうテストしていくかはまだノウハウも少ないので大変です。
いきなり完全分散でテストは無いでしょうが、ローカルモードでどこまでテスト環境を整備できるかも難しいところでしょう。
と、まあぐだぐだ書いてみましたが、結論として言えるのは求められるスキルが広範囲になったということでしょう。
少なくともインフラとアプリはある程度両方カバーしてないとつらそうです。そうじゃないと境界部分ですぐお手上げになる。
僕のような中途半端な人間はいろいろと勉強する必要がありそうです。