DevOps has become crucial to software development, focusing on continuous delivery and cross-team collaboration. More than a simple methodology, it’s better understood as a cultural philosophy that helps companies achieve more efficient and reliable software deliveries. In this blog post, we will go through the basics of the DevOps practice and learn from engineer Esteban Bosse about how it is used at arculus.
What is DevOps
DevOps – if you are into tech, then chances are you’ve heard of it before. In simple terms, it means bringing software development (Dev) practices into the Operations (Ops) world. Although it started simply as an approach to enable faster development, today’s demanding tech market makes it hard to imagine any software release without DevOps.
The DevOps Culture
DevOps is more than just a development methodology but rather a cultural philosophy. It derives from the Agile methodology, emphasising collaboration to deliver applications. When adopting DevOps, organisations prioritise improving the flow and value delivery. Companies achieve this by encouraging developers, operations staff and other stakeholders to work together to identify and resolve issues quickly and to continuously improve the software development process.
Along with collaboration, the DevOps philosophy also encourages fast feedback and iterative improvement. In a traditional development model, feedback from operations teams can be slow or non-existent, leading to delayed bug fixes and increased downtime. With DevOps, operations teams are involved in the entire software development life cycle, ensuring timely and actionable feedback. This enables developers to rapidly improve their application code, ensuring reliability and stability in any release.
Another essential element of the DevOps culture is automation, which increases efficiency and reduces the risk of human error. Esteban Bosse, DevOps engineer at arculus explains, “If you find yourself performing a task more than once, that means you should automate it. Repetitive tasks are not only time-consuming – but they also increase the chances of making mistakes.” Automated tasks include testing, deployment and monitoring, which can help to streamline the development process and reduce the time and effort required to release new features or updates.
The DevOps Lifecycle
The DevOps philosophy involves seven phases in a continuous cycle, which is why it is represented by the infinity loop below:
Here is a brief overview of each stage of the DevOps lifecycle:
- Plan: this stage comprises all activities that occur prior to writing the first line of code. The goal is to create a product roadmap that guides upcoming developments, so that the team can organise resources and priorities, as well as align and track projects.
- Create: also referred to as build, this is when developers write code with version control, enabling the coordination of changes made by various developers to the same code base. It is a crucial factor in enhancing the velocity of the development process.
- Verify: sometimes also named test, this is the stage focused on certifying that the code is functional. This process relies on security testing, code quality analysis, parallel execution and automation.
- Release: at this stage the code is ready for deployment in the production environment. Once it has passed all required tests, the operations team schedules or deploys multiple releases to production.
- Deploy: this phase involves pushing code updates into the production environment as soon as iterations are tested and ready.
- Configure: this stage involves setting up, managing and maintaining application environments. Automation plays an important role here, as it handles the complexity of environments across servers, networks, and storage systems.
- Monitor: this part of the process is about tracking the status of software, infrastructure and networks. It raises alerts to problems and increases security and reliability.
What Enables DevOps
DevOps relies heavily on a set of practices called Continuous Integration and Continuous Delivery (CI/CD) to achieve its efficiency goals. The method uses ongoing automation throughout the DevOps lifecycle, from creating and verifying to releasing and deploying. If implemented correctly, it allows code changes to be automatically tested and pushed out, resulting in much faster code delivery and therefore, faster release of new features into the market.
What is Continuous Integration (CI)?
Continuous Integration is a practice that involves integrating code changes into a shared repository, which automatically detects and promptly resolves problems. With CI, developers can automate the process of building, testing, and validating code changes as soon as they happen. This minimises the possibility of code conflict, even with multiple developers working on the same application. With CI, DevOps teams can improve code quality while accelerating feature delivery.
What is Continuous Delivery (CD)?
Continuous delivery works in conjunction with CI, taking it a step further. After the code has been tested and built as part of the CI process, CD takes charge during the final stages to ensure it’s bundled with all necessary components for deployment to any environment at any time. The CD process encompasses various processes, such as infrastructure provisioning and application deployment.
How we use DevOps at arculus
At arculus, we rely on DevOps practices to ensure a more stable software delivery process for our robots. A prominent example is the arculee “brain”, which consists of thousands of lines of code that must be built, tested and deployed into our fleet. As Esteban explains: “The infrastructure provided by DevOps helps developers run their code in the robots as fast as possible while also running automated tests and static code analysis.”
Another benefit our developers can count on, thanks to DevOps practices, is reproducible builds. “That means if you send the same code to our infrastructure twice, you will end up with the same result. That’s important because of the quality of things; otherwise, you can test the same code twice, and the results would be different”, clarifies Esteban.
The bottom line is that “our CI/CD can build source code much faster than developers’ laptops. They can install the software in the robots to test it without moving files around, which minimises the chance of human mistakes. Also, when an error occurs in the robot, it is directly stored in our infrastructure. With several errors collected, the debugging process gets much easier for the developers.”, continues Esteban.
The DevOps practices at arculus don’t only benefit the robots still being tested and developed. The fleet of arculees already operating at customers’ facilities also receive software releases. This process happens through the so-called OTA (Over The Air) agent. “What is interesting about this is that we can still push software updates even if customers don’t allow the arculees to connect to the internet. Thanks to the CI/CD infrastructure we have built, we can host replications of the robots’ archives so that the arculees can install update packages.”, explains Esteban.
“It’s amazing how easy it is, thanks to the infrastructure we have in place, to install software releases on the arculees in different parts of the world just from the comfort of my home, knowing the software was well tested.”Esteban Bosse, DevOps Engineer at arculus.
The Benefits of DevOps
Adopting the DevOps philosophy allows development and operations teams to collaborate more efficiently throughout the whole development and application lifecycle. Without DevOps, companies frequently encounter handoff friction, which causes delays in software releases. In fact, a 2020 DevOps Trends Survey conducted by Atlassian showed that 99% of respondents saw a positive impact on their organisation after implementing DevOps.
Here is an overview of the most common benefits enabled by DevOps:
- Agility: companies with a DevOps team can release more stable deliverables with higher quality. Thanks to CI/CD, developers can count on the speed provided by automation.
- Improved Collaboration: DevOps is built on a culture of collaboration between developers and operations teams, who share duties and work together. This makes teams more efficient and saves time when it comes to work handoffs and creating code.
- Fast Deployment: DevOps teams can quickly deploy new features and release bugs by boosting the frequency and speed of releases, ultimately leading to a competitive advantage.
- Quality and Reliability: CI/CD practices ensure that updates are functional and safe, improving the software quality. Real-time monitoring also keeps the team up-to-date on potential performance issues.
Summing it up
In conclusion, DevOps is a cultural philosophy that aims to improve software delivery by leveraging collaboration, feedback and automation. It involves a continuous lifecycle that is enabled by a combination of practices known as CI/CD. At arculus, DevOps practices are crucial to ensuring stable software delivery for the arculee, allowing the developers to push code faster and more efficiently.