Microservices Overview

Objective

This Learning Lab should give you a basic understanding of microservices, containers, and cloud native applications.

Completion time: 40 minutes

Audience

  • DevOps engineers
  • Application developers

Considerations of Cloud Native applications

With the significant adoption of public and private cloud technologies, largely driven by developer adoption, the infrastructure and shape of a "cloud native" application is emerging. From an infrastructure standpoint, developers expect:

  • The ability to access compute and storage in an on-demand manner
  • To be able to deploy continuously to production
  • To use feature flags to enable and disable application functionality
  • To have the ability to measure many aspects of the application and user behaviour

To shape an application, developers should follow the guidelines shown in the "12 Factor App." These factors are very important when delivering a cloud native application, and considered the "gold standard" for Cloud Native application design.

12 Factor app

  • I. Codebase: One codebase tracked in revision control, many deploys
  • II. Dependencies: Explicitly declare and isolate dependencies
  • III. Config: Store config in the environment
  • IV. Backing services: Treat backing services as attached resources
  • V. Build, release, run: Strictly separate build and run stages
  • VI. Processes: Execute the app as one or more stateless processes
  • VII. Port binding: Export services via port binding
  • VIII. Concurrency: Scale out via the process model
  • IX. Disposability: Maximize robustness with fast startup and graceful shutdown
  • X. Dev/prod parity: Keep development, staging, and production as similar as possible
  • XI. Logs: Treat logs as event streams
  • XII. Admin processes: Run admin/management tasks as one-off processes