I am Roy Xavier, from Cochin Area. And I handle DevOps in Logezy. Cochin is a beautiful place and Logezy is more beautiful to be in. This blog is about Software Code Deployment and its various stages.
What is Deployment?
In simple words, Software deployment is all of the activities that make a software system available for use.
History of Deployment
When computers were extremely large, expensive and bulky (mainframes and minicomputers), the software was often bundled together with the hardware by manufacturers. If business software needed to be installed on an existing computer, this might require an expensive, time-consuming visit by a systems architect or a consultant.
However, with the development of mass-market software for the new age of microcomputers in the 1980s came new forms of software distribution – first cartridges, then cassette tapes, then floppy disks, then (in the 1990s and later) optical media, the internet and flash drives. This meant that software deployment could be left to the customer. However, it was also increasingly recognized over time that configurability of the software by the customer was important and that this should ideally have a user-friendly interface.
In pre-internet software deployments, deployments (and their closely related cousin, new software releases) were of necessity expensive, infrequent, bulky affairs. It is arguable therefore that the spread of the internet made end-to-end agile software development possible. Indeed, the advent of cloud computing and software as a service (SaaS) meant that software could be deployed to a large number of customers in minutes, over the internet. This also meant that typically, deployment schedules were now determined by the software supplier, not by the customers. Such flexibility led to the rise of continuous delivery (CI/CD) as a viable option, especially for less risky web applications.
Different types of Deployments
- Manual Deployment.
- Automated Deployment.
Manual Deployment means in simple words manually uploading files to the server via FTP or any other means. But it has its own drawbacks, one such is that it would be much difficult to update a codebase if you are having multiple applications or clients.
But for smaller companies or for a blog website manual deployment is much better compared to more complex automated deployment as it does not incur any special skills to deploy.
Automated Deployment or DevOps Deployment
As we live in a world of automation, we need everything thing in the perfect form. This is were DevOps takes place and it is a continues process to make a product better and perfect. But before we go into it, we need to know what is Git as it has the main role in DevOps.
What is Git and its advantages?
Git is a distributed version control system for tracking changes in source code during software development. It is designed for coordinating work among programmers, but it can be used to track changes in any set of files. Its goals include speed, data integrity, and support for distributed, non-linear workflows
In simple words – Git is a type of version control system (VCS) that makes it easier to track changes to files. For example, when you edit a file, git can help you determine exactly what changed, who changed it, and why.
- It allows developers to work simultaneously.
- It does not allow overwriting each other’s changes.
- Maintains a history of every version.
Deployment is updating your code on the servers. Servers can range from one to thousands. You need proper tools and strategies to deploy the code to the server and refresh the site. To avoid breaking the Live website, code is deployed to various stages. Testing-Staging-PreProd-Prod. Testing is where all the devs code are merged and deployed for internal testing. Staging is where the client tests it as per the requirements. PreProd is the same as Production. To make sure nothing breaks or there is no impact on any other feature.
Code deployed to Production should never be rollback or reverted in master branch of git. That’s why we have so many stages in deployment. You can automate this with CI/CD.
Continuous deployment stands as one of the prevailing goals of effective DevOps. CI/CD and the continuous tools and processes are all in some way related to facilitating the flow of continuous deployment or monitoring and managing it after the fact that feeds back to the beginning of the loop and back to deployment.
DevOps is the next level of Continues Integration and Deployment. We live in a world were time has started a marathon run and we too won’t give up. So this is not the end, more updates are coming in the segment of Development and Operations.
Finally, I thank Logezy for this opportunity to share my thoughts and I hope this blog has brought you an insight into what is DevOps.
Thank you all.