Posts

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...

Bad String abuse

In this Java Puzzler, it has some serious abuse of Strings, but what is going on? https://vanilla-java.github.io/2016/04/21/Bad-String.html

An Interveiw on my talk for Low Latency Microservices at QCon New York

Key Takeaways Learn  lessons on developing low latency microservices with Java. Understand  how you can make asynchronous messaging simplier. Gain  practical advice on handling failure from large scale, low latency JVM based microservice implementations. Abstract In this talk we will look at the differences between micro-services and monolith architectures and their relative benefits and disadvantage. We will look at design patterns which will allow us to utilize these different strategies as a deployment concern without significant changes to the business logic. We will look at how micro-service architecture can be implemented under low latency constraints of 10 - 100 micro-second latencies, in Java in particular, and how these strategies reduce the impact of serializing data and logging. https://qconnewyork.com/ny2016/presentation/low-latency-microservices-java