【登壇資料】 AWS Serverless Tech/事例セミナーで アプリケーション開発におけるサーバーレスの課題と考え方について話しました

AWS Lambda と マネージドサービスを組み合わせるサーバーレス開発は、ソフトウェアエンジニアにとって強力な武器になります。この発表では、これまでのサーバーレス開発であまり議論されていない、アプリケーションをフルサーバーレスで開発するときの指針や考え方、遭遇しがちな課題に対する考察を行いました。EC2、Webアプリケーションフレームワークを利用する場合と、サーバーレスで開発する場合とで比較してみます。結論として、以下のような課題と、解決方法を提案しています。
2019.03.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

発表の要点

AWS Lambda と マネージドサービスを組み合わせるサーバーレス開発は、ソフトウェアエンジニアにとって強力な武器になります。この発表では、これまでのサーバーレス開発であまり議論されていない、アプリケーションをフルサーバーレスで開発するときの指針や考え方、遭遇しがちな課題に対する考察を行いました。EC2、Webアプリケーションフレームワークを利用する場合と、サーバーレスで開発する場合とで比較してみます。結論として、以下のような課題と、解決方法を提案しています。

serverless_kadai.png

コーディングとデプロイについては Webアプリフレームワークを使って開発する場合と同じ考え方が適用できる

どんなに小さな Lambda Function でも使い慣れたエディタで書くのがおすすめです。フォルダ構成は、Lambda Function の場合でもレイヤごとに分け、どこから Lambda Function が起動され、Lambda Function がどのサービスを起動するのか をわかりやすくしておくとメンテナンス性が上がります。また、フレームワークやツールを使ってデプロイすることで、手間を削減できます。

テストはE2Eに注力するのが良いかもしれない

サーバーレスアプリケーションは 動かしてみないとわからない ことが多いので、実際にデプロイした後、ユースケースに沿ってテストを行うのが効率が良いと思います。

プロジェクトの進め方とチーム開発

慣れるまでは、少人数で進めたほうが良いかもしれません。AWSサービスの便利な機能を利用できる一方、サービスの制限事項を考慮する必要があるため、まずはやりたいことに対して実現できるかどうか、実際に組んで動かしてみるのが早いと思います。このサイクルを繰り返すことで、ひとつの機能を高速に開発・デプロイできるようになるはずです。

まとめ

サーバーレス開発は楽しく、素晴らしいものです。一方、エコシステムが成熟しきっていない背景もあり、本格的に開発しようと思うと課題に当たることも多いでしょう。EC2を利用したサーバーサイド開発の経験を振り返れば、考え方の指針を導くことができ、課題解決の糸口になるはずです。開発者の方が壁にあたったときに、この発表内容が少しでも参考になれば幸いです。