DevOps – Configuration Management

Configuration management is the management of the configuration of all environments for an application.

Both Infrastructure as Code (IaC) and configuration as code fall under configuration management, and both relate to defining or scripting for environments:

  • IaC – entails defining environments as a text file (script or definition) that is checked into version control and used as the base source for creating or updating those environments.
  • Configuration as code – define the configuration of your servers, code, and other resources as a text file (script or definition) that is checked into version control and used as the base source for creating or updating those configurations.

SaltStack or Ansible in CI/CD accelerates configuration management and deployment.

Benefits of configuration management:

  1. more maintainable
  2. Fewer locations to update
  3. Fewer mistakes
  4. More secure
  5. More reliable

DevOps

Best definition of DevOps –  the union of people, process, and products to enable continuous delivery of value to our end users. What is DevOps – Donovan Brown

Core values of DevOps:

  • collaboration across a multidisciplinary team with a common goal, common metrics, common notion of improvement and they need to work together as one
  • process focus on more value and less waste (remove manual handoffs, delays waiting times) and doing more for the end users
  • tooling – provides automation, eliminates rework, eliminates mistakes and get feedback

observeorientdecideand act

  • focus on the velocity of this loop

To be stable and reliable you don’t need to move slower but you need to build resilience into your systems and you need to get used to do changes more frequently.

The role of an IT Manager is critical in a DevOps mindset. There is need for a middle layer that translates business needs on the execution ground.

One of the core values of DevOps is a shortened release cycle.

DevOps practices:

  1. Configuration management
    • what we are deploying, how we are deploying it, what is the configuration of what is going into production
  2. Release management
    • how to build a release pipeline that we can trust
  3. Continuous integration
    • testing the code, compile it at every single check-in
  4. Continuous deployment
    • getting it out in a testing environment at a very least,
  5. Application performance monitoring
    • production monitoring and getting performance error and usage information
  6. Test automation
    • automate all types of test (deployment, integration, user experience, UI)
  7. Infrastructure as code
    • when we deploy the code we have a related infrastructure and that infrastructure is checked in the version control as well

DevOps habits: – help drive the right culture

  1. Team autonomy and enterprise alignement
  2. Rigorous management of technical debt
    • take time in the schedule and reduce it
  3. Focus on flow of customer value
    • a mindshift for development and operations
    • dev+tester+it – gets first piece of feedback when the customer uses that feature
  4. Evidence gathered in production
    • when looking in production try to figure out new ways of doing things – it could lead to a hypothesis driven development
  5. Live site culture
    • there is no place like production
  6. Managing infrastracture as a flexible resource