Story of Contenment Info Systems
- Contenment info Systems develop applications for Car Manufactures for CRM (Customer Relationship Management)
- The following are the users of the applications
- Car Dealers
- Car Manufacturers
- Car Owners
- Car Technicians
- Car Service Advisors
- Car Sales Advisors
- Contenment Car Care (C3) is the Product Name.
- Architecture of the application looks as shown below
- Customers of C3 are
- Customers have different virtual environments where c3 has to be deployed
- The application space where c3 is operating is highly competitive, so to keep up to market, lots of new features are added and Contenment info Systems has signed a deal for deploying applications on customer environments for free with zero down time.
- How Can Contenment info Systems solve this?
- They have following teams
- Customer Specific Project Manager:
- Benz: Annie
- Tesla: Anthony
- Ferrari: Andrew
- BMW: Alica
- Architecture Team: Beckham
- Implementation team
- Developers
- Testers
- DevOps
- Customer Specific Project Manager:
- There are two major problems in deploying applications quickly
- Freqeunt releases with zero downtime commitment
- Different Customer Environments
- Web Server Deployment Steps
- Ensure the Operating System is Linux
- Install a nginx/apache server
- Deploy the application package on webserver installed
- Contenment Info Systems has the following possible ways of deploying applications
- Manual Approach
- Ad-hoc scripts (Shell/Powershell)
- Create a script in any scripting language of choice (shell/powershell/python)
- Scripts are procedural (What has to be done & How it has to be done)
- Pros:
- This is straight forward
- Cons:
- Changes are difficult to handle as the we might end up rewriting
- Maintainability & Readability will be impacted
- Examples: Shell, Powershell, Perl, Python Scripts
- Configuration Management tools
- They are declarative in Nature
- Here we tell what we want
- Examples:
- Ansible
- Chef
- Salt Stack
- Puppet
- Powershell DSC
- Server Templating Tools
- We create a virtual machine image with the application installed
- Examples: Packer
- Provisioning Tools:
- All of the above approaches speak about deploying applications on the server. whereas provisioning tools work on creating servers and then calling adhoc scripts or configuration management to deploy application.
- Provisioning tools in the case of Contenment Info Systems Can create the below on almost any virtual platform
- Network
- Storage
- Virtual Machines
- DB layers
- Each Vendor has their own provisioning tool
- AWS => Cloudformation
- Azure => ARM Templates
- OpenStack => Heat
- Google => Google Cloud Deployment Manager
- Terraform is a provisioning tool which can work with literally any virtual platform.
- The Choice for Contenment Info Systems for creating infra would be terraform
- Now DevOps Team of C3 have to create infrastructure using terraform.
How to be effecient with Infra Provisioning
- Before automating the scenario using tools like terraform try to create the infra manually on the virtual target platform