From its humble beginnings in early 20th century to being our most essential infrastructure today, IT has come a long way. And it was mainly two techniques that helped it get where it is: ever increasing abstractions and a “divide and conquer” approach.
Divide and conquer is, of course, all about breaking a big task to smaller, more manageable, ones. And abstraction building is all about hiding the messy details of a task in favor of a higher level, easier to approach, view.
Concept: Building on abstracted materials
Sometimes those lessons get forgotten. In the early ’00s, for example, enterprises were building their applications and infrastructure as huge monolithic messes in the technologies of the day (more often than not JavaEE). As for their deployments, they made little use of abstraction, which meant that they had to deal with all the features and issues of the underlying OS, whether their apps needed them or not.
But, as they say, that was then and this is now.
Today those practices are increasingly frowned upon, and most enterprises have discovered the advantages of a Service Oriented Architecture (SOA) that breaks their monolithic apps to smaller, more manageable, services that are more robust, have simpler, well defined objectives, and interoperate over the network (making it easier to retire a service or have multiple handlers as load increases).
Then there’s Server Virtualization, which abstracts away server resources (including the operating system) from the users, replacing the inflexibility (and lack of security) of direct server installs with the flexibility of a software managed solution.
Virtualization, which in most enterprises was introduced as a way to run some legacy application in its own environment, has become the dominant method of deployment in 2015, for giant companies like Amazon and Google to small and medium enterprises. Even application developers use virtualization tools such as Vagrant on their laptops nowadays, because they give them the same flexibility, security and reproducibility benefits as large production installs do.
Mature tooling for infrastructure management makes virtualization solutions even more powerful. This includes Software-defined Networking (SDN) and Software-defined Storage (SDS), that abstract away networking and storage respectively, allowing policy-based provisioning and management independent of the hardware.
The trend of increased abstraction from hardware resources is one of the fastest growing segments of IT, and its results, which already drive the most agile enterprises today, will soon considered necessary infrastructure in the same sense that routers were in the 90s and fax machines in the 80s.
There are also some interesting new developments in this area, with new abstraction types emerging, such as the increasingly popular Docker containers, which go below virtual machines, leveraging operating-system-level virtualization features built in Linux to avoid the overhead of starting and maintaining multiple virtual machines. Such technologies enable developers to package an application and its dependencies in a virtual container that its portable across machines.
All of these developments are perhaps a little too low level, as they deal with how you build your infrastructure at the application level. But there’s an ever more popular abstraction layer, in which you don’t have to build that infrastructure in the first place. You just have another company (or other departments of your enterprise) manage your infrastructure for you in the Cloud.
That’s the (already realized) promise of Infrastructure as a service (IaaS), which you can of course combine with virtualized resources and a Service Oriented Architecture (SOA) at your enterprise to build any hybrid kind of infrastructure that works for you.
At Stackmasters we have many decades of combined experience with leveraging abstraction to build enterprise solutions, so we’re extremely excited with seeing the progress and increased adoption in the virtualization, SOA, and IaaS space.
This is also the reason why we opted to specialize in OpenStack, the dominant cloud computing software platform for building enterprise IaaS and SOA solutions that provides a full-stack of technologies and tooling covering any related need (from process pool management to storage, networking and administration).
Not only is OpenStack a mature solution adopted by companies such as AT&T, Intel, Cisco, HP, Dell, IBM, Red Hat, VMWare and Oracle (to name but a few), but it’s also free and open-source, preventing any kind of vendor lock-in. It wouldn’t make much sense to free yourself from the inflexibility of hardware and monolithic apps only to be tied to the whims of a single vendor, would it?