Let start to understand the DevOps, DevOps is a software development methodology in which involves software Development and IT operations like continues development, Continues Build, Continuous testing, continuous integration, Continues Delivery and continuous monitoring throughout the end-to-end software development.
most of the software Development companies are using the this process to developed product to reduce development time and also provide tested products to customers.
there are several stages of DevOps:
Version Control: its help to manage code, its help during the multiple developer work on project. so with the help of source control we can check which developer commit code on server and also if required we can refer old code through the code version. let suppose one developer commit code on server and due to this some other functionality stop working, that time SC help us to identify which developer commit code on server what code developer commit on server and we can analysis code and remove or update code which generate the error on system. some popular source controls are Git, SVN, TFS etc.
Continues Integration: with the help of CI we can build application continues, it means when developer developed code and push on source control then continues build pull code and perform operation like compile code, validate code, code review, unit testing and integration testing.
Continues Delivery: with the help continues delivery code deploy code on test server and performing UAT with the help of tools like selenium.
Continues Deployment: Once the application tested its deployed on production server to release using the tools like Docker,Puppet etc and monitor application through the tools like Splunk and similar, some companies deploy application after approval is call continuous delivery.
DevOps give 360 view of complete software development life cycle with the help of tools.
let try to understand what is continues integration and continues delivery.
Continues Integration: Continues integration is like software development life cycle in the CI pipeline various steps (Version Control, Build, Unit Test, Deploy, Auto Test, Deploy to production and validate) are involve.
CI CD Pipeline: CI CD Pipeline is logical steps to define how the software development occur.
What is CI or Continuous Integration?
Continuous integration are the point of entry for many new DevOps organizations. As an extension of agile, Continuous integration servers enable automated build and test, along with varying levels of notifications fundamental to keeping agile efforts on track.
CI is the procedure of consequently identifying, Marge code, build and testing to:
- ensure that the code pushed to our repo is "robust" and appropriate for further use in the codebase
- Appropriate code merge into the Repo.
- guarantee quality benchmarks of the pushed code according define code standard and guideline with quality pre-checks.
- Developer must push the authenticate code on the source control/Repo.
Why we require this?
- To guarantee that no raw code is push into the repo which prompts—longer Test cycles and longer Release cycles.
- Insure to defects leakages, its may impact the Beta or Production.
- For development process
- Make every engineer accountable for his code and through checks enable, its help to improve developer confidence
- Its help developer to identify Bugs same time, to reduce the rework.
- Keep the code base constantly tested for an beta/alpha deployment and ready to get beta/alpha defects/Bugs as ahead of schedule as conceivable in the release cycle
- Its help reduce human mistake during the manual testing.
Tools Adoption:
The selection on tools is generally depend by IT budget and polices. It is therefore recommended that every organization must do proper due diligence in evaluating different tool sets and choosing the appropriate ones suitable for their requirements
Lists of tools in the following :
1.Application Servers
2.Behavior-Driven Development Testing
3.Code Inspection / Code Quality
4.Configuration Management
5.Test and Build
6.Test Automation
7.Version Control / Branch Management
8.virtualisation Platforms
9.Workflow Management, Agile Project Management
Source Code Management
GitHub
BitBucket
Artifact Repositories
Continuous Integration Servers
Jenkins
CloudBees Jenkins Solutions
Continuous Management Delivery
Log Management
Monitoring
Database Configuration
Automation Tools
Container Management
Continuous Delivery
Continuous Delivery (CD) is a further extension of CI where the goal is to:
- Ensure continuous delivery of developed code to alpha/beta Server with validation checks (User acceptance testing, Sanity testing, Regression testing)
- Version controlling/tagging
- Post release monitoring and communication across the organisation
Continuous Deployment :- The easiest and fastest way to get code into production
DevOps teams can use Skopos to complete their CI/CD tools chain development to production cycle. Using an automated system to move completed code from development environment to production environments ensures reliable, predictable and repeatable deployments.
Skopos has designed to work with new development as well as traditional application. Advanced updated including architecturally aware automation, dependency mapping, Post/Pre start operations, deep health checks and hooks for integrating with existing automation and reporting systems enable more easily migrating existing applications from physical or virtual environments to containers.
Deployment Inline
DeliveryTeam --- VersionControl --- Build & Unit tests --- Automated Acceptance tests -- User acceptance tests -- Release
Continuous Inspection Tools
1. Sonarqube :- with the help of sonarqube you can check the Code quality, reparation code.
Automation Continues Environment --
- Reduced Time to Market - with the help Continues Delivery we can deliver the code continues on productions using the automation.
- The Right Product - With the early release of each functionality of product market will help to get customer feedback quicker so marketing team can plan the new release or customization of product without wasting of time.
- Improved Productivity - CD is automated process and its real time synchronization with development process, its help development team to update all defects or bugs same time and reduce the rework.
Improved Customer Satisfaction - With the help of automation process we can minimize the bugs as much as possible, which very difficult through manual testing. Its help to deliver bugs/defect free systems to customers.
Challenges and solutions:
We faced a few challenges during the CI implantations as below:
1. Providing granular level access in Jenkins:
Solutions: we came with role based access solution approach. This approach helped to provide access to role rather than individual level.
2. Regular build failure:
Solutions: To solve this issues, cron scripts were created to clean up the job workspace and artifacts ones in week.
3. Build waiting for node executor:
Solutions:Scheduler plugin was used to ensure that load distribution.
4. GIT repository integration:
Solutions: With the help of Key we can establish trusted connection betweek source control and Jenkins server.
Best practise followed:
After having worked on multiple CI projects we have prepare the best practices which we have learn and followed:
- Role based access.
- Regular Cleanup of workspace and Artifacts.
- Template based commons configurations.
Benefits of CI:
- Build automation.
- Code stability
- Analytics
- CD enablement
- Faster releases
- Code savings
- Improved productivity
- Improved code quality
One of the key advantages of CI and CD is that you can identify the Bugs real time means when developers push the code on source control and CI process analysis the code and provide the bugs same time. Its help developer to fix the bugs on same time its help the reduce time of rework and also increase the confidence of team.
In recent years Continuous Integration has become a best practice for software development and it is advice by a set of principles. Among them are version or revision control, build automation and automated testing.
Reduce risk:
If you test and deploy code regularly , and share with customer it will reduce the risk of project failure, because client can check the project is developed according to required specification. Client can get feedback with customers for each functionality during the time so if client required change in any functionality, he can suggest same time. This will boost up the feedback mechanism and make your communication more easier.
Conclusion:
We believe that continues integration and continues delivery is at the core of DevOps and its required proper planning with skilled development team. So team can suggested required tools for their integration aspects. If the all the CI and CD related process and tools configured properly will help deliver the project within time and quality software.