“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 practices that seeks to reduce the gap between software development and software operation.”

Methodology

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

  • Think of devops as a workflow of tools.
  • Make sure the tools are loosely coupled so they can be changed easily.
Devops consists of 2 parts: infrastructure as code, and deployment pipelines.

INFRASTRUCTURE AS CODE CONSISTS OF 2 PARTS

  • Orchestrating the Infrastructure (ie defining network, security etc) - Terraform is a good choice. Build it in layers.
  • Configuring Individual Servers. are you going to do immutable or mutable? use packer? use docker containers? use a config tool like Ansible, chef, puppet or salt?
  • Both of these need to be stored in Git Repositories. I would start simply with a develop and master branch.

DEPLOYMENT PIPELINES

  • Typically devs use a CI tool like Jenkins to create their pipelines.
  • What is the deployable artifact? - zip file, jar file, or docker container.
  • Where will the artifact be stored? - S3, Artifactory, Dockerhub.
  • What is the version number strategy for the deployable artifact? - it should end in a build number that increments each build.
  • The output of the build stage of pipeline is a deployable artifact.
  • Other stages in the pipelines take the artifact through test, qa, uat and production.
  • 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
    Code wise cloud foolish avoiding bad technology choices

0 comments:

Post a Comment