Quora回答シリーズです。
質問
サーバーレスという技術が出てきたらサーバーサイドエンジニアはいらなくなりますか?
https://jp.quora.com/sa-ba-resu-toiu-gijutsu-ga-shutsu-te-ki-tara-sa-ba-saido-enjinia-hai-ra-naku-nari-masu-ka/answers/179348282
至極最もな質問だと思います。当面はなくなりませんが将来的にはBaaSなどに吸収されるのかも…という内容の回答をしました。
回答
現在のサーバレスの「レス」は、サーバ管理がレスになることを意味しています。サーバそのものが必要なくなるわけではありません。このあたりの用語はよく議論になりますが、直感的にわかりにくいですよね。
サーバサイドプログラマーに需要はあるか
ここで言う「サーバサイドエンジニア」がPHPやRubyなどのプログラムをサーバ上で記述するプログラマーのことを指すとします。
例えばAWS Lambda+API Gatewayのようなサーバレス環境では、サーバ自体の管理はほぼ無いもののサーバ側のプログラミングは引き続き発生しています。Node.jsやPythonなどでクライアントから値を受け取り、データを保存、または何らかのデータを返却するといった処理を記述する必要があります。そのためサーバサイドでプログラムを書く意味での「サーバサイドエンジニア」はサーバレス環境であっても現在も需要があります。
1つ変わってきているのは、これらをクライアントエンジニアが兼任することも可能になってきている点でしょうか。AWSやGCPなどのパブリッククラウドはどれも専門的な知識は必要となり、業務で使えるレベルまで習得までにはそれなりの学習コストがかかりますが現実的に不可能ではなくなってきています。
ここから考えられるのは、これまではサーバとクライアントに別れて開発していた物が、今後は例えば機能単位で人員を分けるといったことも可能になるかもしれません。そういった意味で、仕事自体はなくなりませんが、開発体制や開発手法の自由度は上がっていくのかもしれないですね。
インフラエンジニアの場合
ここで言う「サーバサイドエンジニア」が、サーバ周りのインフラ周りの面倒を見る人という意味でしたら、これは形を変えて現在も必要とされています。現状のパブリッククラウドは素人には非常にわかりにくく、管理画面にログインしただけで目眩がするような情報量が飛び込んできます。AWSの管理画面にメニューを絞り込む検索ボックスが登場したときは笑いましたw
サーバレス環境であっても、例えばデータをどのように管理するのか、システム全体をどのような構成にするのか……など多くの選択肢から要件にあった物を取捨選択し、具体的な設定を行うのはそれなりの学習と経験が必要です(パブリッククラウドの事業によっても異なりますのでどの事業者がベストか選択するところからとなるとまたハードルが上がりますね)オンプレ環境でのサーバエンジニアとは趣が異なりますが、このあたりの技術を持ったエンジニアは現在もやはり需要があります。
しかしながら、オンプレミス時代と比べるとパブリッククラウドで「やること」は確かに減りました。サーバをラックに持ち上げたり回線を引く必要もなければ、以前ほど血眼になって負荷監視をすることも減ったと言っても良いと思います。
今後インフラ専門のエンジニアは、更にオンプレに強くなるか、クラウド技術に強くなるかといった選択をする必要が出てくるのかもしれないですね。
未来はどうなるのか?
今現在で言うとオンプレは相変わらずいたるところにありますし、パブリッククラウドを利用していてもAWS EC2などをIaaS的な使い方をするところの方が多くあります(部分的にLambdaを使うケースもありますが)。人間そう簡単には変われないですよね。
さて、現状はさておき将来はどうなるのでしょうか?個人的に注目しているのは「BaaS(Backend as a Service)」です。
例えばゲーム開発において昨今ではネットワークの利用は避けて通れない状況になってきており、サーバで泣かされる会社も数多くあります。そんなところに登場して来ているのがゲーム向けのBaaSサービスです。
- GAME SPARKS (Amazon)
- PlayFab (Microsoft Azure)
- Game Server Services ※元任天堂の方が立ち上げた日本のサービスです
いずれもクライアント側にSDKを組み込み、BaaSの機能を呼び出すだけで使えます。BaaS事業者が用意している管理画面にログインすることでクライアントの操作や設定を行うことが可能です。
つまりクライアントを開発するだけで、サーバを触ることもサーバ上でプログラムを書くこともありません。(特別なロジックを仕込みたいとなればサーバ側を操作することも可能です)
何ということでしょう!夢のようですね!
……ええ、夢なんですw 現在のBaaSは、ゲームを開発するのに必要な一部の機能を提供するにとどまっていますので、既存のサーバと併用する必要があり、まだ完全にサーバを捨てることはできません。しかしこのような技術が社会的に受け入れられていけばいずれはBaaSの上ですべてを動かす世界がやってくるかもしれませんね。
サーバレスやBaaSが抱える最大の懸念点
以前からモバイルアプリの開発に携わっていた方であれば、Facebookが買収したモバイルアプリ用のmBaaS事業者「Parse」が閉鎖されたことを覚えている方は多いです。これは世界中で60万ものアプリが採用していただけに阿鼻叫喚でした。
これまで不要だったバックエンドをすべて新たに書き足すか、機能ごと潰す必要があります。もちろんこれまで蓄積していた貴重なデータはすべて別の環境に移管しなくてはなりません。Parseを利用していた方の中にはサーバ関連のスキルが無い方も少なくなかったでしょうからはっきり言って地獄です。
その後Parseの名前を聞く機会はなくなりましたが、現在ではOSSとなり、マイクロソフトのAzureなどで運営が出来るようになりました。この事件を記憶している人間としてはサーバレスにせよBaaSにせよ常にこの不安がつきまいます。
電子書籍のお店が閉鎖すると二度と読めなくなる問題と似てますね。
この問題を認識している企業の中には、どのサーバレス環境でも利用できる共通のフレームワークを作ってしまおうという動きもあったりします。
- どのクラウドでも使えるサーバレス「GitLab Serverless」をGitLabが発表。KubernetesとKnativeがベース
- Serverless - The Serverless Application Framework powered by AWS Lambda, API Gateway, and more
実際にこのような取り組みが起動に乗り、皆が使うようになれば不安も取り除かれるかもしれません。Amazon、Google、Microsoftあたりで話し合って共通の規格を決めてくれるのが手っ取り早いんですけどねw
真の意味でのインフラ専門家は貴重な存在になる
最後に少し毛色の異なるお話をして締めたいと思います。「サーバレス」や「パブリッククラウド」ってどこで動いているかご存知でしょうか?そう実はサーバの上なんです。
サーバレスやクラウドが主流になり、物理サーバを触らなくなればなるほど、これらを理解できる人材は希少になります。実際の統計などは見ていませんが、現在進行系で物理サーバやインフラの構築がわかる方は減っているのではないかと考えられます。
つまり今後、低レイヤーも含めてインフラを理解している人材は引く手数多と言って良いのではないでしょうか。だって担い手がいないのに、今をときめくGAFA企業での需要は引っ張りだこになっていくかもしれないのですから。
永遠には続かないかもしれませんが、しばらくは「サーバエンジニア」の需要はどこかにあると思われます。