Because history always repeats itself it turns out we are in a very similar position today with private/public cloud computing. The proliferation of the x86 hypervisor has made infrastructure such as CPU, Memory, Networking, Disks, and entire operating system instances consumable services to an application just like a database. So of course we have created as many REST, ATOM, SOAP (RAS) and other proprietary API’s with thousands of methods to work with these new services. The challenge for application developers is the same lock-in problem that’s been around for years: If I build my app to work with cloud API X then if I want to make it work with API Y then it is my problem. Cloud broker technologies are trying to solve this problem but these approaches introduce Yet-Another-Layer-Of-Complexity© between application and service since these technologies often involve run-time applications with state and still usually have their own RAS based API.
The advantage of using a language like the one described above to interface applications with the datacenter is that it makes infrastructure services act & feel pretty much the same way data is accessed in a SQL (or NoSQL) database. This approach affords application developers a way to specify what they want, and the processor that implements the language implements how those instructions are carried out. Dependency resolution, orchestration, parallelization and element level API’s (load balancer, operating systems, firewall, hypervisor) essentially become plumbing that the application developer no longer has to deal with. There is a lot of hype in the market right now around Software Defined Networking (SDN) but SDN is only a subset of the Declarative Datacenter (Software Defined Datacenter or Programmable Data Center). The ability to easily change the complex operation of a datacenter including not only networking but also storage, computation, and memory resources based on the changing needs of applications is what the Declarative Datacenter is all about. Yes it is possible to code some scripts that take actions on the data center but what those scripts probably don’t do is have an omniscient real-time model of the entire datacenter. A Declarative Datacenter Controller is essentially the brain of a data center that is taking inputs in real-time from everything going on and instantly calling aforementioned actions when sufficiently complex conditions are met. That is a big part of the value of the Declarative Datacenter.„