Microservices Made Easy
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 DesigningThe 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 OptionsTo illustrate this, let’s define a system made up of a handful of services:
|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||
||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:
- Five distinct loosely coupled microservices.
- Each microservice uses the best tech stack possible.
- Team and environment strengths are accounted for.
- Each model is smaller and more manageable than a single large model.
- Can add a system refactoring event into the scenario.
- Easy to mix-n-match languages, databases, and architecture styles.
- Ready to be communicated with over HTTP via well defined APIs.