Monday, May 23, 2016

POC in HTML/NodeJS, Java microservices — what I have done to engage better with my product team and consumers of our microservices

My team and I have been working on an important strategic project in our company. We are trying to improve our agility and in the process of doing that, it is important that our product team gets to see their own product in action before we end up spending multiple iterations developing it.
Sometimes you find yourself developing a microservice that is used in the overall design and then you realize that you really need to meet with the teammates who are going to consume your microservices. You need to agree on the APIs (request / response). Agreeing on these APIs is valuable to our UI developers and possibly developers of other microservices that may consume my microservice, but it does not really give a good live representation of the overall product to product management teammates after 1st or 2nd sprint. My goal was to have a journey working from A to Z in the first sprint.
What I decided to do is the following:
(1) Picked the most important customer journey.
(2) Created a diagram of this customer journey and annotated the diagram explaining what microservices would be called at what point in the journey. Keep in mind that this is all based on my initial thinking. I know that the design was not perfect. However, no project was successfully delivered without the original design and no project was delivered by the original design. Having that initial design is very important for having more productive conversations when you walk into a room with a lot of smart developers.
(3) Coded three core microservices to be functional without hard-coding and with the actual database backend. I also put together a stubbed version of some peripheral microservices.
(4) Dashboard/Programmer’s Page: I coded a simple HTML page (hosted by NodeJS) that uses Javascript to make AJAX calls to all microservices to fetch the data from all the tables and to display in somewhat presentable fashion. It is a more presentable version of your data than directly accessing the database in your demo.
(5) POC Website to represent a customer journey: This is a list of HTML pages hosted by NodeJS. These HTML pages are very simple pages but very functional as per the mockups provided. These pages are functional to the degree that they do call the POC versions of microservices and make the journey very interactive without using any hard-coded information.
The goal was to have this overall POC be used by product owners so they can provide good feedback and that feedback can be added to subsequent sprints. By building this POC, we already achieved one goal and that is our initial design which will evolve in future sprints. In the process of developing this overall POC, I learned so much about what I want in these microservices and it helped me define the initial version of the data structure for each microservice and the initial version of the business logic needed to support the customer journey that I picked. Yes, this design will need to evolve and improve.
I kind of coded most of this in my personal time during the first sprint because I thought it would help out the team a lot. What I would like to see in future projects is that this approach becomes the definition/standard/guideline for every sprint #1.
Almir M.

No comments:

Post a Comment