Nowadays, AWS Lambda and API Gateway are one of the most important and widely used services to build a serverless application. During development, we often need to create several deployment environments such as development, stage or production.
Amazon API Gateway is an AWS service where we can create, publish, maintain, monitor, and secure REST APIs at any scale. It is one of the key services to build serverless applications or invoke backend services such as AWS Lambda, Amazon Kinesis, or an HTTP endpoint based on message content.
Amazon S3 is one of the most used cloud object storage built to store and retrieve any amount of data from anywhere – websites and mobile apps, corporate applications, and data from IoT sensors or devices.
pyenv lets us to easily switch between multiple versions of Python. It allows to change the global Python version on a per-user basis, provides support for per-project Python versions. Also, it allows overriding the Python version with an environment variable.
Flask is one of the most popular micro web framework written in Python. It is classified as a microframework because it does not require particular tools or libraries. It is designed to make getting started quick and easy, with the ability to scale up to complex applications.
Redis is an open source, in-memory data structure store, used as a database, cache and message broker. It is known for its flexibility, performance, and wide language support. That is why it is commonly used as a message broker for celery.
In a production environment where our Django application is running as a service, often it becomes difficult to debug any errors without the console log. Of course, there are many solutions out there to tackle this problem like looking into nginx log, creating custom methods to get error logs or send email to admins when an error occurs which requires writing many lines of code.
Django comes with authentication system out-of-the-box. But it may not be good enough for most common cases. For example, Django uses the username/email/password pattern for both signup and login. However, these days it is more common to simply use email/password.
Firebase Cloud Messaging (FCM) is a cross-platform messaging solution that lets us reliably deliver messages at no cost. Using FCM, we can send notification messages that are displayed to the user, or send data messages and determine completely what happens in the application code.
Firebase Realtime Database is a NoSQL cloud-hosted database. Data is stored as JSON and synchronized in realtime to every connected client. Using Firebase Admin SDK, we can read and write Realtime Database data with full admin privileges, or limited privileges.