DevOps processes are ingrained with automation techniques that provide rapid feedback, repeatable processes, and consistent creation of business application systems. With the convergence of multiple systems and IT professionals all focusing on the delivery of these applications, these processes quickly become complex and can seem daunting to implement for the first time.
Cognizance Technologies (CT) has developed best practices for automating the delivery process, including:
- Developing reusable pipeline steps and functions
- Code analysis
- Unit testing and test coverage
- Gates and approvals
- Build strategies
- Deployment strategies
Continuous Integration / Continuous Delivery
Continuous integration is naturally facilitated by our DevOps approach. Every time code is checked into the source code repository, it is automatically retrieved, compiled, and built by a build server (tools like TravisCI or Jenkins); and then the results are sent to the team. Build/Integration services proceed to run a full suite of automated tests, reporting results to the team. CodeClimate (an open source static analysis tool) automatically performs static code analysis, identifying potential issues and ensuring test coverage.
We build systems to support the automatic deployment of software, which can be performed in a continuous manner by a tool like TravisCI, on demand through Ansible, or via command-line by the DevOps engineer. This is enabled by cloud services to quickly stand up and tear down infrastructure, Vagrant for quickly creating and destroying environments, virtual environments based on Docker, and automated configuration with Chef.
Continuous Operations and Maintenance (O&M)
Our team operates all production systems to be highly resilient, supporting continuous replication and failover. We leverage modern monitoring tools like Sensu and Flapjack to track all aspects of the system, roll up failures into useful messages, and provide immediate notifications, as well as New Relic APM to provide real-time metrics of production systems.