00 - Containers and Orchestration

Containers

Containers are application-centric methods to deliver high-performing, scalable applications on any infrastructure of your choice. Containers are best suited to deliver microservices by providing portable, isolated virtual environments for applications to run without interference from other running applications.

Microservices

Microservices are lightweight applications written in various modern programming languages, with specific dependencies, libraries and environmental requirements. To ensure that an application has everything it needs to run successfully it is packaged together with its dependencies.

Container Orchestration

Container orchestrators are tools which group systems together to form clusters where containers’ deployment and management is automated at scale while meeting following requirements.

  • Fault-tolerance
  • On-demand scalability
  • Optimal resource usage
  • Auto-discovery to automatically discover and communicate with each other
  • Accessibility from the outside world
  • Seamless updates/rollbacks without any downtime.

Container Orchestrators

  • Amazon Elastic Container Service
  • Azure Container Instances
  • Azure Service Fabric
  • Kubernetes
  • Marathon
  • Nomad
  • Docker Swarm