Let’s go over the functional requirements again.
There are obvious and less obvious reasons for what they need.
The application will be used from a web browser on a PC/laptop or a mobile device. This means that the user interface should be responsive and lightweight, with an API backend for handling backend tasks.
We need an API to provide data to the web application.
Primary users of this application will be non-profits and NGOs with tight budgets. Ideally they will pay for the application hosting only when the application is used.
We need cloud services with the pay-as-you-go model. Serverless offerings from AWS offer just that.
Serverless technologies allow us to build and deploy our applications quickly and not worry about software patches, security settings or capacity because someone else takes care of all that.
Another great benefit is the pay-as-you-go model - if there is no application usage your hosting costs may be 0 euros. But, if you misjudge application usage patterns your serverless app can go from very cheap to very expensive in a matter of minutes.
When we talk about serverless technologies, most people think of AWS Lambda, but serverless landscape is so much more - AWS S3 is a serverless service for blob storage, SQS is a serverless messaging queue, Lambda is a serverless compute engine and so on.
There are servers in serverless of course. To paraphrase an AWS Serverless Hero Slobodan Stojanovic:
Serverless is without servers in the same way that WIFI is without wires.
Having a tight budget or volunteer workforce pushes us in the direction of using widely accepted and popular tools and services so that people capable of using them are not hard to find or it is not difficult to train them.
We need a simple yet powerful programming language. Python is the right fit here without question.
Because this workshop was created for PyCon Italia.
Also, because Python is a first-class citizen on AWS with many tools, services, drivers and workshops available. You can do: