Devops:
Software development life cycle:
1.requirement gathering
2.planning
3.design
4.development
5.testing
6.deployment and maintenance
###################
Models in SDLC:
1. Waterfall model
2.Agile
3.Spiral
4.Big bang
######################
Waterfall method:
once 1 step is completed then only we go to 2nd step.
1.requirement gathering
2.planning
3.design
4.development
5.testing
6.deployment and maintenance
#################
Agile: waterfall model is repeated many times until clients needs are satisfied.
#############
Continuous Integration:
Scenario:
developers write the several lines of code everyday creating the software. this code should be stored somewhere at the centralized place. This centralized repository called as the version control system like github. everyday developers push and pull the code from such repositories. code changes or the code commits happens continously. On the repository, this code will be built, tested and evaluated. artifacts/software is the bundle of the files which will be created from the repository. That artifact will be moved and deployed to the built server. Testers will test the code on the test servers and once the code is approved it will be deployed to production servers.
problem:
developers have worked 3 weeks straight and worked on the software module and pushed the code to the repository.once the code is deployed on the server, during the testing you notice there are lot of errors and bugs. Now the developer have to rewrite the code at many places and deply it again. problem here is code is getting merged with the repository but not really getting integrated.
Solution(achieved through the CI):
After every single commit from the developers, code should be built and tested. but developer commit several time a day and it is not humanly possible to build and test the code after the commit. So we need to automate this process, When the developer commits any code, automated process will fetch the code, build it test it, and send the notification if there is any failure in the code. As soon as the failure notification is received. The developers will fix the code and commit again.
#######################
cyclic view of CI:
code
fetch
build
test
notify
feedback
repeat.
##################
Continuous Delivery: (CD)
it is an automated process for delivering the code changes to the servers quickly and efficiently. continuous delivery is the extension of the continous integration.
process:
When the developer commits any code, automated process will fetch the code, build it.test it, and send the notification if there is any failure in the code. As soon as the failure notification is received, the ddeveloper will fix the code and commit again. if everything is good with the code, Artifact(bundle of files) is genrated and it is stored in repository. That artifact is deployed to the server and then the code is tested.
But deployment of the code contains so many steps:
server provisioning
installing the dependancies
configuration changes
network
artifact deployment
any other changes
This is so much of manual task and can be automated. in continuous delivery below tasks are automated:
server provisioning
installing the dependancies
configuration changes
network
artifact deployment
any other changes
#########################
There are so many automation tools available in the market:
Ansible
terraform
jenkins for ci cd automation
and many more
##################
tasks in Testing also needs to be automated:
functional
load
performance
DB
Security
any other task
#####################
testing team can automate the above mentioned tasks.
development team > integrate the Cl Operations team > automate the deployment QA team: automate the testing
all the 3 processes are integrated together.
Comments
Post a Comment