Functional requirements

Let’s go over the functional requirements again.

Client requested

  • Web based application
  • Incurs little to no cost when unused
  • Does not need a big team of people to maintain it - ideally volunteers can do it

There are obvious and less obvious reasons for what they need.

Client requirements, distilled

Web based

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.

Incurs little to no cost when unused

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.

Does not need a big team of people to maintain it

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.

Why Python?

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: