Serverless technologies, also known as FaaS (Function as a Service), are promoted as solutions that provide dynamic scalability, speed of development, cost-per-consumption model, and the ability to focus on the code while taking attention away from the infrastructure that is managed by the vendor. A microservices architecture is defined by the interaction and management of the application state by several independent services, each with a well-defined domain. When implementing software architectures based on microservices, there are several decisions to take about the technologies and the possibility of adopting Serverless. In this study, we implement 9 prototypes of the same microservice application using different technologies. Some architectural decisions and their impact on the performance and cost of the result obtained are analysed. We use Amazon Web Services and start with an application that uses a more traditional deployment environment (Kubernetes) and migration to a serverless architecture is performed by combining and analysing the impact (both cost and performance) of the use of different technologies such as AWS ECS Fargate, AWS Lambda, DynamoDB or DocumentDB.
翻译:无服务器技术(即函数即服务,FaaS)被推崇为能够提供动态可扩展性、开发速度、按消费付费模式,以及专注于代码开发而将基础设施管理交由供应商负责的解决方案。微服务架构通过多个独立服务(每个服务具有明确定义的领域)的交互与应用状态管理来定义。在实施基于微服务的软件架构时,需要就技术选择及采用无服务器架构的可能性做出多项决策。本研究采用不同技术实现了同一微服务应用的9个原型,分析了部分架构决策对最终结果性能与成本的影响。我们使用亚马逊云服务(AWS),从基于传统部署环境(Kubernetes)的应用开始,通过结合并分析AWS ECS Fargate、AWS Lambda、DynamoDB及DocumentDB等不同技术带来的影响(包括成本与性能),逐步迁移至无服务器架构。