From Monoliths to Microservices: Embrace New Development Agility

Topics in this article

When introduced, Infrastructure as a Service (IaaS) was revolutionary in that it promised IT data centers a vehicle for virtualization and rapid provisioning of physical platform components (compute, network and storage). Today’s IaaS solutions have grown to fulfill that promise and much more. Now with the fast adoption of Platform as a Service (PaaS), IT data centers have broadened their rapid provisioning offering to include additional layers such as the operating system, middleware, and application runtime components.

PaaS essentially holds the key to a leaner, faster, more flexible approach to next-generation application development. Application developers are now up and running in hours and minutes as opposed to what would have taken days or even weeks in the “pre-PaaS” era.

Not only does PaaS allow your development environments to be enabled quickly, it also provides your programmers with the complete set of integrated services they need to deliver robust applications such as relational databases, message-queuing, caching, etc.

In addition to enhancing the development experience, PaaS provides robust runtime capabilities that allow continuous delivery, scalability, and resiliency.

At EMC we use Pivotal Cloud Foundry (PCF) as our PaaS platform. PCF enables IT to offer developers and cloud administrators self-service provisioning of platform capabilities to let them build, test, deploy and scale applications faster and more efficiently. Bottom line, the time-to-market to deliver your applications and services is significantly reduced.

paas2

Think Microservices, not Monoliths

This leads me to another key change that IT organizations should be adopting to get the most out of their PaaS implementation. To achieve real agility and efficiency in application development, organizations should change their development methodology to a “microservices” architecture.

Traditionally, developers have taken a standard “monolithic” approach to building applications with all the code and the business logic compiled into one big complex binary. These monoliths quickly become unwieldy. Enhancements are delayed as they need to be serialized. Significant downtime is required to support the smallest of changes.  The technology stack is committed to prohibiting your development staff from taking advantage of advances in programming languages.

In a microservices design, your programmers decompose that would-be monolith into components that can be developed and maintained in parallel, deployed individually, and published for re-use. They develop code focused on specific transactions and assemble that code into a business solution, getting the most value out of your development resources.

Microservices and PCF form a symbiotic relationship. PCF provides a polyglot environment that allows your developers to choose the best technology stack for the task at hand, and when the solution is ready, PCF provides the flexibility to scale just those microservices that need to scale, when they need to scale. PCF also provides continuous delivery allowing you to deploy changes at the microservice level. You’re not maintaining the whole monolith anymore; you’re maintaining the microservices.

paas3

Launching a Microservices Library

A major value of microservices is reusability. Once developed, they can be shared among several applications or services. For example, logic and code such as authentication or source data access is typically written into several applications. With microservices, these components can be developed once and then plugged into the solution when needed—essentially delivering interchangeable building blocks.

Reusability is not new. However, rampant code reuse had been inhibited given the limited tools and processes for easily publishing and consuming reusable code. With PaaS, we finally have the tools to effectively manage microservice “catalogs.”

In fact, EMC IT is currently creating a microservice “marketplace” that allows us to share microservices across our IT organization and within our engineering community. Our vision is to allow contributions from other engineering talent across the company. This microservice repository will be a way to tap into new development talent and establish a central place where microservices can easily be published and consumed.
paas1
We are also looking at our existing portfolio to identify legacy applications that will best benefit from a microservice migration (reuse, scaling, continuous delivery, etc.). We will also build new application components as microservices and publish them in our marketplace.

EMC recently launched a major program that will deliver new and enhanced capabilities that allow our customers increased transparency and tracking of EMC product usage. Multiple development environments needed to be provisioned. Significant amount of code needed to be written, integrated, tested and deployed. This was a perfect opportunity to “cut our teeth” on PCF and microservices.  You can read more about this effort in the Leveraging Cloud Foundry case study documented at http://pivotal.io/platform-as-a-service/case-study/emc-it.

Like IaaS, PaaS is an important step in IT’s evolution to keep pace with changing business demands, particularly in today’s fast-moving application development environment.

About the Author: Peter Loconto

Topics in this article