By John Motz, CTO, GrayMeta –
First conceived in May of 2011, the concept of microservices isn’t new. Microservices is the idea of narrowly focusing on a single task and is how most people learned to write software and write classes concentrated on a single task or objective. What we have found, although it may not be obvious to many, is that new challenges brought on by enormous amounts of data in software development can be solved exceptionally well with a microservices approach.
This is because of the fundamental idea of maintaining hyper-focus on a single task. Issues begin to bubble up whenever we start to bundle many challenges into a monolithic software application. The resulting application becomes complex to scale, and difficult to integrate and extend. Unfortunately, this is where inefficiency in development begins, and where complex business process and unmanageable workflows reign as king.
If you eliminate the monolithic, solve everything-everywhere software application and instead take a hyper-focused approach of deploying each module as an individually deployable unit that communicates efficiently with any other service, you instantly create unprecedented opportunities by enabling simplified workflows in a focused, incremental way that can scale and integrate with ease.
Why it matters
* Code and workflows become simple, easy to manage, quick to maintain, and efficient to deploy.
* Refactor or rewrite the entire service and workflow with confidence because they are loosely coupled and not strictly tied to one another.
* Maintain independence between each microservice and workflow to ensure new features or upgrades to existing software/hardware platforms won’t affect existing services and workflows.
* Extend the flexibility of your technology choices and leverage best-in-class services, rather than making decisions across the entire platform or application that may compromise the overall quality.
It’s okay to lose control
The most common “workflow” today is based on monitoring each transaction within a process. From the beginning to the end, the process is often managed by a document or a form. Multi-layered approvals drive many of the most popular workflows with various stakeholders and disparate tools.
In software development, Services Oriented Architecture (SAO) and Enterprise Service Bus (ESB), caused us all to lose a bit of control. For the most part, the engine behind the process controlled everything and a manual process was used as required.
There are frequent hand-offs of each message to various message queues and the message then comes back to the process controller, which continues to manage the process. Whether you are an organization using Excel spreadsheets and your process engine is an individual managing line items in a document, or you are an application using ESB the original thinking is the same.
With microservices, this model is fundamentally changed. The GrayMeta Platform is a prime example of how microservices can enable enterprise-wide efficiencies. Instead of having a process engine or an ESB controlling a small number of significant services, the GrayMeta Platform has many small services that can send and receive messages or respond to events from any of the other services.
An original message or event to a service could affect the transmission of thousands of other messages between the microservices before the initial request is considered complete.
Everything said, we have lost control. And while we may not have the control we have all grown accustomed to, we still have visibility into the process. Plus, we have now gained flexibility to apply our customer’s required patterns for SLA and exception management.
This can be accomplished by inserting highly targeted microservices into an existing flow, with the intent of driving efficiency and quality improvements.
This allows our clients to incrementally improve their existing workflows rather than building a completely new workflow and control system. Eventually, this leads to a cluster of discrete microservices, replacing the legacy controller and/or processes.
Microservices and GrayMeta Platform: a fundamental change
Once developers are free of worry—about where data is located or how they’re accessing it—operators are free to focus on data as a whole. The separation of roles enables developers and operators to be much more productive while making better decisions with an extreme focus on highly defined challenges.
The move to microservices platforms like GrayMeta can enable new opportunities to work with existing processes and applications, providing opportunities for increased productivity. Teams can start thinking about creating discrete tasks such as content inspection, encoding, publishing, editing, curating, building highly accurate workflow and services in weeks vs. months or years.
At GrayMeta, our teams embrace this approach—to enrich our clients’ data with a library of over 30 services like MediaInfo and ExifTool for extracting technical metadata and Microsoft Vision for face and object recognition.
“Jarvis, sometimes you gotta run before you can walk.” (Tony Stark – Iron Man)
We have all heard the saying “crawl, walk, run” or “walk before you run.” With microservices, we say, “let’s run.” Microservices enable a paradigm shift in traditional thinking by mitigating the risk that typically comes with implementing new technology and workflows on legacy monolithic applications. The best way to get started is, well, to get started.
Find a small, well-defined problem. Assemble a small team of developers that love exploring new technologies and approaches. Then, let them lose. Let them build a solution with a microservices approach. You will start to quickly solve workflow problems while enabling your teams to move faster and with more focus.