Monday, June 29, 2020

Continuous ?????

Before going to the blog tittle i.e. Continuous Integration and Continuous Deployment. We should have an idea what 'Continuous' in the technology means: Continuous in technical terms means 'Stable' or 'Uninterrupted'. 


Saturday, June 27, 2020

Conceptual Background






Continuous integration, Continuous Deployment and Continuous Delivery, all of these three are similar to three vector in the same direciton but varrying in their magnitudes. Thier objective or aim is the same:make developers duty faster and more smoother and robust.

There is vey thin line difference between the three, the only difference is Scope of Application of Automation.

Continuous Integration: The nucleus of DevOps

Generally, software developer start with the continuous integration, why I am aliasing the Continuous Integration as 'Nucleus', as in our biological system, nucleus meant to maintan the integrity of the cell by facilating transciption and replication processes. Similary in the development and operational system,continuous integration serves the purpose of maintaining Code Integrity ( however it may eliminates replication part, instead of replication, it provides Merge).

In general, Continuous Integration is nothing but merging the code changes to the central repository multiple time a day, with parallel trigerring of automatic build and testing sequence for an particular project.

It also depends on programming language to language, project or program may need to compile first, sometime use of advanced DevOps technology helps us to reduce such whole project compilation by providing a way or need to compile only unit or piece of code of an project whichever is being changed (using Docker (container). After compilation, automated build, test (includes UI test, Performance test, Functional test, API reliability test) is being performed by the developer, encapsulating all these parts together, we can refer the same as "Build Stage".

CI can act as cover net that secures developers from major issues in the code after changes before changes delivers to the end user. As a end result CI gives more confidence to the developers.

The CI is the best way for the developer to gain more ROI (Return On Investment) on initial stages, during the initial phase of the CI process, developers goes through multiple builds and tests untill they reaches to stagging phase, this gives an comprehensive and stable project and an feeling the this project is now safe to deploy onto the production environment.

The second and most important thing which I as a developer do beleive is CI time: it should be less as much as possible, definetly it might be more in the initial stage, but if developers applies CI as an regular pratice, CI time will reduce and as a result CI speed will increase with more safer project and with less risk factor.


Thursday, June 25, 2020

Towards Continuous Delivery and Deployment

Continuous Delivery (CD), basically is an pratice of automating the entire software product release process. Ideally to do CI, and after that to prepare an track with the patch (latest one) towards production.
The desired outcome is anyone with sufficient accesses and privileges a new patch can be released at any time with few clicks to the production enviroment. This increases the overall productivity.

But, talking about Continuous Delivery, after testing the performance and behavior of the application with applied new patch in the Test or Developement environment includes atleast one manual step of approval and after that intiative is being taken to deploy the patch to the production enviroment.

So, to eliminate this manual overhead, Continuous Deplpoyment is  one step ahead of Continuous  Delivery, which inlcudes deployment of each and every change in the code directly and automactically to the production enviroment, without any explicit approval from the other developer.With each and every deployment in the production enviroment, particular tag is also released which includes Meta Data regardng the patch applied.

Continuous Deployment requires an thorough knowledge of developement culture and product functionality, as every patch is being applied with central or master repository and followed by the deployment of the same to the production enviroment without any external approval.

Wednesday, June 24, 2020

Final Conclusion and Quick Revision.....

To summarise:

Continuous Integration (CI), short feature branches, team is merging to master or central branch multiple times a day, fully automated build and test process with manual deployment.

Continuous Delivery (CD), CI+ Automated software release + Manual Deployment to production with manual approvals.

Continuous Deployment (CD), CI+ CD + fully automated deployment to production without manual approval.


Tool Used: Maven (Build tool), Gradle (Build tool, preffered for andriod), Jenkins (most preffered).