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
Build once vs build many
After we have written the code and compile it, the next step is to build and deploy it somewhere. We can go two ways here: build many times the code, deploy it many times build once the code, deploy it many times Build many This is the way many of you are familiar with, as… Continue reading Build once vs build many
Which git strategy should I use?
There are currently 4 branching strategies and with this post you should be able to know when to use them. In which situations one is more appropriate than the other? Without further ado, let's jump into them. Centralized strategy This is suitable for teams that are migrating from old style subversion to git. You heard… Continue reading Which git strategy should I use?
Are you verifying your stubs?
What is stubbing? What is verifying? Do we need both? If we look into the java docs for Mockito.when() (stubbing) and Mockito.verify() (verifying behavior) we see something strange that is common to both: Although it is possible to verify a stubbed invocation, usually it's just redundant. Well, we known that the difference between stubs and… Continue reading Are you verifying your stubs?
Junit 5
What has changed? Is it still backwards compatible? Is it hard to migrate? These are some of the questions I want to answer with this post. Junit 5 is a bundle of 3 modules: platform, a platform for developing testing frameworks jupiter, the new programming model and extension model vintage, for running Junit 3 and… Continue reading Junit 5
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
Project Lombok
I saw this by mistake(surely this is not new for some of you). I was looking in some repo, I think it was spring-data-rest or something similar and I was like: What the hell is this? You don't need to write getters and setters for your class members! Suddenly it's enough to have @Getter @Setter… Continue reading Project Lombok
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