Saturday, January 19, 2019

DevOps Introduction


DevOps is a software engineering culture and practice that aims at unifying software development (Dev) and software operation (Ops).

 The main characteristic of the DevOps movement is to strongly advocate automation and monitoring at all steps of software construction, from integration, testing, releasing to deployment and infrastructure management. '

DevOps aims at shorter development cycles, increased deployment frequency, and more dependable releases, in close alignment with business objectives.




Definition: - "DevOps is a set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality".

Toolchains:
As DevOps is intended to be a cross-functional mode of working, rather than a single DevOps tool there are sets (or "toolchains") of multiple tools. Such DevOps tools are expected to fit into one or more of these categories, reflective of key aspects of the development and delivery process:



  1. Code — code development and review, source code management tools, code merging
  2. Build — continuous integration tools, build status
  3. Test — continuous testing tools that provide feedback on business risks
  4. Package — artifact repository, application pre-deployment staging
  5. Release — change management, release approvals, release automation
  6. Configure — infrastructure configuration and management, Infrastructure as Code tools
  7. Monitor — applications performance monitoring, end-user experience

Note that there exist different interpretations of the DevOps toolchain (e.g. Plan, Create, Verify, Package, Release, Configure, and Monitor).

DevOps Lifecycle


DevOps is deep integration between development and operations. Understanding DevOps is not possible without knowing DevOps lifecycle.


Here is brief information about the Continuous DevOps life-cycle:



1. Development

In this DevOps stage, the development of software takes place constantly. In this phase, the entire development process is separated into small development cycles. This benefits DevOps team to speed up software development and delivery process.


2. Testing

QA team use tools like Selenium to identify and fix bugs in the new piece of code.


3. Integration

In this stage, new functionality is integrated with the prevailing code, and testing takes place. Continuous development is only possible due to continuous integration and testing.


4. Deployment

In this phase, the deployment process takes place continuously. It is performed in such a manner that any changes made any time in the code, should not affect the functioning of high traffic website.


5. Monitoring

In this phase, the operation team will take care of the inappropriate system behavior or bugs which are found in production.