BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース サーバレスバックエンドでWebアプリ開発のイテレーションを迅速化する

サーバレスバックエンドでWebアプリ開発のイテレーションを迅速化する

ブックマーク

原文(投稿日:2020/09/24)へのリンク

AWSは先頃、3編からなる技術記事シリーズを公開して、Webアプリの反復開発の頻度と製品要件変更への対応能力を向上する、サーバレスバックエンド構築のアドバンテージについて説明したこれらの開発方法論とアーキテクチャによって、開発のフレキシビリティが向上する反面、クラウドベンダサービスへの結合度は高くなる。

州立公園の"Happy Path" Webアプリケーションを例として、AWSシニアデベロッパアドボケートのJames Beswick氏が、プロジェクトの目標について説明している。

このシリーズでは、ユーザ要件の変更に対応可能な、フレキシブルなソリューション構築について取り上げます。現代的なWebアプリケーションを開発する上での課題のひとつは、要件が短期間に変更される可能性のあることです。プロダクトマーケットを探している新しいアプリケーションには、特にこれが当てはまります。ほとんどの開発チームが、ワンセットの要件下でプロダクトの開発に着手した直後に、別の機能でプロダクトを開発しなければならないことに気付くのです。

最初の実装では、ユーザがマップや写真をアップロードできるようにするが、その後のイテレーションで、まったく新しいマーケットであるレストランに向けて、より複雑な機能を追加する。GitHubリポジトリで公開されているコードでは、サーバレスアプリケーション構築用のオープンソースフレームワークであるAWS Serverless Application Modelを使用している。

APIレイヤはLambda関数を起動して、ストレージレイヤからデータの取得と保管を行うように開発されており、バイナリにはAmazon S3を、メタデータにはDynamo DBを使用して構築されている。ビジネスロジックはAWS Step Functionワークフロー内にカプセル化されており、Amazon CloudFrontディストリビューションがエンドユーザにコンテンツを提供する。

アーキテクチャ概要、出典: https://aws.amazon.com/blogs/compute/using-serverless-backends-to-iterate-quickly-on-web-apps-part-1

最初の記事では、アプリケーションのデプロイ方法、アップロードプロセスのテスト、アーキテクチャのレビューを取り上げる。2番目の記事では、AWS Lambda関数の順序を決定するサーバレス関数オーケストレータであるAWS Step Functionの使用方法と、イメージサイズの変更を行うカスタムワークフローのデプロイ方法について解説する。3番目の最後の記事では、カスタムブランチや画像のモデレーションといった、より高度なワークフローを導入する方法を紹介する。シリーズの最後には、当初の発想から方向転換して、ロジックをほぼ再利用しながら新たなマーケットに対応する例が示されている。

Source: https://aws.amazon.com/blogs/compute/using-serverless-backends-to-iterate-quickly-on-web-apps-part-1

Beswick氏は、サーバレスアプリケーションにおいてビジネスロジックが遷移する方法を分析した別の記事で、次のようにコメントしている。

十分に定義されたサーバレスアプリケーションは、本質的にフレキシブルであり、ユーザ要件の変更に伴う機能追加が短時間で可能です。これは、ワークフローの各部分が分離し、疎結合していることによるものです。この特徴は、反復型開発において有利であると同時に、設計変更によって書き直されるコード量の削減にも寄与します。

一連の記事ではAWSテクノロジについて解説しており、AWS Serverless Application Modeを利用しているが、サーバレスワークフロー用の関数とオーケストレーションを提供するどのクラウドプロバイダでも、同じようなアプローチを活用することは可能である。例えば反復型アプローチは、Azure Durable Functionsを使用しても、あるいはオープンソースのApache Airflow上に構築されたGoogle Cloud PlatformのサービスであるCloud Composerでも実現することができる。

サーバレステクノロジを利用してサーバ側開発を抽象化する上で、ひとつのクラウドプロバイダにサービスを特定する必要はない、とNick Gottieb氏は指摘する。LumingoのデベロッパアドボケートでAWSサーバレスヒーロのYan Cui氏は指摘するように、スローダウンのリスクが極めて重大な開発者もいるのだ。

(クラウドを特定しないソリューションを構築している間に)競合他社が先に市場に参入して、より速いイテレーションを実現してしまえば、Amazonにロックアウトされるよりも前に、市場セクタから締め出される結果になるでしょう。

この記事に星をつける

おすすめ度
スタイル

BT