If you are involved in product development, you’ve most likely heard about DevOps, which is a methodology for quickly delivering and improving products in less time than using traditional development methods. One of the main reasons for the adoption of DevOps is the need for software and infrastructure integration and collaboration, gaining the best from both, achieving better performance, and bringing the final product to an optimized level on the fastest track possible. DevOps is a culture backed by endless technologies and tools where the key is “Automate Everything.”
Automated Software Delivery
If automation is key for modern software processes and lifecycle, CI/CD is the technique to make it happen in the most effective way.
The goal of CI (Continuous Integration) is to integrate individual developer’s work into a central repository that is frequently updated, ensuring early detection of integration bugs and resulting in a better collaboration between teams – and definitely a better-quality product. The main goal is to have software builds in short cycles so that new features and changes can be released quickly and safely at any time with maximum reliability.
CD (Continuous Delivery) manages software testing in a sequential and automated manner, resulting in a deployable-verified build, ready to work in a real production environment. Software development involves more complexity than ever, requiring developers to adopt new and modern methodologies in order to meet the agile needs of business. Continuous Delivery of software adopts this agile method and practices.
The main target of CI/CD is to improve collaboration between development teams and enable fast delivery of high-quality software for continued success. Reduced time to market and successful continuity are the keys for developing wining products in a competitive market. DevOps Automation achieves this goal.
Automated Appliance Creation
As described, fast software delivery is important, but in order ensure it result in a final product ready for customers delivery, there is a need to build a complete system around the software, usually a server appliance. Until recently this system was mainly based on classic, bare-metal hardware. Today customers are more advanced, relying on the latest virtual and cloud-based platforms.
Bare Metal Appliances
Modern Linux operating systems have network boot support, using PXE (Pre-boot Execution Environment). When a hardware-based system boots from the network, the boot request is handled by a dhcp server located on the PXE boot server, which assigns an IP address and tells the server where to find the netboot image. This file instructs which kernel and initial OS image to load. Then the OS repository is mounted. The manifest script contains the Installation flow and is where layout is defined: partitions, services, network settings, OS and additional packages, and pre- and post-installation scripts.
PXE method has a customable menu that enables quick and easy one-click Installation. The result: a precise, thin and optimized Linux based system. This entire combined process is called Kickstart
Virtual Appliances and Cloud
The movement to the Cloud in the last few years has created a new concept, changing the game by reducing the need to manage hardware and infrastructure as in the past. Development efforts can now be focused on reducing the cost of product delivery and improving application delivery performance.
Many of Dialogic’s products, including the Dialogic® BorderNet™ SBC, support Amazon, Azure, Google, Oracle, Huawei, and OpenStack clouds platforms. Virtual environments have also been implemented for the past several years in all of Dialogic’s products, supporting the leading vendors: VMware, Linux KVM, Xen, and Hyper-V.
So how to deliver products on so many platforms – virtualized, cloud based and bare metal – while keeping a consistent flow and in the fastest time possible? Well, this is where the need to build a solid unified automated process was born. This automated process needed to keep an identical flow of installation for all platforms, but be optimized for each platform individually.
This need lead to one of most important DevOps technologies: Configuration Management. Configuration management is an engineering process for setting and maintaining consistency of product performance, functionality, and requirements. At Dialogic, we chose one of the leading CM solutions for this purpose: Ansible. The results of these efforts are manifested in Dialogic products such as the BorderNet SBC, PowerMedia® XMS and Dialogic BUZZ™, which are supported on bare-metal, virtual, and cloud platforms, all with the same product behavior and functionality.
But this is just the beginning. Today, it is hard to imagine a world without DevOps methodologies and automation. The result is a critical and endless process of continuous improvement – one which is being implemented at Dialogic to ensure we bring our customers the latest technologies in the quickest time possible.