By Frank Greco

March 2017

The Software-Defined Enterprise Microservices, Modern Architecture and Business Agility

In today’s dynamic enterprise, business requirements and deliverables are expanding at an accelerating pace.  Business agility is now more critical than ever which challenges our traditional information technology (IT) strategies.  Experiences with cloud computing, and in particular Platform-as-a-Service (PaaS), have shown us the potential for software as a revenue-generating tool as well as providing on-demand corporate infrastructure and reduced costs.  As these experiences mature, organizations are recognizing the power and flexibility of a large collection of small and functionally constrained services brings tremendous advantages and in fact matches how efficient enterprises operate or should operate. 


Transforming a large enterprise into this model is a challenge for the IT teams.  As usual for enterprise IT, change is more than a constant; it is continuous and relentless.


Over the past few years, there have been significant changes in enterprise IT with amazingly powerful tools and techniques that address the need for agility.  Companies are evolving beyond simple cloud computing, which is essentially a software-defined data center.  These organizations are now moving to sophisticated, fine-grained service architectures that are effectively rendering these companies into agile, software-defined enterprises.



New Technology Tools


In this new environment, the technical capabilities and resources available to the CIO and IT team have rapidly advanced.  Consider how even the term “High Performance Computing” (HPC) has changed over the past 3-5 years.  HPC traditionally conjured up thoughts of monstrously-sized supercomputers, hundreds or thousands of machines collaborating over extremely fast and esoteric low-latency networks, complex parallel processing systems, extremely large databases, sophisticated analytics and obscure programming languages. Typically these tools were only seen in exclusive capital markets conferences, molecular research labs, government cryptographic analyses and other very exotic use cases. The exorbitant costs of running such systems were typically affordable only by the financially elite or heavily grant-endowed.


But now these massively powerful systems are now software-defined and can be instantiated and deployed in minutes using external cloud providers.  This is a new era in IT with an exciting generation of powerful high-performance and highly scalable tools that are now de rigueur.   And most importantly, these tools are software-defined.



Microservices Architecture


To adapt and react to this environment, IT’s approach to services architectures have evolved as well.  Applications are now composed of an increasingly growing collection of smaller services reachable via a very large set of APIs and libraries.  And to manage these applications, new models of software design using small, independently deployable “microservices” have proven successful in many use cases.


A microservices architecture is an architectural style where an application is created with a collection of small, loosely coupled functionally constrained services.  These services are separately deployable and communicate with other services using lightweight, cross-language mechanisms.  They might use REST/HTTP or remote procedure calls for synchronous, request-response connections.  Or they may use AMQP or MQTT for asynchronous messaging-style communication.


Running a large number of microservices would be inefficient and costly if each was running in a fully provisioned virtual machine (VM).  To address this issue, microservices are typically deployed using “containers”, which is a more efficient type of virtualization provided within an operating system.  The notion of containers is not new and has its origins in Unix operating systems for many years; it has been refined to match the resource isolation requirements of microservices.   A very popular type of container is Docker.  To manage large numbers of containers that can automatically deploy, scale and be resilient in production, there are container-centric platforms such as Kubernetes and Apache Mesos that provide the enterprise with a container-based infrastructure.





Microservices Provide Agility


Many enterprises have moved or are moving towards these microservices/container architectures to provide the necessary agility to the business.  This type of architecture involves designing our systems as collections of independently deployable services for improved agility and business responsiveness.  The advantages are substantial compared to a traditional services approach.


However, like many advances in information technology, there are considerations as organizations change their design approach, alter their implementations and evolve their cultures.  For example, how do you manage dozens, hundreds or eventually thousands of microservices?  Is the type of orchestration in Kubernetes or Mesos the solution to microservices management?  How can you monitor and manage this type of architecture especially when microservices fail?   And what exactly is “failure” when microservices typically are typically very short-lived or perhaps not even running all the time but still considered “healthy”?  How do you design a large data store microservice with Spark or Apache Flint?  And as your company becomes software-defined, what techniques and technologies can help you guarantee functional reliability throughout the enterprise?



More Users, More Apps, Less Time


This evolutionary microservices software phase in modern enterprise IT coincides with another clear trend: the growing user demand for reliable, easy-to-install apps and intelligent networking capability. Users are now challenging IT departments to provide highly functional and instantly available enterprise applications and most importantly, at on-demand timescales. 


New client-side techniques such as Progressive Web Apps (PWA) are now available to leverage modern web approaches and deliver native application performance along with ease of deployment.  Many large innovative companies such as AliExpress, Priceline, Flipkart, Konga and others use PWA to allow mobile devices to securely access their internal microservices.  These techniques allow these applications to avoid complex installation steps, install on the home screen, rapidly start up and intelligently adapt to changing network conditions.



By arming ourselves with this new generation of powerful, on-demand high-performance computational, networking resources and contemporary microservices development and deployment models, we can attain a high degree of business agility, which is the ultimate goal for the business.



Strategic Plan for the Enterprise


Software is now a core business strategy for the enterprise.  The recent lessons learned from using a software-defined datacenter along with microservices and containers are now being applied to the enterprise as a whole.  Business intelligence, governance, adaptive security, mobile deployment, redundancy, scalability and even customer engagement are all software-driven and dramatically increasing the ability and velocity of the enterprise to adjust to changing market conditions.


This unpredictable environment requires rapid adapting to change and immediate reaction to business events.  Successful business agility now clearly becomes a critical differentiator.  The software-defined enterprise is a significant approach to agility that affects all aspects of every organization in today’s software-driven world.