Allegro Tech Talks Warszawa #1


Details
Join us for our first, inaugural Allegro Tech Talks Warsaw meetup in new Allegro's office location - Q22 near Rondo ONZ, Warsaw.
This meetup will be solely focused on performance-related topics. Our noble guest - Martin Thompson will tell us about "Responding In A Timely Manner" and our colleague Tomek Nurkiewicz will deep-dive into the world of "Asynchronous by default, synchronous when necessary" systems.
http://photos4.meetupstatic.com/photos/event/a/3/8/2/600_457481858.jpeg
Snacks and drinks will be served during the meetup.
Responding In A Timely Manner Timing is everything. If a system does not respond in a timely manner then: at best, its value is greatly diminished; and at worst, it is effectively unavailable. Reactive systems need to meet predictable response time guarantees regardless of load or datasets size, even in the presence of burst traffic and partial failure conditions. In this talk we will explore what it means to be responsive and the fundamental design patterns required to meet predictable response time guarantees. Queueing theory, Little's Law, Amdahl's Law, Universal Scalability Law - we'll cover the good bits. Then we'll explore algorithms and design principles that work with these laws to deliver timely responses from our applications no matter what gets thrown at them.
Martin Thompson is a Java Champion with over 2 decades of experience building complex and high-performance computing systems. He is most recently known for his work on Aeron and SBE. Previously at LMAX he was the co-founder and CTO when he created the Disruptor. Prior to LMAX Martin worked for Betfair, three different content companies wrestling with the world’s largest product catalogues, and was a lead on some of the most significant C++ and Java systems of the 1990s in the automotive and finance domains. He blogs at mechanical-sympathy.blogspot.com, and can be found giving training courses on performance and concurrency when he is not cutting code to make systems better.
Asynchronous by default, synchronous when necessary. In distributed systems, synchronous communication (RPC-style) is tempting but can quickly get out of hand. Suddenly you need to think about retrying, fallbacks, circuit breakers, failover, and latency. Tomasz Nurkiewicz explains how all of this can be avoided by preferring asynchronous communication between services, pub-sub patterns, and event sourcing. Too often migrations from monolith to microservices architecture are unsuccessful. Simply replacing in-process method calls with RESTful interfaces doesn’t mean we have a distributed system consisting of loosely coupled independent services. Quite the opposite: our architecture is now a tangled web of interconnected, slow, chatty, and unreliable components. Dozens of patterns were introduced to ease the pain, such as circuit breakers, scaling services horizontally, and load balancing — all of this to prevent cascading failures and increased latencies. We can achieve fast, loosely coupled, independent services only if we apply the dependency inversion principle at the architecture level. Moving to asynchronous communication via message passing and pub-sub patterns can prevent temporal coupling. Such coupling requires two systems to exist and work reliably at the same time in order to communicate. This is the biggest challenge in distributed systems that increases complexity, latency, and the possibility of failure.
Tomasz demonstrates how pushing changes asynchronously between systems can improve fault tolerance and make systems more reliable, faster, and more independent, focusing on publishing (pushing) changes and rebuilding state on the client side as opposed to pulling data when needed. From this point jumping to event sourcing is quite natural. Along the way, Tomasz covers the drawbacks and challenges of this architectural style.
Tomasz Nurkiewicz is a senior software engineer at Allegro. Tomasz has spent half of his life programming (for the last decade professionally in Java land). He loves backend, tolerates JavaScript, is passionate about alternative JVM languages, is disappointed with the quality of software written these days (so often by himself!), and hates long methods and hidden side effects. Tomasz is interested in charting, data analysis and reporting and believes that computers were invented so that developers could automate boring and repetitive tasks. He is involved in open source and used to be very active on StackOverflow. Tomasz is an author, trainer, conference speaker, technical reviewer, and runner and has been recognized as DZone’s most valuable blogger. He claims that code not tested automatically is not a feature but just a rumor.
How to get to the meetup? Let's meet on the ground floor near the main entrance to the building - our engineers will get you to the 13th floor. Talks will start at 18:30.

Allegro Tech Talks Warszawa #1