DevOps in the cloud: the springboard software engineering needs
Mon 18 Apr 2016
Laurence James, Products, Alliances and Solutions Manager at NetApp, discusses the importance of seizing control of software programming…
DevOps platforms fundamentally change the pace, quality and consistency of the application delivery model. The DevOps model empowers software engineers and developers to deliver a direct and more immediate impact on the competitiveness of their business through the ability to release new and upgrade existing software on a near continuous basis. When building a DevOps development and test platform application performance, management, platform flexibility, scalability, advanced monitoring and analytics are key aspects in the requirements process. DevOps platforms are performance and capacity intensive and, therefore, businesses looking to take advantage of DevOps must invest accordingly in the infrastructure with the required features and function that support the desired business outcome.
Software’s online workshop
The software industry is traditionally, and remains, an industry that demands and thrives on rapid growth. McKinsey commissioned a report in 2014 entitled “Grow fast or die slow”, and while growth appears to be slowing slightly between 2014 and 2017, this is still a mantra that UK software businesses might have to live and die by. We only have to cite the commonly used examples of Uber and Airbnb to show the potential gains of getting the software user experience absolutely right, scaling at pace and basing your entire business model around mobile technologies.
However, there is an ugly side to the software industry, especially when we compare it with its older brother – the hardware industry. Thanks to Moore’s Law, hardware engineering has evolved at a phenomenal rate. For almost any other industry, the power of a core technology doubling is revolutionary and might happen once or twice a century – it happens as a matter of course around every 1-2 years in the hardware industry. One of the by-products of this is that the software that runs on the devices and makes them do useful work has been hard pushed to keep pace with the hardware.
Hardware is meticulously engineered and products go through rigorous testing and prototyping before they hit the shelves. If they do not work well and comply with regulations, they won’t sell. Software engineering, on the other hand, is a very different world, laden with standards and engineering best practice. Furthermore, software engineers stand to be some of the most influential people in the business – a creative force that drives differentiation.
However, there is still a culture of outsourcing software contracts based on cost or how quickly a project can be delivered. This means winning software contracts is as much about pricing and speed as it is quality and reliability. Furthermore, software engineering is an art as well as a science. Sophisticated software languages are complex and relatively few programmers understand them to the standard required to take on professional contracts. This issue is compounded by the fact that the people dishing out the contracts don’t necessarily know what the required standard is or understand that there’s a difference between ‘coding’ and the ability to programme and test software that is usable, reliable and secure.
The advantage software does have over its older brother is that hardware absolutely needs it. Software development is increasing exponentially in importance – we live our lives through applications. The hardware these applications run on is increasingly becoming a commodity play. What is important from an app developer’s perspective is that the hardware provides resilience, quality of service, high availability, management and metrics. Consequently, technology companies need to seize control of their software development, which requires building a test environment to put software through the same paces hardware products are exposed to.
A test centre that grows with you
Developing a flexible, accessible and sophisticated test environment is no longer a luxury afforded by expert software producers. Scalable, consistent and manageable test centres can be delivered through the cloud, enabling businesses to pay software engineering the same care and attention they would to hardware products and deliver continuous innovation.
Organisations looking to build a DevOps platform in the cloud should look for flexibility of resource utilisation, high levels of scalability and inter-operability with other providers to experience the best compute and performance benefits available to them. For example, platforms which tap into the flexibility enabled by AWS compute and storage, as well as providing enterprise-class features to minimise the number of resources and amount of resources being used at any time. Further to this, businesses can easily scale up or down according to their specific requirements and rapidly build out hundreds of replica testing environments to maximise testing efficiency and accuracy.
Application management, monitoring and analytics are all vital facets of building a DevOps strategy that drives results. There are various levels of service that organisations may require depending on their ability to manage DevOps. For example, solutions range from a management interface that organisations can use to manage their testing platforms in-house to custom APIs which automate the deployment, configuration and management for the organisation.
Optimising performance and delivery
One of the arguments for DevOps is that it enables software engineers and programmers to deliver higher quality applications and features in faster time, at lower cost. This is due in part to the increased confidence engineers can have that their applications have gone through a rigorous testing process and that they have sufficient tools to carry out this testing without involving third parties.
However, the efficiency at which developers can work and the tests that they have sufficient performance to carry out depends on the workloads that the platform and the infrastructure it is stored on are capable of managing. One of the storage technologies that supports the extremely high levels of performance that a DevOps platform requires is Flash. Flash technology has the ability to quickly de-duplicate, scrub and share data and code. It also supports multi-tenancy platforms, which is important for DevOps as different groups of developers need to be kept separately when they are working on a project collaboratively.
Multi-tenancy DevOps platforms require the high levels of performance enabled by Flash as workloads are continuously added to and developers collaborating on software development want to copy and share code with their team. Therefore, the consistency of Flash improves the efficiency and results that developers are capable of.
It is difficult to separate Flash solutions in terms of performance, cost and power efficiency. What is important for organisations looking to incorporate Flash into their DevOps storage infrastructure is inter-operability and flexibility with other storage environments such as the cloud and other technology providers within the infrastructure ecosystem.
For example, do you have the ability to seamlessly move data from Flash to disk to cloud as data ages? Or you are moving from the development environment to test the final production? It’s important whatever technology you’re using to take a unified view of data that allows you to store, access, protect, share and archive data seamlessly across multiple storage environments. With data and performance-intensive use cases such as DevOps, this is a key consideration.
A new approach for software engineers
DevOps platforms are not only becoming a necessity for companies looking to make intuitive, secure and reliable software, but the demands placed on what is required of software continue to evolve, the workloads test platforms need to handle demand greater performance and resilience. With a new generation of tools such as Chef, Puppet, Jenkins to name a few, software development platforms are designed to support continuous delivery. Therefore, the infrastructure on which these platforms are based is a key consideration.
As storage technologies enable greater flexibility, scalability and performance, DevOps can pave the way for a new approach to software engineering. Converged infrastructure enables this combination of flexibility and performance, providing a foundation to maximise application performance and reduce infrastructure silos with enterprise-grade unified Flash.
A flexible platform that allows developers to collaborate and test efficiently will likely improve the output – allowing software developers to produce better applications and bring them to market faster.