There are many great articles on the internet describing DevOps, Continuous Integration, Continuous Delivery, Agile Infrastructure and so on, and if you’re looking for a great hybrid cloud management platform you’re almost certainly aware of what these are and the benefits they can bring to your company.
But let’s recap a little, and then talk about the real-world DevOps case study we at Abiquo live daily as we use our own cloud solution to develop future releases in a fast and agile way.
Recap: What is DevOps again?
To summarize, DevOps brings Development and Operations teams closer in order to break “Department silos”, and to more efficiently deploy and manage applications.
Generally, DevOps practices help get new apps to end users faster and improve the quality and security of applications and in order to achieve that, it uses automation extensively to make IT more efficient and responsive to customer needs.
One of the main benefits that businesses can get from adopting a DevOps culture is the improvement in business agility by building mutual collaboration, communication, and integration across dispersed teams within an IT organization.
It’s really important to understand that succeeding with DevOps requires a true cultural transformation, and that it takes a lot more work than just deploying some new tools.
How to build a DevOps Culture
Implementing a DevOps initiative well will bring technical and cultural benefits within the company, such as shorter development cycles, continuous software delivery, faster problem solving, less deployment failures and better team collaboration and communication.
Apart from that, the business itself benefits from faster app and feature delivery, which improves ROI, eases and facilitates collaboration between teams and giving them more time to innovate, rather than fixing or maintaining existing solutions.
DevOps Tools
At Abiquo we follow a DevOps culture ourselves, which is built on the following elements and tools, so we really understand how DevOps works in practice, and can help your business to gain the same benefits:
CI/CD
Continuous integration (CI) and continuous delivery (CD) are key elements of the DevOps approach and so they are within Abiquo’s DevOps culture.
Both help to find bugs early in the development process and improve code quality and make code always ready to be released to customers.
At Abiquo, we mostly rely on Jenkins software to perform all Continuous Integration tasks.
Jenkins gets the code from Github and compiles it using Maven in a Docker container.
The output is built into packages in another container using fpm-dockery. Then we test those packages, set up a new Abiquo platform using Chef and the Abiquo API itself, and finally we run the tests against that environment – we check that our private cloud, NSX and public cloud supports works as expected with the next version. Once all that is set up, some of our production environments get automatically updated with the new packages using Chef again.
Here we explain a bit more in detail the DevOps tools we use to reach build our DevOps culture.
Containerization and Container Orchestration
Container and cloud orchestration tools — particularly those related to Kubernetes – are increasing in popularity.
In order to speed up development and deployment, at Abiquo we work with Docker and Kubernetes for container orchestration – as well as Rancher to easily deploy kubernetes clusters in Abiquo using the recently launched Rancher 2.0.
Configuration Management
Configuration management tools automate the process of deploying, tracking and controlling changes to an organization’s servers.
At Abiquo, we use Chef configuration manager to build environment in-house, and also integrate with configuration management tools like Ansible and Vagrant, which we use to build demo platforms in public clouds.
Although we’re only using Terraform in a limited way in-house today, with Abiquo you can deploy applications with our Terraform provider, which allows you to manage and provision resources in different providers. Terraform evaluates the resource states in the providers and performs the actions required to reach the described state in a programmatic way, allowing us to use version control and automation to manage the infrastructure we have in the providers.
Automation
Build automation tools are an integral part of continuous integration. In order to run an automated build to compile Abiquo’s code and test it, we use Maven and Grunt.
Abiquo provides automation capabilities with autoscaling, vertical scaling and action plans that help automate complex systems. Also, you can get notifications or trigger actions when your platform scaling is triggered.
With the Abiquo API you can automate all your cloud resources and so support your DevOps culture with one integration point for all your cloud managed services, whether it’s private, public or hybrid.
Source Code Management
When it comes to source code management we use hosting services from GitHub and a self-hosted instance of GitLab (Git).
Collaboration
Collaboration platforms are particularly helpful for geographically dispersed DevOps teams, as they include messaging/chat, work sharing, project tracking and scheduling capabilities, and some also include features specifically designed for agile development and DevOps environments. We use some of the most popular collaboration apps for DevOps teams including Slack, JIRA or Confluence.
Testing Framework
DevOps also embraces continuous testing, which means automating software tests as part of the continuous delivery pipeline. At Abiquo, we do deploy testing automation tools, working at these 3 testing levels – in which we use TestNG as the primary testing tool:
- Unit Testing
- Integration Testing – With this, we test the components of our API work together.
- Functional Testing – In this stage, we combine TestNG with other libraries, such as overthere and a client of our own API. Overthere helps us to connect to the deployed VMs and create actions to validate our tests.
We do pass the tests for every single commit into the main branches, using Github webhooks to trigger a test job in our Jenkins, which creates a docker container that tests our code several times in a day.
By combining all those elements and tools in Abiquo’s DevOps culture we “eat our own dog food”, ensuring we make it easier for our customers to reach their DevOps objectives by using Abiquo’s Cloud Management Platform.
If you’d like to find out more about Abiquo’s support for DevOps, or about the platform in general, please contact us.