Modern applications are required to be fault-tolerant and scalable, which means that they need to be distributed (single computers can fail). Unfortunately, building and operating distributed systems is not an easy feat, as the ever-growing amount of distributed systems research shows. To make things worse, there is no lack of available architectural approaches and technologies to choose from, all of them promoted as being the perfect solution for all of your business problems and only seldomly being completely transparent as to their respective tradeoffs.
I have over a decade of hands-on experience with designing, building and fixing production systems in various industries (mainly finance, mobility, energy and telecommunications). Lately my focus has been on reactive systems built on the Java Virtual Machine with tools such as Akka and Scala.
VCharge has a complex and naturally reactive technology which is working in production but needs to rapidly scale by two or three orders of magnitude. We hired Manuel to help with this. He is perceptive and practical, detail-oriented and abstract, hard-working and laid-back, smart and humble. He is fun to work with and learn from, and a great teammate and all-around strategist / thinker in addition to having deep reactive / Akka-based experience.
Overall, Manuel is fantastic, and he comes with my strong recommendation if you have an ambitious, distributed, high-speed technology that needs to flourish and scale.
I contacted Manuel to teach us a bit more about Akka for a new project that required our team to get to know the distributed side of Akka. The course went really well — so well, in fact, that we’re probably going to book another one for more of our people.
I first reached out to Manuel via Twitter and we hashed most of the course out in direct messages. This is the kind of flexibility and openness I welcome from partners.
We had to replace a key component in our system and brought Manuel in to introduce us to Akka. We had already been looking closely at a different solution, but Manuel’s prototype quickly convinced us that Akka would be the best choice for us.
Manuel used three connected Raspberry Pi computers to demonstrate how lightweight and fast the Akka toolkit is. He then got our team up-to-speed on the technology and supported us while we developed and successfully implemented our new system with Akka. In this critical process, his expertise with distributed systems was invaluable to us.
Security is paramount when it comes to cryptocurrencies and banking. So when these two interact, security becomes an even bigger deal. Our solution SILO, which launched in 2018, finally makes it possible for banks to safely store their clients’ crypto-assets.
We got Manuel on board right away when we started building SILO because of his outstanding expertise in Akka Cluster. He helped us kickstart the project and accompanied us during the first few months of development. By putting best practices in place, Manuel made sure SILO was off to a good start. This has allowed us to build a successful product that is secure, reliable and integrates seamlessly with the infrastructure of financial institutions.
I consulted Manuel during my recent venture into software as a service, and he has been a great resource. His input has helped me obtain the technical solutions for the Nexxchange platform that I’d been envisioning.
I value his know-how in both technical and business matters and how diligently he translated technical content for me.
Paidy’s business is rapidly growing, and with each new customer, we face exciting new challenges and targets to strive towards.
The recent on-boarding of a significant new customer with a newly agreed-upon Service Level Agreement meant we had to review the latency requirements of our core payment service.
Manuel, who is incredibly experienced with Akka Cluster, helped us better understand the background behind the elevated latencies in our core services and improve the issues. We are now on the way to having predictable latency at the scale we will need to support our growth, including during update and failover scenarios. Manuel’s work was invaluable in helping us achieve this milestone for Paidy.
When we wanted to switch our technical platform to a reactive architecture, Manuel supported and coached us through the entire process. He helped us rewrite our platform from scratch and migrate the massive Talenthouse databases.
We only had three months to pull it off and wouldn’t have been able to do it without Manuel. With enthusiasm and creativity, he set us up with a brand new and stable platform that can now grow with our company.
Manuel recently delivered one of his courses at Deveryware to help our development team get on track with Akka for Java. It makes things a lot easier that Manuel also offers his workshops in French, and the whole team made a lot of progress during the training.
I especially appreciate Manuel’s flexibility and the work he put into making the training a perfect fit for us. He even went out of his way to accommodate our scheduling problems so that all our developers could attend the course.
We started MOIA because we wanted to create a ride-sharing service that makes transport more environmentally friendly and more affordable. In order to meet our Hamburg launch target, we needed some external help to speed up the development process, and this is where Manuel came in.
Manuel initially consulted with us on evaluating and setting up split-brain resolution for Akka Cluster in the context of our Kubernetes deployment.
Then, to offer a competitive app, our payment service needed to be rearchitected so as to support more payment methods. With time until our Hamburg launch running out, we asked Manuel to support our payment team with the overhaul.
He joined the payment team where he helped design the new version of the payment service and directly contributed to its development.
It was great to see how well Manuel integrated with our team despite not technically being a part of the company. He truly cared about our service and what we were creating and was essential to us hitting our target launch date.
As the world’s largest food delivery network, logistics are a vital part of our business and it’s important that we’re always operational and avoid outages at all costs. A critical service of our logistics infrastructure uses Akka Cluster, so we reached out to Manuel to get input from a reactive systems expert.
Manuel conducted a thorough reactive audit, reviewing the architecture of one of our core applications, and then discussed his findings with us in a one-day workshop. He helped us improve our application and optimise our infrastructure so we can ensure maximum uptime. I’m happy to say that our logistics are now running even more smoothly for our brands all around the world.
Wirecard has been growing substantially over the past couple of years. Consequently, we needed to rethink our architectural paradigm to support this sustained growth going forward.
We found that reactive microservices were the perfect solution, allowing us to scale up in terms of transaction volume. The microservices architecture also lets us fully leverage our international developer teams as it allows them to work independently without requiring constant communication, which is crucial for a company that operates on a global scale.
Manuel has been accompanying us on this journey since 2016, training our teams on Akka and Akka Cluster. He also performs regular architectural reviews, which helps us stay on track as the project evolves. Furthermore, Manuel has been giving us great advice when it comes to advanced technical topics, such as performance tuning.
It’s incredibly helpful to have a distributed systems expert at hand to guide our teams so we can ensure our core systems are capable of supporting our business growth.
Update: there’s a podcast episode about this The year is 2021. As the world is still deeply affected by the COVID-19 pandemic, the United Nations have decided that in order to prevent […]
In part 5 of this series, we started to scale the application from a local one to a clustered one by introducing Cluster Sharding. In this article, we will continue our effort […]
Update 21/11/2019: Fixed comment about shardId extraction in relation to ShardingEnvelope Welcome to the fifth part of the Akka Typed series! In this part, we’ll leave the safe harbor of a single […]
When it comes to the latency of processing a request in a distributed system, everyone knows (or should know) that doing things over the network is the most expensive thing you can […]
Welcome to the fourth part of the Akka Typed series. In the first part we had a look at the the raison d’être of Akka Typed and what advantages it has over […]
– James Roper, lead developer of the Play Framework
© Copyright 2020. manuel bernhardt. All rights reserved.