DevOps and PaaS
The roles of development and operations staff have become more tightly coupled in recent years on account of a number of things. Firstly, agile project methodologies and the adoption of micro-services have shortened release cycles and accelerated the deployment of code, albeit in smaller chunks. Secondly, things such as security and high availability which previously sat with operations now have to be factored into the very core of the application itself and are therefore an important part of the design and build phase.
As a spin-off, closer co-operation can reduce friction between the two disciplines when it comes to resolving performance issues and other management concerns throughout the lifecycle, such as patches and bug fixes.
Like many IT labels, the meaning of DevOps has evolved. In this case it’s no longer just a ‘job title’ that came about as a result of bringing two previously disparate IT roles together. In a broader sense, DevOps now describes an agile development environment whereby lightweight applications interact with re-usable services to handle tasks such as document management, BI or perhaps some of the background services required for mobile applications.
DevOps simplifies development as traditionally much of this functionality would have been coded into an unwieldy monolithic application. These legacy systems are giving way to sets of leaner containerised modules more adaptable to ever changing business requirements. Unlike the fate of the dinosaur, this is a process of evolution – the next step along the road for the service orientated architecture (SOA).
The trade-off is that deployment becomes more challenging because the various services will be distributed across a more complex infrastructure which probably spans on-premises and the Cloud. Project success requires breaking down the boundaries which formerly stood between development and operations. It also requires tools and services to help get the job done in this more complex environment.
The tools and mid-tier services required for agile development are a key part of systems modernisation. Their purpose is to help you build, deploy, orchestrate and manage service orientated applications. In Cloud-land, this is the middle ground which occupies the space between IaaS and SaaS. It’s the part of the Cloud stack sometimes referred to as Platform as a Service (PaaS). It will probably be the development environment of choice for most new Cloud projects and for the customisation of SaaS products and legacy systems integration.
PaaS can be confusing because vendors have different views about whether a product is PaaS or something that simply enhances their IaaS offering and is therefore part of their IaaS brand. To make sense of this, the tools and services developers need for Cloud projects are best thought of as PaaS components although I can see how some of these can be consumed into the infrastructure. And in this respect PaaS is not alone. Databases blur the boundaries too and can also be considered part of the infrastructure or even the SaaS layer in some cases.
Perhaps it depends on who is in control of the resources in question. If the vendor is managing everything, databases and the back-end services provided by PaaS could be considered part of the infrastructure, which is how it appears to the customer. Developer tools by their very nature sit in the hands of the developer and for now (at least) belong in the PaaS layer.
Why does this matter? Semantics aside, developers need to be able to identify and understand which services and tools can help them build Cloud applications. The Cloud stack is a potentially complex and moving landscape. PaaS in particular is evolving rapidly with new products and services frequently being announced for Microsoft Azure, Oracle Cloud and AWS to name a few. In addition, there are numerous open source projects participating in this Cloud middle tier such as the OpenStack API management and container orchestration tools. Keeping track of all this will be a primary focus for the DevOps section of Code Matters.
By the way, did I forget to mention Functions as a Service? FaaS is a ‘serverless computing’ variant of PaaS. Functions are only executed and billed for as needed rather than for the duration of the thread in which the server application is running.
Having considered the coding and back-end services for modernising systems, we shouldn’t ignore the tools needed for managing the agile project itself. Project management and collaboration are an integral part of DevOps and products like Microsoft Visual Studio Team Foundation Server provide the resources needed for this. These are closely coupled with PaaS in much the same way that agile methodologies, development and operations disciplines in general have become intertwined.
IaaS has held centre stage over the past few years as far as the Cloud is concerned but PaaS and application modernisation are now moving into the limelight with infrastructure becoming more of a commodity. DevOps is very much about PaaS and PaaS is where exciting things are happening. Code Matters will be following developments as new services and products are released.
The videos of the two sessions presented at our recent UK-wide DevOps workshops are available to view on our YouTube channel:
"DevOps with Microsoft and Azure" Presented by Ben Coleman, Cloud Architect & Evangelist https://www.youtube.com/watch?v=cnA5kLogS6g&t=4361s
"Living the Dream. Real world DevOps with Azure and VSTS" Presented by Richard Viglianisi, Consultant, Black Marble https://www.youtube.com/watch?v=OcDoGrVzdf8&t=371s