Software-defined applications and infrastructure explained
The inner mechanics of today's software-defined applications and infrastructure reveal an interconnected web of isolated components and scalable resources, supervised by automated management.
Software-defined applications and infrastructure promise data centers more flexibility, efficiency and resiliency than virtualization and monolithic app designs.
Moving beyond virtualization, which includes a largely manual provisioning process that can be time-consuming and rife with errors, containers offer a more modular approach to application development. Developers assemble a software-defined application from a series of independent modules, or components, called microservices. Each microservice runs in a container and communicates via application programming interfaces. APIs make microservices work, giving containerized components a route to pass data and commands between the various functional modules that create the working application. IT teams automate deployment, monitor performance and scale components by spinning up additional containers and load-balancing API traffic between apps. Unused containers can be shut down, saving computing resources.
While there are several benefits, a software-defined application cannot function without some degree of control over the data center or cloud-based infrastructure.
The resources behind the apps
Infrastructure monitoring and automation software define and manage VMs, containers, storage instances, network segments and other elements needed to deploy and scale application components in line with established benchmarks and policies. For example, if an application's queuing system performance drops below acceptable speeds, the software-defined infrastructure automatically spins up additional, temporary queuing components on any available server. While any app may grow or shrink over time, this level of self-service, orchestrated scaling is important for erratic or unpredictable workloads.
In this way, APIs aren't just a staple of software-defined applications; they also form a foundation for software-defined infrastructures. Without API behaviors to determine when additional performance is needed and then initiate action to remediate the situation, IT professionals would need to constantly monitor and adjust resources assigned to an application.
Software-defined applications and infrastructure increasingly embraces the notion of horizontal versus vertical scaling. Traditional applications rely on vertical scaling, which increases resources allocated to a principal software instance. Horizontal scaling, on the other hand, duplicates application component instances -- usually architected as microservices -- as demand for that functionality increases.
Horizontal scaling is the more attractive approach because it better enables monitoring and automation. For example, when monitoring reveals that a component's time-to-service API calls are unacceptably low, a software-defined infrastructure automatically duplicates one or more components -- and load-balances API traffic -- so those additional components work together to handle the increased application work.
Conversely, if monitoring reveals that API calls are easily handled with resources to spare, the software-defined infrastructure can automatically remove, or scale down, additional components to release the resources for other jobs.
APIs explained
Traditional applications struggle with integration -- getting applications to talk to each other in a meaningful, organized way can be difficult. APIs can solve this problem.
An API sets forth the routines and protocols that form the building blocks of the applications, stipulating things like operations, inputs, outputs and other functional attributes. APIs can assist developers with capabilities such as database access, graphical functions, Web behaviors and hardware device access.
Prefabricated APIs include Microsoft Windows API, the standard template library in C++ and Java APIs. Applications can also provide common hooks that other applications utilize through simple object access protocol or representational state transfer services.
The truth about software-defined architecture
The term "software defined" is attached to a slew of technologies: storage, networks, applications, power, infrastructures and even entire data centers. The concept of using software to provision and optimize elements of the IT environment holds exciting promise, but adding the software-defined tag to anything creates confusion and can be misleading for IT pros navigating the realms of software-defined applications and infrastructure.
Take software-defined architecture (SDA), for example. The term, which Gartner coined to mean an extension of software-defined networking and software-oriented architecture, is easily confused with software-defined infrastructure. However, software-defined architecture attempts to encapsulate the data center's internal hardware and services and insulate those resources from the applications, services and devices that might be exposed to users -- effectively segregating the producers or providers from the consumers. Creating this boundary hides or abstracts the inner workings of the enterprise -- the servers, storage arrays and networking schema -- allowing IT teams to change, update or replace them without affecting end-user-facing applications, services or devices.
To create such a logical boundary, typically called a software gateway, between data center resources and outside users, SDA relies on two sets of APIs. The "inner" APIs organize and drive the internal systems, optimized for data center-side performance. "Outer" APIs, which are optimized for long-distance network operation, can securely access internal APIs.
A software gateway built from a combination of software components, including integration brokers, API managers, API gateways and a SOA interface. When properly implemented, the software gateway can translate APIs and handle security, orchestration and routing.
This approach abstracts applications, services and devices from the underlying data center that provides them. This abstraction helps to protect the data center and enterprise data; when combined with APIs, the abstraction also decouples end users from providers -- meaning changes to one will not affect the other.
Gartner's vision of software-defined architecture is still in its infancy, and it remains to be seen how that vision and the terminology will evolve in the coming years.