Nowadays microservices are widely adopted in the industry, but we're still trying to understand the best practices for building and maintaining successful systems. HTTP/RPC synchronous communication is very popular in microservices, but it has a lot of challenges like service discovery, retries, back-pressure, etc. From the other side, microservices can be build to communicate asynchronously using messages. This approach also has its pros and cons, but I'm confident that most of the businesses can benefit from it. Also, messages are natural way to exchange data in actor-based systems, so it should be possible to leverage actors for building great microservices environments. I want to share my experience and show how Enterprise Integration Patterns can be used to design and build fine-grained microservices with asynchronous communication using actors.
Akka is a toolkit and runtime for building highly concurrent, distributed, and resilient message-driven applications on the JVM that follows
I’m going to give a short introduction to Scala programming language and follow with the fundamentals of Actor-based programming and Akka framework. We’ll finish with more advanced topics like Akka HTTP, Akka Clustering, Akka Persistence and Akka Streams.
Prerequisites & Requirements
No experience with Scala, Akka or Actor-based systems is necessary. Please make sure you have the latest Java 8, Scala and SBT (Scala build tool) installed.
Yaroslav Tkachenko is a Senior Software Engineer, Lead at Mobify. He joined Mobify to work on Mobify Platform, which includes Progressive Mobile and Engagement Marketing solutions.
Before that Yaroslav was a Director of Engineering at Bench Accounting. He joined the company as a first employee (and a first Software Engineer) and helped to grow the engineering team from 3 to almost 30 people.
At Bench Yaroslav worked with Platform and Integrations teams and was mostly focused on designing and implementing microservices architecture using various stacks (Scala, Node.js), building low-level infrastructure and contributing to DevOps tooling.
Before joining Bench, Yaroslav worked for various digital agencies and e-commerce.
He’s interested in: