What is DevOps?
In the past there were silos of development teams and operations teams. The communication was minimal. And the product deployment was handed over to the Ops team. This meant the development cycles were longer and took longer to fix, resolve, and deploy builds. The main problems were:
- Development and Operations were silos
- Process Impedance mismatch between Development and Operation – different processes.
- Disconnect between Operations and Development
- “Change” is a fact of business and was not recognized
With the advent of Web, Cloud, distributed teams, and literally hundreds of thousands users; the development paradigm had to change and had to overcome the problems described above. The motivation was to:
- Release Applications faster with small changes
- Automate releases
- Continuous development
- Accept Change as a constant
To accomplish this, the operations and development team had to work together. The silos had to vanish. and the releases had to be stable. With Continuous development and frequent stable releases, there were tremendous business benefits:
- Faster to Market
- Continuous changes based on Customer Feedback
- A/B testing that could be measured
Moogilu as a company not only builds products but hosts them and supports 24×7. We adopted DevOps approach 4 years ago to support customers and get the products to market faster. All our projects follow the DevOps approach to building products.
DevOps Life Cycle
To better understand DevOps, it is best to view the entire Life Cycle – the steps are as shown below. DevOps starts from Checking in Code all the way to Deployment.
- Check in Code
- Build and deploy to Dev
- Run Tests – developer unit tests
- Build to Staging
- Run Tests – functional, integration, performance, and load
- Run Tests – error simulation
- Database Changes (be ready for roll back)
- Deploy and Release – Local users
- Smoke Tests
- Rollback if errors
- Deploy and Release to all Users
- Save the entire Configuration, Code, and artefacts with Release Version/Build
- Backup the Release Tree
DevOps Best Practice?
For DevOps to be successful, repeating tasks have to be automated. And the steps of DevOps that can be automated include:
- Deployment – Dev, Staging, Production
- Most Tests
- Application and System Metrics
- Share Metrics – capacity planning, performance, trends
- Provide critical access to development as needed
- Work as a team
- Continuous Feedback
Moogilu DevOps Solution
Moogilu is a complete solution provider – concept, architecture, coding, testing, deployment, and support. The business model has necessitated adoption of DevOps methodology for all our customer product development. We can also provide DevOps services.
There are a lots of tools to build and deploy. At Moogilu, we limit the tools so that tools do not block the progress of product development. We follow a minimalistic approach to use the minimal toolkit to automate and get the job done. All our build and deployment scripts are automated. And we have moved to Containers to make the deployment faster and stable across multiple cloud providers. Most of our API’s are tested automatically and some of the tests are automated.
Our entire infrastructure is monitored using Nagios and Cacti. Ganglia is used to monitor Clusters. To provide more insight into infrastructure, we run Vertex for real-time data and Monitorix for average loads. Here below are the list of tools commonly used:
- Shell Scripts