“It is not the strongest of the species that survive, nor the most intelligent, but the one most responsive to change.” — Charles Darwin

“DevOps is a set of practice that seeks to reduce the gap between software development and software operation.”


Use Cloud and DevOps to build immutable infrastructure by agile development using collaborative open source tools:
-Terraform or Cloud Formation for infrastructure provisioning and scaling.
-Packer for building server images or containers using:
-chef cookbooks, puppet modules or ansible playbooks to build servers.

Methodology

"We used to design infrastructures that support applications. We are now developing new applications that support the cloud platforms".

Build infrastructure and applications in an immutable fashion:

Infrastructure as Code
Use Terraform , or AWS Cloudformation for provisioning and scaling of infrastructure components.
(Use library modules from the terraform registry)

Configuration Management
Build immutable infra VM or Docker image using Packer via ansible, puppet, chef, salt, bash, powershell or just dockerfile.
(Use library modules from ansible galaxy or puppetforge)
(For large projects create a standard base VM or docker image that has all the standard software required for each server)

Application Deployment
Use a CI Toos like Jenkins to create a pipeline to take the application artifact (be in a zip file or Docker image) through the different environments like dev, test, staging, preprod, prod.

Source Control
Use a git branch strategy and feature branches named after JIRA tickets.
Use a git tagging strategy to drive the pipeline.

References
    A Plea for Idempotence and Immutability
    Chef: Patterns and Anti-Patterns for Cookbooks, Environments, Roles

0 comments:

Post a Comment