It is an inevitable set of practices using tools to shorten the code development life cycle , especially in an agile environment
Developer Team: Developer’s task gets completed once the code is unit tested and checked into the repository.
Operations Team:The primary task of the operations team is to get the code from the code base, deploy the code with the environment specific configurations and ensure that the program serves its purpose.
Developers focused on nothing more than code and operations focused on taking that code and making sure it stayed running. The disconnect between these two groups led to long QA cycles and infrequent production deployments for fear of downtime or breaking something.
To avoid the above scenario, Devops team has been introduced. Initially it's a bridge team between development and operations.Usually 2 or 3 members of the Ops team will work as Devops team who will be taking care of deployments via automation scripts running in dedicated build servers.
DevOps process components:
A software repository is the centralized place where the developer checks in or stores the code.
Build and Automation tools:
Build and Automation tools are used to package the application into a deployable archive.
Similar to the repository, artifactory is a cloud base binary repository management to store deployable archives with version control.
Unit Testing Tools:
Unit Testing tools are the testing framework used to perform the module wise testing of the codes. This codes can be embedded in the actual code and can set as a deployment goal in Maven build.For example; if the test cases are failed,maven build will get failed and won't create the deployable archive.
Integration Testing Tools:
These are api testing specific tools to trigger the request and verify the response.There are provisions to create a test suite which will have a set of test cases and will generate a report post execution of the script. Integration of these scripts in Devops process will eliminate the effort of SmokeTesting while promoting the code to a higher environment.
It can be Standalone Servers , Container Management Systems , Cloud based Servers.Stand alone servers are normal servers[Windows/Linux/Mac..etc] in which it has to be maintained with runtime of the respective application and that has to be managed explicitly.
A container is a standard way to package your application's code and associated dependencies and configurations into a virtual container. They help solve the problem of moving software from one computing environment or operating system (OS) to another. The container serves as a self isolated unit that can run anywhere that supports it. Regardless if the host OS is UNIX or non-UNIX, the container will specify what OS will be used internally by the container.
Cloud based Servers are the one that are available virtual servers that can be accessed using credentials with different subscription modes. The main advantage of cloud based servers are there is no need to keep any team for maintaining the servers.
Continuous Integration Platforms:
All the above components can be orchestrated which enables the continuous deployment and delivery of the code can be performed using the various Integration platforms. There are a lot of features like branch based deployment, tag based deployment, release based deployment. Based on the scope of deployment and the versioning strategies required; Devops processes can be orchestrated using these Integration platforms.