Curious Case of DirectDevOps (A fictious Organization)
- DirectDevOps Organization has an ecommerce product. The application looks as shown below

- Now we have Rachel who heads development & QA Operations for ddcommerce & John who leads the IT Operations & is responsible for deploying ddcommerce

John’s (Ops Teams) Activities
- ddcommerce as an organization gives every day release to testing team and they make production updates twice an month
- QA Process
- Unit Testing
- System Testing (Automated & Manual)
- Performance Testing
- UAT Testing
- John’s team need to create the following environments
- Every day
- Unit Testing Environment
- System Testing Environment
- Performance Testing Environment
- Every Week:
- UAT Environment
- Every 15 days
- Production Environment
- Every day
OPtions for John
- Manual Creation:
- Every day John assigning work to members of his team to install the applications manually before 8 AM, so that testing can be done to create 3 environments every day
- Is this scalable? => Big no
- Minimizing work
- In John’s team we have Ravi who is good as shell scripting
- So Ravi started automating the activities by writing shell scripts to simply execute a script on every server and the deployment will be done
- Challenge: Ravi is on leave & he is expert in shell & other members are finding it difficult to fix problems & till Ravi is back from leave, they do manual deployments
- Shell scripts are procedural
- Is this scalable? => No
- Solution:
- If john’s team can automate the deployment using simple way which any member of his team can fix and once the code is ready if this automation will be called automatically.
- This automation should be declarative

- This is exactly where configuration management(CM) fits in. There are many tools do to CM
- Ansible
- Chef
- Puppet
- Salt
- Powershell DSC
- CF Engine
- To the CM tools you will always express the desired state
Ensure apache server is installed Ensure apache service is running
Configuration Management
- In Configuration Management, we have two kinds of systems
- CM Server:
- Where CM is installed
- Node
- Where you want deployments to happen
- CM Server:
- There are two models in configuration management
- PULL-Based CM

- PUSH-Based CM

- PULL-Based CM
