Guilherme Sesterheim
2 min readJun 9, 2021

@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

Docker, Containers Orchestration and Public Key Infrastructure (PKI)

The content

How the stack of software components used to run an application got more and more complex when compared to past years.

In past years a huge number of web applications used to run on top of LAMP (Linux, Apache, MySQL, and PHP/Pearl). Nowadays we have several different possible approaches for each one of the layers of this acronym.

Containers are the most recent evolution we have for running our apps. They followed these steps:

  1. The dark age: undergoing painful moments to run your app on a new machine (probably using more time to run the app than actually writing it).
  2. Virtualizing (using VMs) to run our apps, but having the trade-off of VMs’ slowness.
  3. Containers — They are a lightweight solution that allows us to write our code in any operating system and then rerun it easily in another operating system.

The difference between Virtual Machines and Docker:

  • Virtual Machines = Applications + Libraries + Operating System.
  • Docker = Applications + Libraries.

The analogy between the evolution of how humanity solved the problem of transporting goods across the globe using containers (real and physical containers) compared to how software developers used the containers abstraction to make our lives way easier when trying to run an application for the first time.

Kubernetes is introduced and the benefits approached:

  • Less work for DevOps teams.
  • Easy to collect metrics.
  • Automation of several tasks like metrics collecting, scaling, monitoring, etc.

Public key infrastructure:

  • More and more needed interaction machine-to-machine requires more sophisticated methods of authentication rather than user and password.
  • Private and public keys are used to hash and encrypt/decrypt messages and communications.

Exercises and Assignments

Exercise 1: Running a simple node app with docker (building and running the app)


  1. Build a docker image
  2. Publish it to dockerhub.com
  3. Run a local ghost blog using docker
  4. Publish a sample post


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



Guilherme Sesterheim

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