Story of Learning Thoughts – Application Deployments
- Learning Thoughts (a ficticious organization) is working on different projects in the following domains
- Health Care
- iCare:
- developed in Java and is to be deployed on Linux based Systems
- Database: Postgres
- radCare:
- developed in .net and is to be deployed on Windows Servers
- SQL Server Database
- iCare:
- Fintech
- personal-fin:
- Java backend
- Andrioid Frontends
- ios Frontends
- Mongodb
- Stock-watch:
- Python backend
- Andriod
- IOS
- Angualar
- Database: Oracle
- personal-fin:
- eCommerce
- lt-commerce:
- Developed in python Django
- Database is mysql
- lt-commerce:
- CRM (Customer Relationship Management)
- lt-crm
- Developed in python flask
- Andriod
- ios
- Database is mysql and Mongodb
- lt-crm
- HRMS (Human Resource Management Systems)
- Lt-HRMS
- Developed in PHP
- Deployed in Linux on Apache Servers
- Database is mysql
- Lt-HRMS
- Health Care
- Learning Thoughts Deployment Process
- Each application will have following environments (6)
- Developer Environment
- Testing
- System Testing
- Functionality Testing
- Performance Testing
- UAT (User Acceptance Testing/Pre-Production)
- Production
- Release-Frequency
- Every day the changes made by developers in the code needs to be deployed to Developer Environment, Functionality Testing and System Testing
- Performance Testing Environment & UAT Env will be updated once in a week
- Production env will be updated once in two weeks
- Each application will have following environments (6)
- Lets get the team introduced
- Mike: Expert in linux and shell scripting
- Mitch: Expert in Windows, Powershell and SQL Server
- Mark: Expert in Databases
- Stacy: The manager

- Are these 3 people enough for creating/maintaining six environments per project?
- No, We have a junior team who help in creating/maintaining six environemts

- No, We have a junior team who help in creating/maintaining six environemts
- Can we manually deploy applications with this team?
- No, we need some kind of automation.
- We have experts (Mike, Mitch, Mark) who can create complex scripts to deploy applications. Can we use that?
- No, bcoz junior team has work on executing and fixing scripts, Complex scripts can be difficult to manage.
- Would it be better if the scripts have
- how the application has to be deployed?
- what has to deployed?
- It would be easier if the script written describes what has to be done?
- Lets call what has to be done as desired state
- So we need a way to describe a desired state and when we run the script it should ensure desired state is maintained
- To maintain a desired state we need tools which are intelligent, scripts (shell/powershell) will not be enough
- Exactly this is where Configuration Management (CM) comes into play. In CM we would have a tool intelligent to maintain desired state.
- Lets see how the CM tools work

Exercise
- To Get Some idea about devops watch 1-7 videos Refer Here
