これまで日本のシステムは基本的に物理サーバーをおいて、そこに様々なデータやアプリケーションをのせるのが一般的でした。
しかしAWSを始めとするパブリッククラウドが浸透するにつれてこれまでのシステムをクラウド上に構築することが増えました。
ここまでは恐らく多くの企業が今取り組んでいる部分かと思いますが、時々目にする「サーバーレス」というワードにも注目していく必要があると思いセッションに参加してきました。
サーバーレスとは何か
まずサーバーレスとはですが、そのままサーバーが不要なシステムのことです。
これだけ聞くと従来のシステムを作ってきた人にはよくわからないと思いますが、サーバーが不要というのは結果であり、正確にはサーバーの管理が不要ということになります。
サーバー管理をすべてクラウド提供側が管理するので、アプリケーションだけデプロイしてくださいねーというサービスを利用しているイメージですね。
管理する上で必要な可用性の確保やバージョン管理、スケーリング等々を利用者である私達は意識せずに、コードをただデプロイすれば実行できるというのが、サーバーレスです。
モノリシックからマイクロサービスへ
上記で説明したような物理サーバーに作り込んで行くようなシステムはモノリシックと呼ばれますが、こういったシステムは時間が経つに連れ要件の変更や機能の追加などで、非常に肥大化したシステムになっていることが多いです。
そんな現代のシステムに対し、最近トレンドになっているのは「マイクロサービス」です。
マイクロサービスは機能単位でサービスを作り、呼び出すときはAPIを使うだけといった疎結合で作られるサービスのことですが、これを実現するにあたってサーバーレスが重要となってきます。
AWSにおけるサーバーレス
ではAWSにおけるサーバーレスサービスについてですが、なんといってもAWS Lambdaがメインとなります。
AWS Lambdaは関数を作成しコードをデプロイするだけで、サーバーを意識せずに実行することができます。
起動するトリガーも豊富ですが、主に対象のS3へアップロードされたときやAPIGatewayとの連携が主な利用方法になるかと思います。
例えばS3へ画像がアップロードされたときに、その画像をリサイズなどの加工する処理をLambdaで実行するとしておけば、自動でその処理が行われるサーバーレスなシステムが作れます。簡単ですね…
サーバーレスの考慮点
既存のシステムをサーバーレスでマイクロサービス化したいと考えると、思想そのものが違うため既存のアプリを分解して作り直す必要があります。
また、サーバーレスで様々な機能をマイクロサービス化すると次第に数が増大になりモノリシックなシステムと同様管理が難しくなることも考えられますよね。
そういった場合はAWSの場合はAWS SAMというサーバーレスアプリケーションのデプロイと管理を簡素化できるものを利用しましょう。とスピーカーの方はおっしゃってました。私はまだ使ったことないのでそのうち使ってみます。
まとめ
ということでこれからはサーバーレスの時代なので、これまでのようなモノリシックなシステムではなくマイクロサービス的な思想でシステムを構築して、構築も管理も容易なものにしていきましょうというお話でした。
そのために使用するAWSのLambdaやAPIGateway、SAM等々のサービスへの理解を深めて行きたいですね。