Microservices Made Easy

Synopsis

Let’s start with a quick definition:

Microservices – also known as the microservice architecture – is an architectural style that structures an application as a collection of services that are

  • Highly maintainable and testable
  • Loosely coupled
  • Easily wired together
  • Independently deployable
  • Organized around business capabilities
  • Owned by a small team

Think Modular When Designing

The difference between a monolithic vs microservice approach starts with the design.  Uber models lead to monolithic apps while modular models lead to a microservices outcome. With Harbormaster, it’s actually very simple.  Harbormaster is model driven.  If you want a set of microservices, define a set of service based models. Rather than a single model for the entire system, take a modular approach and define smaller models that represent subsystems. Importantly, Harbormaster gives you the freedom to match the right tech stack and model source for a given service.

Unlimited Design Options

To illustrate this, let’s define a system made up of a handful of services:
Service Input Source Rationale Outcome
Order A new model for a new service Decide it is best to create a customer order entry system using an offshore team proficient in Go Go/Postgres tech stack based microservice
Sales A new model to extend an existing service Current sales system has an API but lacks required features Angular/MongoDB tech stack based microservice
Accounting A new model as an API layer to an existing system An existing COTs accounting system does not have required functionality AWS Lambda Serverless tech stack based microservice
Support Refactor a model from an existing custom system written in the 90s using Java/J2EE
  • Current team is comfortable writing in Java
  • The monolithic nature of the current system has become a burden
Spring/MySQL tech stack based microservice
Shipping An existing model to a legacy system The existing system is not ready to be completely rewritten, but leveraging its model allows reuse on a new tech stack Apollo GraphQL

Being able to make these types of decisions is what Harbormaster was built for. The outcome is:

  1. Five distinct loosely coupled microservices.
  2. Each microservice uses the best tech stack possible.
  3. Team and environment strengths are accounted for.
  4. Each model is smaller and more manageable than a single large model.
  5. Can add a system refactoring event into the scenario.
  6. Easy to mix-n-match languages, databases, and architecture styles.
  7. Ready to be communicated with over HTTP via well defined APIs.