I think it is worth touching on the topic of microservices a little. Microservices are very closely related to Serverless architecture, and most Serverless applications will use a microservice approach.

Traditional software is monolithic, which means all functionality is in one package of code. In well-designed applications, functions, data, and design are separated from each other in layers, but there is not much separation between these layers. All layers are part of the same code, and they are still dependent on each other.

A big problem in many legacy applications is that errors occur in another area when you fix one section of the code. This also negatively affects testing since with each change made, it becomes necessary to test the entire application to ensure that nothing was broken – this is called regression testing, and it takes a lot of time.

Microservices are the opposite of this. They allow you to split all the application functions into independent mini-applications, where each one performs its tasks independently. The significant advantage is that they can work together or separately.

In a Serverless application, microservices are used as the intelligence of the solution. This includes coding, machine learning, data transformation and processing, mathematical equations, reading and writing files, and other operations.

A Serverless solution can integrate many of the cloud’s managed services. This is where microservices can help move data between different services to achieve a specific result.

From a project management perspective, the advantage of microservices is that you have multiple smaller projects that are easier to evaluate than one large, unpredictable project. Each of these microservices can have its plan, budget, the timeline for one or more developers working on that particular microservice.

You can do much concurrent development with multiple developers working on various microservices because each is independent and can be independently tested and deployed. You can limit latency and increase productivity if planned well.

An example would be a microservice that uploads a video file to a transcoding service, which extracts audio.

Then a second microservice will take that sound and pass it on to the decryption service, which converts the sound to text.

Finally, the last microservice converts the text into subtitles that can be used with the original video file.

You can find more information about serverless and microservices in the book by following the link.