Lightbend, the company behind Akka, has released an open source microservices framework, Lagom built on their Reactive Platform, in particular the Play Framework and the Akka family of products together with ConductR for deployment. By default, Lagom is message-driven and asynchronous, and using distributed CQRS persistence patterns with event sourcing as the primary implementation.
Looking at Command Query Responsibility Segregation (CQRS) in a larger architectural context there are other architectural styles available. There are database technologies solving the same problems but in a simpler way, Udi Dahan states looking into ways of approaching CQRS. There is also a way that fulfils a lot of the CQRS goals but with fewer moving parts when CQRS is really needed.
Improving on his understanding of the architecture and patterns involved in Command Query Responsibility Segregation (CQRS), Sacha Barber has created a complete CQRS demo application including event sourcing and an article with a cross examination of the inner workings.
Leslie Lamport is the author of some of the most cited computer science papers and won a Turing Award in 2013 for his seminal work in distributed and concurrent systems. This is a summary of an interview that Lamport gave to Software Engineering Radio touching themes such as his early work in distributed systems and the importance of precise thinking in programming.
At the Bacon Conference last May, bitly Lead Application Developer Sean O'Connor explained the most relevant lessons bitly developers learned while building a distributed system that handles 6 billions clicks per month.
There has been significant buzz around microservices lately, enough to generate some hype. After implementing heavy and cumbersome SOA solutions for more than a decade, are microservices the solution the industry has been waiting for? Or, are microservices simpler than monolithic solutions?
We have to maximize locality of reference and minimize contention to make systems scale, Jonas Bonér, creator of the Akka project, stated in a recent presentation about scalability in reactive systems. By using a share nothing architecture, build on an event-driven foundation and adhering to core principles that have been proven to work for ages we can write really scalable systems.
There are both commonalities and some differences when comparing architectural principles and coding styles in Akka Actors and Java EE 7 Enterprise JavaBeans, specifically stateless session beans and JMS message-driven beans, Dr Gerald Loeffler concludes in a recent introductory talk when explaining and comparing the three approaches from a high-level concurrency view.
Not all systems are based on events or facts. In some problem spaces events make complete sense; they are about facts that are happening over periods of time. But a lot of systems are instead focused on information that flow through a process, Greg Young explained at DDD Exchange Day in London last week, using handling of a mortgage application inside a bank as an example.
Using the Hexagonal architecture style allows for delaying decisions for architectural mechanisms and promotes using the same internal API irrespective of type of client, Vaughn Vernon explained last week when describing different architecture styles from a DDD perspective; the classical Layered Architecture and the more advanced Hexagonal and Actor Model styles.
Alan Berman recently explained the details of how the new Async and Await keywords impact the flow of control. Using these keywords allows an asynchronous function's return values to be processed without using explicitly defined callbacks. This allows for more natural code grouping, as calling and processing of an asynchronous function can occur in the same function.