Posts

Hubpress now has RSS support.

The URL for RSS for my blog is http://vanilla-java.github.io/rss/

Goldilocks Microservices

Image
Goldilocks Microservices Peter Lawrey Most answers for Java and JVM on StackOverflow.com (~12K), "Vanilla Java" blog with four million views, founder of the Performance JUG, Java Champion How to structure microservices? When structuring microservices we have to consider; how fine grain should our components be? how distributed should they be? I believe it’s important to treat these as separate concerns, even to the extent of ensuring your business logic components are not dependant on the choice of transport, or even whether you have a transport at all. https://vanilla-java.github.io/2016/06/30/Goldilocks-Microservices.html

Talks on performant microservices, exception handling and documentation driven development.

I have three talks I am giving at the moment. The first I have given a few times, the remaining two are still in beta. Latency sensitive Micro-services What can Trading System and Micro-services learn from each other? What strategies do they have in common? http://www.slideshare.net/PeterLawrey/low-latency-microservices-in-java-qcon-new-york-2016 Modelling interactions between microservices. Describing interactions between micro-services in code, as readable messages and graphically. (Beginner to Intermediate) Exceptional Exception Handling There is many different way to handle exception apart from the typical log/ignore and pretend it didn't matter. What are the alternatives and which might you use them. Documentation Driven Development to make contributions easier. How can documentation driven development make it easier to start using and improve adoption rates for your project/product? How does it make it easier to contribute? Why is it so important for Micro...

Distributing Common Java APIs

Image
Distributing Common Java APIs Peter Lawrey Distributing data stores vs Private data stores in Microservices Distributing data containers e.g. Maps, can be a way of avoiding having to think too much about distributing your application. Your business logic is much the same, and it is your data collections which are visible to all your services. Using centralised or even distributed data stores have a number of scalability issues, as it requires every low level data access to be distributed in a generic way which isn’t optimised for particular business requirements. Distributing business components with private data stores is the favoured approach of Microservices and it limits the "surface area" of each service which reduces security issues, performance considerations and gives you more freedom for independant changes to service’s data structures. In this review, I will be focusing on distributed data containers, largely because the interfaces are avai...

Modelling Microservice Patterns in Code

Image
Modelling Microservice Patterns in Code Peter Lawrey Service Interactions There is a number of simple interactions a service can support. Which pattern is best for your application can depend on what an existing application expects, and what latency requirements you have. Broadly speaking these interactions fall into client-server and peir-to-peir messaging. For peir-to-peir messaging, one approach to take is  Lambda Architecture  however from supporting GUIs, client - server models can be easier to work with. I feel it is important to design components which could be tested and debugged together, as in a monolith, but can be deployed as multiple  right sized  services to different threads, JVMs, or machines. https://vanilla-java.github.io/2016/05/17/Modelling-Microservice-Patterns-in-Code.html

Simple Asynchronous Microservices using Lambda Architecture

Lambda Architecture Lambda Architecture is a simple, powerful though limited example of a Microservice. As it is so simple, you want to use it as much as possible, to expose the more complex services/component in your system which cannot support this interaction model. Lambda Architecture   depends on a data model with an append-only, immutable data source that serves as a system of record. It is intended for ingesting and processing timestamped events that are appended to existing events rather than overwriting them. State is determined from the natural time-based ordering of the data. To read more  https://vanilla-java.github.io/2016/05/16/Simple-Asynchronous-Microservices-using-Lambda-Architecture.html

Microservices are about applying a group of Best Practices

Microservices Denial A number of times clients have said; they can’t imagine their organisation using Microservices. I found this surprising as I know those people are using many of the principles of Microservices already. I can understand that they feel no need to join the hype around microservices, but the reality is, like it or not, you are most likely using some of the best practices Microservices advocates. Stages of denial It all seems like hype, we don’t go in for that. Perhaps not all hype, but does it really mean anything. It all sounds pretty familiar. It sounds like what we are doing already. Formally or informally, most likely you have been following some best practices already. Adopting Best Practices. Perhaps you don’t like the name Microservices, and perhaps not all the different things people associate with Microservices are right for your team, your projects. Instead lets consider how do you formalise what you are trying to achi...