DevOps is more than a culture that emphasizes collaboration and communication between development teams and other IT professionals. We’re talking about automating software delivery and infrastructure changes to ensure software quality and system stability.
Therefore, this collaboration is mainly based on tools that ensure speed and reliability in constant changes at the same time.
SOURCE CODE MANAGEMENT – SCM
The Source Control Management System (SCM) is the software that coordinates and enables source code management between different developers. In a more basic way, it provides a file manager and version control so that the programmers do not cross changes with each other and the newest version is always visible also DevOps.
Currently the SCMs allow working on the same files (based on branches), to later cross them with the work of the rest of the team, leaving a trace of who has developed what and tracking corrections.
SCM FOR MORE WIDESPREAD DEVOPS:
I. GIT & GITHUB
Git is free and open-source distribution to treat code for both small and large projects with speed and efficiency.
GitHub is the web version of the Git repository that offers distributed revision control and code management just like Git does and offers some other features.
It is the control of versions and branches that converge on the same modules.
At this point, you should be familiar with GitFlow or TrunkbasedDevelopment . The main practices in managing source code using Git repositories.
The main Git providers are:
GitHub, GitLab Assembla, Beanstalk, Bitbucket, CloudForge, Codebase, Fog Creek Kiln, planio, Perforce, RhodeCode, Unfuddle
II. SUBVERSION
Subversion is a client-server application for code change management and control. It allows you great versatility and easy access control management if you manage a large number of projects.
You will also need the Tortoise client to be able to access the fonts.
SCRIPTING
For automation through scripting, you must have knowledge of languages such as Bash, Ruby or Python. This is used to try to automate everything that can be automated on a day-to-day basis. I could almost say that it is the quintessential DevOps tool.
CONTINUOUS INTEGRATION TOOLS
The Continuous Integration Technique tries to cross source code generated constantly between the different programmers of the development team. This crossover (merge) of source code prevents the programmer from keeping his local copy very different from the good working copy. Avoiding serious code crossing conflicts.
Known as CI/CD for its acronym in English Continuous Integration / Continuous Development .
In practice, Continuous Integration is a server that constantly crosses the code when any programmer makes a change to the code at the commit level. Subsequently, the system collects the code and compiles the code directly, notifying of any errors that may arise. Obviously, this means that the team spends its time fixing bugs before continuing to generate more code.
Continuous Integration Servers therefore automatically compile, build and release tests with each new version they receive from the Code repository. This means that for continuous integration development to work, Unit Tests must be considered as part of the code.
EXPERIENCES WITH JENKINS
Jenkins is perhaps the most widespread tool for Continuous Integration. Visual in your web environment offers simplicity for automation. It is simply the executor of tasks and you are going to have to configure all of them, but once they are configured there is no longer an option to error the process.
It is open source and has endless plugins that will allow you to view very interesting elements. In our case, we record the number of Unit Tests launched and the situation regarding SONARQube errors to ensure the Quality of the Code.
VIRTUALIZATION
Virtualization is the next step especially in complex environments. Therefore, to properly test your application before going live, you need to set up a dedicated (virtualized) environment that maintains all system requirements (provisioning).
This is where the term Infrastructure as code appears to automate the configuration of the technological infrastructure.
The virtualization of the service allows programmers and testers to have a replica of the environment on demand.
Examples: Docker & Vagrant
CLOUD
For DevOps application many cloud services can be found.
From Amazon Web Services – AWS and from Microsoft there is MS Azure, which are tools with products for DevOps. These services simplify the provisioning and management of the infrastructure itself for code development.
With the Microsoft Azure Cloud Platform, you have at your disposal a few Open Source Devops tools such as Puppet, Chef, Terraform, etc.
You also have OpenShift which is based on Docker and Kubernetes containers. Included in the OpenShift 4 release are developer tools and centralized operational activities that facilitate fast, easy, scalable development and a broad lifecycle for both small and large teams. The first project is free. That is if, however you want to do an on-premise implementation, it is no longer free.
You also have the possibilities of OneOps from Walmart that abstracts from the tasks of packaging, development, provisioning in all environments to have control of development or Spinnaker another open source platform as a Continuous Integration platform that allows a large number of changes in the software of quick way.
PROVISIONING
Provisioning refers to the automatic construction of software or servers without any human intervention. Also known as Change Management
The best known in the field of DevOps are Chef and Ansible.
MONITORING
System monitoring can be done by the best known tools such as Nagios, Zabbix, SCOM,…
LOG MANAGEMENT
All the servers and applications that run on them generate a large number of records in the form of log files. It is recommended to maintain a solution that aggregates all the files and allows centralized information to be obtained.
Examples: Graylog, Splunk, Logstash
IF YOU WANT TO BE A DEVOPS ENGINEER
Although I don’t like the term, it is something that Human Resources professionals demand, so here is a list of platforms that you should be familiar with 🙂
- Chef
- Jenkins
- OpenShift
- Puppet Enterprise
- bluepill
- MCollective
- Capistrano
- Supervisor
- Bcfg2
- graphite
- RabbitMQ
- Ant
- CFEngine
- apache maven
- ansible
It is about sharing the objectives to solve the functional needs of the software. Or put another way, to facilitate the functionality among all the participants of the application development as soon as possible. All, they are all! From the one who asks for the new functionality to the one who watches the door of the CPD.