In the new world of PaaS, programmers are no longer programmers -- they are developers. Nick Hardiman explains why PaaS is the cloud layer that is targeted at application developers.
Despite spending day after day solving fiendish intellectual challenges, developers are simple childlike creatures. Give them some building blocks and space to create, and they will build wonderful things. Platform as a Service (PaaS) is that space.
PaaS offerings occasionally hit the news, such as when Google launched AppEngine, RedHat launched OpenShift, and Salesforce.com bought Heroku. If you are not a developer, it's easy to dismiss PaaS as a niche market. It's hard to believe that PaaS, and the developers that use it, will become crucial to technology projects. Is PaaS the future? Or a model that is no longer relevant in today's cloud computing world?
New world projects need developers and PMs
When the transformation of software-defined networking (SDN) is complete, the whole technology stack of network, operating system, and application will be controlled by developers. Technology projects can deliver new software without ever going near a network administrator, database administrator, or any other kind of administrator. Developers throw in buckets of ready-made applications and sew them together with custom code.
The only other type of employee required for these new world projects is the project manager (PM). An organization still needs someone to handle time, money, and resources. The PM acts as the middle man: the business shouts at the PM, and the PM herds the developers.
The history of PaaS
Today's developers are nothing like programmers of the last century. In the past it was brutally hard to make programs deliver value. Programmers lived on pizza and coffee, while their atrophied arms hammered away at keyboards -- only occasionally would they venture from their cubicles and expose their pasty skin to the outside world. And what did we get from their suffering? What came out of those decades of painfully slow toil? We got the world of PaaS.
In the new world of PaaS, huge software libraries of applications are packaged and ready to deploy. Automated tools grease the development lifecycle. Programmers are no longer programmers -- they are developers, who can code, test, and deploy an upgrade in hours, create complex prototypes in a day, sprint to business delivery in a week, and still retain the skill of interacting with humans.
The old computer technology stack
The technology stack of cloud computing -- Infrastructure as a Service (IaaS), PaaS, and Software as a Service (SaaS) -- are roughly aligned with the three abstraction layers in a computer network. These layers accumulated from the sediment of many decades of IT achievements, long before cloud computing came along.
- Hardware and networking is the infrastructure layer -- it provides the foundation.
- The OS layer rests on the infrastructure.
- The application layer goes on top.
Building a technology stack from these three abstraction layers made tough concepts easier to deal with, in much the same way the OSI model split networking into seven layers and GSM protocols brought order to mobile phone network chaos.
This view of an OS as a platform brings many advantages.
- The complexity of the lower layers are hidden. An application developer can act more like a car driver and less like a car mechanic.
- Applications are portable. While a Linux application won't run on a Windows platform, it will run on a huge variety of hardware from Raspberry Pi to mainframe.
The new cloud computing stack
While the hardware/OS/app layers are all about the technology, the cloud IaaS/PaaS/SaaS layers are slanted towards customers -- it's a subtle difference. IaaS lets customers use infrastructure components like storage, DNS, and networking without the pain of managing them. An IaaS provider is providing traditional technology building blocks to his customers.
However, a PaaS provider is not an organization that manages operating systems for its customers. The NIST Definition of Cloud Computing (PDF) defines PaaS as a service that allows a customer to deploy "applications created using programming languages, libraries, services, and tools supported by the provider." What does that mean in practice? It means PaaS is the cloud layer that is targeted at application developers.
A SaaS provider aims to provide only the technology that directly serves the customer and hides everything else. PaaS is closer to this idea than to IaaS -- PaaS is basically SaaS for nerds.
PaaS is the product of 50 years of incremental improvements
PaaS is like SaaS -- a developer is treated like a consumer. In exchange for becoming the customer of the PaaS provider, the developer is given the opportunity to make the most of their talents. It seems obvious that a developer would want to reduce their overhead by using a PaaS provider. PaaS is the result of 50 years of improvements, from the UNIVAC to Pagodabox.
If code controls the world and code is maintained by developers, does that mean developers rule the world?