Microservices with Spring Cloud

This is the start of a series of posts about my work building microservices with spring cloud.

It all started with the idea of building a small inventory management application for a client. Some research revealed no appealing existing software. I also looked at the major open source ERP systems and they all are monolithic monsters. If you need an inventory, you will have to live with the whole ERP system.

So my thought was that there must be another possibility. It should be possible to build a collection of small applications that you can use independently. If you need only the inventory part, take it (and some dependencies). Funnily one of the biggest buzz word seam to fit perfectly: Microservices!

All the work can be found in my github repository.

The first posts will be about the basic decisions at the start. Which technology will be used.

The current technology stack looks like that:

  • Persistence: MongoDB
    • Easy to start with (no fiddling with schema / DDL etc)
    • Cool support for Aggregation Relationships (which are hard in JPA)
  • Backend: Java, Spring Boot, Spring Data MongoDB, Spring Data Rest, Spring Hateoas
    • Easy to create REST interface with Spring Data Rest
    • Spring Boot for easy setup and creation of executable jar
    • JSON based REST interface (Hatoas style)
  • Frontend: Android, Dart, eventually Typescript
    • Always my hardest part (me don’t like JS)
    • Android client with barcode scanner
    • A small Dart frontend to try it out
    • Possible switch to typescript