7 Building a scheduling service for ad hoc tasks

 

This chapter covers

  • Approaching architectural decisions when faced with a novel problem
  • Defining nonfunctional requirements
  • Choosing the right AWS service to satisfy nonfunctional requirements
  • Combining different AWS services

With serverless technologies, you can build scalable and resilient applications quickly by offloading infrastructure responsibilities to AWS. Doing so allows you to focus on the needs of your customers and your business. Ideally, all the code you write is directly attributed to features that differentiate your business and add value for your customers.

What this means in practice is that you use many managed services instead of building and running your own. For example, instead of running a cluster of RabbitMQ servers on EC2, you use Amazon Simple Queue Service (SQS). Throughout the course of this book, you have also read about other AWS services such as DynamoDB and Step Functions.

Therefore, an important skill is to be able to analyze the nonfunctional requirements of a system and choose the correct AWS service to work with. But the AWS ecosystem is enormous and consists of a huge number of different services. Many of these services overlap in their use cases but have different operational constraints and scaling characteristics. For example, to add a queue between two Lambda functions to decouple them, you can use any of the following services:

7.1 Defining nonfunctional requirements

7.2 Cron job with EventBridge

7.2.1 Your scores

7.2.2 Our scores

7.2.3 Tweaking the solution

7.2.4 Final thoughts

7.3 DynamoDB TTL

7.3.1 Your scores

7.3.2 Our scores

7.3.3 Final thoughts

7.4 Step Functions

7.4.1 Your scores

7.4.2 Our scores