4. Containers. Containers offer portability and consistency across environments. It’s simple to containerize a microservice. Container images combine code, dependencies, and runtime into one package. The images go in a container registry, which acts as a library or repository. Registries can live on your development computer, your data center, or the cloud.
5. Backing services. Cloud-native systems depend upon many ancillary resources known as backing services. These resources include security services, analytics, distributed caching, message brokers, relational and document databases, streaming and storage services, and monitoring.
6. Automation. You can automate platform deployment and application provisioning with infrastructure as code. Software engineering practices like testing and versioning are applied to DevOps. Deployments and infrastructure are automated, consistent, and repeatable.