@MIT series is a group of articles being written to describe my learning path attending to the Cloud & DevOps: Continuous Transformation at the MIT.

This article at a glance — TL;DR

The content

Serverless computing is a Cloud-based solution for a new computing execution model in which the manager of the server architecture and the application developers are distinctly divided. A frictionless connection exists in that the application does not need to know what is being run or provisioned on it; in the same way that the architecture does not need to know what is being run.

The journey that led us to serverless (image below).

A true microservice:

  1. Does not share data structure and database schema
  2. Does not share internal representation of objects
  3. You must be able to update it without notifying the team

Serverless implications:

  1. Your functions become Stateless: you have to assume your function will always run a new recently deployed container.
  2. Cold starts: since every time your function will run in a new container, you have to expect some latency for the container to be spun up. After the first execution, the container is kept for a while, and then the call will become a “warm start”.

Serverless pros:

  1. Cloud provider takes care of most back-end services
  2. Autoscaling of services
  3. Pay as you go and for what you use
  4. Many aspects of security provided by cloud provider
  5. Patching and library updates
  6. Software services, such as user identity, chatbots, storage, messaging, etc
  7. Shorter lead times

Serverless cons:

  1. Managing state is difficult (leads to difficult debug)
  2. Complex message routing and event propagation (harder to track bugs)
  3. Higher latency for some services
  4. Vendor lock-in

More on serverless: https://hackernoon.com/what-is-serverless-architecture-what-are-its-pros-and-cons-cc4b804022e9

Exercises and Assignments

  • Assignment: Deploy an existing application to AWS using Lambda and DynamoDB to show a Pacman Game. A few screenshots below:


All the resources used to reach the results above are stored in this GitHub repository: https://github.com/guisesterheim/MITCloudAndDevOps

Sharing experiences on IT subjects. Working for AWS. DevOps, Kubernetes, Microservices, Terraform, Ansible, and Java