On 8/18/2015 4:24 AM, Juraci Paixão Kröhling wrote:
On 08/17/2015 07:53 PM, Stefan Negrea wrote:
> 1) The curent microservices are not very granular and the number is small; there are
only 3 major microservices to interact with and the functionality for each is broad.
> 2) Each microservice can quickly add supporting methods for the UI. This will polish
the API of each microservices because it has to be easily consumable.
> 3) We are forced to stay into microservice mode (it's a mindset!) and we will
continue to develop decoupled services.
> 4) Increased potential of each service to be consumed independently of the whole
because:
> a) the API will be more polished
> b) each service is always used in the mode that will be integrated outside
> 5) There is no additional place to address service quirks; each service has to solve
interface quirks right away to be consumable. I see the API Gateway component as the
fastest and first place to accumulate technical debt.
+1 , specially for points 1 and 5.
Actually, from what I can see, the "fastest and first place to
accumulate technical debt" is already the UI. The UI code is trying to
coordinate inventory data with it's logically related metric
information. And also tying together alerting with both inventory and
metrics. If we don't add hawkular-level code that can itself be a
micro-service client it is unclear to me how far we can progress without
having the UI client code collapse under its own complexity. This is a
problem we need to address as it seems (to me) that too much logic is
going into the UI code. Maybe I'm wrong, but from what I can infer from
the responses above, the alternative to hawkular-level code (some sort
of coordinating "gateway" services), is to build all of the logic into
the UI, where re-use of common workflows (like maybe, "get the alerts
for this resource") would be hidden from other potential clients.
In other words, does anyone have an alternative to "gateway" services
that isn't putting everything in the presentation layer? Or maybe this
has already been solved because the thread has not been active.