Everyone seems to be talking about event sourcing at the moment, either as an exploratory concept in specific work places in Melbourne, why or how it should be done, or simply that it is not. Even Martin Fowler spoke about it at YOW in Sydney last month at a time which coincides with more and more large development teams in Australia adopting the approach.
Fowler talks about event sourcing as making sure that each change of state of an application is captured in an event object which creates an audit trail of how the application arrived at it’s current state, rather like versioning/Git for application state. The approach also gives Developers an extremely powerful way of debugging by duplicating a production system into a lab where events can be replayed if something goes wrong with the benefit of being able to add monitoring.
We are seeing more and more .Net Engineers investing their time where the skills demand is ramping up, adopting F# into their tool box as they take advantage of it’s type system which lends itself to domain driven design (DDD) which bases complex designs on the underlying semantics of the domain in which it is used.
Fowler has been saying that event sourcing is about to explode for years and whilst it seems to be picking up some momentum in the face of business constraint, it has actually been used in Melbourne for a while. In particular the guys from Picnic Software gave a talk on Event Sourcing with F# at the ALT.Net MeetUp back in August 2014, diving into concepts, pros and cons and going into the features of F# along with appropriate libraries.
However, the person best known for the approach is probably Greg Young, who talks about the advantages of Event Sourcing in this blog post where he talks about one of the consequences being that you actually test what is not happening as well as solving a problem of having two models where the state of an application is just published to an event store and removes the cost of issues with synchronization and divergence.
Over the past two years we have been very lucky to have been chosen to help assemble high performing technical teams tasked with building microservices and rebuilding monoliths as a collection or collections of microservices. As demand for our search service remains buoyant, clients are coming to us with new and challenging projects particularly within the sphere of .Net development which includes having event stores which enable teams to be able to rebuild objects without just relying on current state by using Event Sourcing.
If you are working in an environment where you feel there could be a better way and are interested in learning more about how event sourcing is appearing in Melbourne, please get in touch.