Enterprise architects considering the K8s ecosystem for tools and architecture quickly recognize that the widest possible choices to develop microservices-based applications that fit well into a CI/CD model are available in the community. This blogpost considers the key requirements for CI/CD methodologies. Well planned transformations ensure that tools, platforms, and methodologies are all standardized across various development teams.
Key requirements include,
- Given the scale of most enterprise applications, multiple teams need to work on a given codebase with centralized release management. Different teams work on the user interface, the domain model, business functionality, etc. The methodology needs to support multi-tenancy from a development team standpoint
- Need to support polyglot language and database development
- Need to support Independent load & performance testing
- Support application versioning and rollback
- Support traffic shaping and independent updates for both enterprise and edge applications
While there are many patterns applicable to the challenge – the below DevOps methodology is one possible best practice pattern that is predicated on immutable principles.
Key Tenets –
- Adopting Kubernetes as the standard makes applications portable and cloud-platform independent for enterprises.
- Adopting Docker containers makes it extremely easy to enforce immutability and platform independence. The contract between developers becomes the container.
- K8s provides inbuilt support for load balancing using the Ingress concept
- Easier deployment flexibility. With Kubernetes support for stateful applications such as StatefulSets, and ReplicaSets. Rolling updates & green/blue deployments becomes very easy.
- The CI/CD process is more optimized with Docker and Kubernetes components using technology such as
- Helm charts which provide a high degree of reliability
- Using the notion of GitOps, rollback/roll forward becomes easier
- Using an application catalog for commonly used runtimes
- Using Service Mesh technology (Istio/AWS AppMesh) makes interactions between microservices much easier while providing capabilities such as Service Discovery, encrypted inter-service communication, load balancing, etc
- Built-in monitoring leveraging Prometheus.
While the above tenets hold true in a generic open-source implementation, leading cloud providers such as AWS provide a flexible set of platforms that enable enterprises to rapidly build and deliver applications using all of the above DevOps principles. These services span everything from software release management, provisioning, code deployment, and end-to-end automation. The next post will be an infographic that describes this pattern using primitives provided by the AWS Cloud.