はじめに
変なタイトルですいません。私は、しばらくブランクはあったものの、これまで長年アプリケーションエンジニアとしてやってきまして、システム開発の大変さをアプリ屋として実感してきました。
そんな中、ちょっとしたことがきっかけで、パブリッククラウドを勉強することになり、その素晴らしさに感動し、改めて活躍の場ができるかもしれないと感じ、新たな楽しみになっております。
で、意外と共感いただける方がぼちぼちいるのではないかと思い、この記事を書きました。
パブリッククラウド以前の開発
アプリケーションエンジニアにとって、特に昔ながらのウォーターフォールで開発を行っていると、ハードウェア調達期間を考慮するため、要件定義段階からハードウェア構成を意識し、通常時どの程度のリクエスト(トラフィック)が発生し、ピーク時にはどの程度までトラフィックが増加するのかをお客様と想定しながら、インフラエンジニアにハードウェア見積もりをしてもらっていたわけですが、要件定義段階での想定は得てしてざっくりなので、後からその想定が異なると、ハード調達後のプロジェクト後半に位置する性能試験などの段階で、商用に準備したハードでピーク性能が出ず、アプリのチューニングを必死で行うなど、スリリングな開発をしていたと思います。(このあたりは、いろいろご意見あるとは思いますが)
また、多少偏見があるかもしれませんが、アプリケーションエンジニアから見て、インフラエンジニアは、多くがハードウェアに強い理系の方が多く、非常にカチッとしていて信頼できるのですが、若干お願いしにくい雰囲気があり、とはいえ無理なお願いをしなければならないことも多いため、なかなかアプリチームとインフラチームが何のわだかまりもなく仲良く開発、とはいかないのが実情でした。
(こちらもいろいろご意見あると思います^^;)
パブリッククラウドの登場
パブリッククラウド以前より、VMWareを中心として、VMによるハード仮想化などはありましたが、パブリッククラウドが登場したことにより、サーバやネットワークハードが仮想化されただけでなく、オートスケーリングと呼ぶクラウドならではの、動的にサーバ台数を増減できる仕組みができました。ロードバランサと連携すれば、例えばWebサーバをリクエスト数により増減させることが、いとも簡単にできるようになります。先に述べた要件定義時の性能が足りない、というときに、大騒ぎせず済むようになります。もちろん費用はゼロではありませんが、アプリのチューニングや追加ハードの検討等を行うのに比べれば、次元の違う安心感です。
マネージドサービスの登場
さらに、マネージドサービスという、ユーザが仮想ハードの設定にすら関与せずに済むAPIやサービスが拡充され、オートスケーリングやロードバランサの設定すら気にせず(一部設定がある場合もあります)、実行したいプログラムコードを記述するだけで簡単なWebサーバなどはリリースすることが可能となります。
もちろん、商用リリースとなると、セキュリティなどきちんと設計せねばなりませんので、完全に一人で、とはいかないかもしれませんが、かなりのところまで一人で実施できると考えられます。
まとめ
プログラミングが大好きで、できるだけインフラチームの方に負担を掛けずにシステム開発できたらいいな、と思うアプリケーションエンジニアの方は、クラウドで開発してみるという選択肢もあるよ、ということを言いたいお話しでした。いろいろご意見あるかと思いますが、もしこの記事をきっかけにクラウドにチャレンジしてみていただけると嬉しいです。