We found a structure that works for our service.(eg clean architecture). That means we have a domain layer, a data access and application layer and of course our presentation layer which can be a rest endpoints layer. Now we want all our services to respect this structure and also we don't want to manually copy… Continue reading Maven Archetypes
Category: Microservices
Sagas in microservices
We all know that the shared data in microservices(if they are done right) is eventually consistent. This is due to the CAP theorem which states that availability is usually a better choice than consistency. In a previous post I wrote about having eventual consistency data using Eventuate. Since distributed transactions(2PC) are heavy with a bad… Continue reading Sagas in microservices
Testing microservices
Now the fun part. Assuming that we have built a running microservice environment, how can we maintain it? How do we introduce changes without breaking it? How do we test it? We know we can do end to end tests, but these are slow and we need faster feedback. How can we test the microservice… Continue reading Testing microservices
Microservice versioning
Why do we need to version our microservices? Microservices are basically APIs. These are consumed by the clients. We should be able to evolve them without any impact to the clients. We should not force the clients to use the new changes in services and more importantly this should not break the clients. There must… Continue reading Microservice versioning
Securing microservices
Microservices are hard. Complexity is high. Securing microservices is even harder and even more complex. Where do we start? The first words that come to my mind are authentication and authorization. Firewall. Trust. Session. Tokens. We need to secure our applications and we need to secure our containers. Securing applications We can build a SSO… Continue reading Securing microservices
Log tracing with Sleuth and Zipkin
In a microservice environment it's hard to trace errors and logs, as we have lots of moving components. We could go into each service and read the logs, then aggregate them and finally with lots of patience try to understand what is happening. But we should not do this, we have alternatives. One of them… Continue reading Log tracing with Sleuth and Zipkin
Zuul – Edge Server
In the last articles we have introduced an custom gateway in order to hide services and to load balance requests among others. Now the guys at netflix implemented this pattern and created Zuul. Personally, it reminds me of Apache Server. Zuul core consists of filters, which you can use to intercept the request and response… Continue reading Zuul – Edge Server
Hystrix
Microservices should respect the CAP theorem. That means when a failure occurs, you should choose between consistency and availability, and availability is the best choice. Hystrix has the role to keep the availability high when a partition occurs, by stopping cascading failures and providing fallback. These partitions should not be visible to the end user,… Continue reading Hystrix
Eureka and Feign
Eureka Eureka is a REST (Representational State Transfer) based service used for locating services for the purpose of load balancing and failover of middle-tier servers. We have eureka client and server. The server holds the information regarding the service instances, while the client interacts with the server and act as a round robin load balancer.… Continue reading Eureka and Feign