2018年のサーバーレス開発 – ClassmethodサーバーレスAdvent Calendar 2017 #serverless #adventcalendar

こんにちは!おおはしりきたけです。クラスメソッドでは、2017年10月からサーバーレス開発に特化したサーバーレス開発部を立ち上げました。この3ヶ月でやってきたこと、今後やっていくことををまとめました。

サーバーレス開発部が立ち上がった経緯

2014年11月にAWS Lambdaが発表されてから、私の所属しているモバイルアプリサービス部でも、Lambdaを一部利用することも増えてきていましたが、当時は、全てをサーバーレスで開発するという状況ではありませんでした。特にモバイルのAPIについては、EC2上にAPIサーバーを立ててアクセス制御するというのがやはり効率的でした。クラスメソッドでは事業会社様のサービスを開発していることも多く、サーバーレスの制約だから実現できませんという言い訳できません。その為、開発する中で最適なサービスを選んで開発をしています。

しかし、2017年頃からAWS構築、モバイル、データ分析基盤というクラスメソッドが現在メインの事業としている以外の問合せも増えてきていました。その一つがサーバーレスでの開発になります。技術者界隈で盛り上がっていた、サーバーレス開発がいよいよ事業会社様にも徐々に浸透してきており、2017年夏頃がらサーバーレス系の問合せが増えてきました。クラスメソッドの経営理念は「オープンな発想と高い技術力により すべての人々の創造活動に貢献し続ける」です。AWS構築、モバイル、データ分析基盤というビジネスが立ち上がったのも、世の中の状況とお客様のニーズに合わせ事業変革が起きたためです。サーバーレス開発といっても今までやっている技術の延長線上の1つですし、できるメンバーも沢山いてお客様のニーズがあるのであれば、特化した部署を立ち上げても良いのではということで2017年10月にサーバーレス開発部が新設されました。

3ヶ月間やってきたこと

メンバー集め

新設部署とは言っても、全く新しいことをやるわけではありません。今までプロジェクトでやっていたサーバーレスの部分に特化する事が大切です。立ち上げます!と決めてから部署設立まで2週間。幸いなことにお客様からの問合せはいくつかいただいていたので、仕事はあります。ですが、開発者はいません。まずは社内の他部署からのメンバーを応援として集めさせていただきました。私の所属しているモバイルアプリサービス部のメンバーがサーバーレスでの開発もしているメンバーも多かったため、まずは自分の部署のメンバーのアサインを進めました。でも、正直それだけでは足りていません。他部署の部長にもお願いして協力してもらえるメンバーを募集しました。クラスメソッドは部署ごとに売上などを立てていますが、こういう時に部署の壁とか超えてすぐ動いてくれるのは、本当助かります。いい会社です。社内からのメンバー集めもやっているのですが、幸いサーバーレス開発をやってみたいという応募者も続々来ていただいています。

営業

上述したとおり、立ち上げ前から問合せがあっての、部署新設なのでゼロから営業をかけなきゃという必要はありませんでした。これに関しては今までやってきた経験と実績のおかげなのかなと思っています。とはいっても、営業部との連携も必要ですし、受注までの活動もやっていく必要はあります。営業部の方々には、とにかくサーバーレスとして関係ありそうな話は紹介して欲しいという話をして遠慮なく問合せをしてもらいました。その結果、この3ヶ月問合せ数は止まらない勢いでした。もちろんサーバーレスに適していないようなお話もありましたが、まずは問合せをいただいてどんなニーズがあるのかを把握するためにも、この3ヶ月間は色々な方々と連携させていただきました。

2018年やっていくこと

2018年特に注力していきたい事を書きます

開発実績数

クラスメソッドとして、既にサーバーレスでやっている経験はかなりあると思っていますが、実績に勝るノウハウは無いと思っています。2018年は、開発実績をさらに増やして、それをノウハウとしてブログにも共有し、サーバーレス開発者のノウハウを増やしていければと思っています。AWS Serverless Application Repositoryにも共有することで、開発するから使うとより効率的な開発手法になっていくのではないかと思っています。今までは、ツールやPoC的な開発も多かったのですが、本格的なサービスとしてサーバーレスで開発したいというお話もたくさん頂いています。セキュリティをより強固にした開発なども増えてくるでしょう。どんなご要望にも応えられるよう、沢山の実績を貯めていきたいと思っています。

監視/運用

サーバーインフラの監視自体は不要かもしれませんが、分散アプリケーションになっていくため、イベント毎の実行監視や、リトライ、ロギング、パフォーマンスやボトルネックなどアプリケーション上の監視と運用についてはもっとノウハウを貯めていく必要があります。AWS X-Rayなどを利用し、分散アプリケーション (マイクロサービスアーキテクチャを使用して構築されたアプリケーションなど) を分析およびデバッグを行ったり、自作監視のツール開発などにも取り組んでいきます。

構築/デプロイ

Serverless FrameworkやAWS Serverless Application Model (AWS SAM)が出てきたことにより、各段に構築やデプロイに関してはやりやすくなったと思います。サーバレスだからといって特別なことはなく、通常のアプリケーションと同じように開発/運用が出来る仕組みを作っていきます。

全体を見る

サーバーが抽象化され、イベントドリブンの開発になっていくとコンポーネントの単位が今までより小さくなっていきます。しかし、サービスというのは全体が動いてはじめて成り立ちますので、自分の責務をコンポーネント単位ではなくサービス全体を見ることができるようにしておかないと、「そこは知りません」というような状態になりがちです。もちろん細かいロジックを全部把握するということは、物量によっては無理なのですが、全体の流れを把握してサービス設計、開発をしていく必要はありますので、全体を見るというのを基本に開発をしていきます。

サーバーレス ≠ デベロッパーレス

AWSのフルマネージドサービスを組み合わせることにより、サービスが出来上がると思っている方もたまにいるのですが、サーバーレスはあくまで今までインフラ含めて管理していた部分の「可用性、対障害性」、「スケーリング」、「インフラやミドルのプロビジョニング」、「インフラの監視/運用」を行う必要がなくなり、アプリケーションエンジニアがよりアプリケーションに特化できるという話なので、決してデベロッパーレスになるわけではないです。ただし、これは現時点での話なので、AWS Serverless Application Repositoryが充実され、公開されたアプリケーション単体でサービスが実現できることや、その他SasS系のサービスとの連携が強化されていく事によりデベロッパーレスになっていく可能性もあると思います。

まとめ

2014年にAWS Lambdaが発表されてからあっという間に3年経過しましたが、この3年間でサーバーレスで実現できることが一気に増えてきました。re:Invent 2017でもサーバーレスに関する発表も沢山ありました。2018年は、よりこの勢いが増すと思ってますので、サーバーレス開発部としても勢いをよりつけられるように頑張って行く所存です!

参考

AWS X-Ray

AWS Serverless Application Repository が登場します

【随時更新】re:Invent 2017 サーバーレス関連エントリーまとめ #reinvent

[新ツール] AWS Serverless Application Model (AWS SAM) を使ってサーバーレスアプリケーションを構築する

https://github.com/serverless/serverless

https://github.com/awslabs/serverless-application-model