DevOps Principles (part1)
In my previous post what is devops is explained and also defined some of the principles in devops.
So this article is about to give a glance about all the Devops principles defined in my earlier post.
Once again globally followed DevOps principles are
- Source code management (SCM)
- Continuous Integration (CI)
- Configuration Management (CM)
- Continuous Deployment (CD)
Source Code Management
Any Source code that we have implemented to provide some services to customer should be managed in terms of availability and accessibility. We have a bunch of developers and they are not independent they have to combine with team and segregate their tasks and start their development.
So the source code should be available to every developer and some parts may not be accessible if developer is unauthorized to access.
From above we can understand that, there should be a code base called as repositories which will be accessible to the developers so that they can contribute.
So managing/maintaining the whole source code with a bunch of developers/contributors collectively is called Source code management and also called as version control system (VCS).
The popular tools are used for this are Git, GitHub, Gitlab, SVN, BitBucket etc.
By the term continuous integration we can grasp some idea like we have integrate something with something continuously (more frequently), that something is source code. So I will reframe my sentence as
We have to integrate our source code with other team member’s source code continuously to check whether our code caused any breaks for others.
So it is a development practice where each developer push the code to source code repository several times a day and getting feedback immediately.
The feedback (code breaks something or not) is given back to the developer by building the new source code with all integrations. So these continuous integration tools are responsible to build and test to check whether new code integrations are working as expected or not.
Some of them are GoCD, Jenkins, Bamboo, Gitlab CI etc.
Infrastructure as a Code
Now we need servers to test or deploy our services , So getting a physical/virtual machine up and configuring everything manually is a lot of effort and cost effective. So we need infrastructure on demand by logically.
Infrastructure as a Code is also called as programmable infrastructure. We will write code to provision new machines rather than provisioning manually. If infrastructure is programmable even our developers can provision infrastructure as they needed with custom configurations.
There are lot of advantages like we can reproduce our infrastructure as like we want and as many environments we can create with speed.
Any programming language can be used to code to provision infrastructure and some of them are Python, Puppet, vagrant, Ansible, AWS Cloudformation.
Go around and search for these principles and you will get very interesting things and please read the next post which is continuation of this post which will explain about remaining principles and how these are all related with each other.