Everything is a stream - so learn to think reactively! You need the skills to reason, visualise and communicate about concurrent and asynchronous problems. Join Lee Campbell and Matt Barrett to gain a deeper understanding of the challenges and rewards of asynchronous and concurrent coding.
This course is a practitioner’s guide to Reactive Extensions, teaching you to create elegant solutions through educated design decisions. Through a combination of programming exercises and discussion, you will learn how to think in Rx. This session will cover application development for both client and server, with different programming challenges aimed at thick client, web, and server technologies.
Participants should provide their own laptop, have a working understanding of at least one of the targeted languages and an IDE and test runner that they are familiar with.
Using Netflix as a case-study and NetflixOSS components for hands-on practice, learn how to apply reactive principles to application architecture both in the "big" and the "small". Starting at the distributed systems level learn how to handle failure, adapt to changing environments and usage patterns, and iterate quickly in an always-on globally distributed system. Then we'll dive into the code level building blocks of how reactive programming patterns enable fault tolerance and scalability within an application.
Reactive Applications are the next major evolution of the Internet. They allow for applications to be responsive, scalable and resilient by building on a fully event-driven foundation. Typesafe:s Reactive Platform consisting of the Play Framework, the Akka middleware and the Scala programming language embraces this new programming paradigm which allows developers to write interactive applications that are always available and which adapt to changing load by being distributed by design.
In this 2-day tutorial session we will be building a reactive application using Play and Akka. The application will consist of a clustered back-end service and a web front-end querying it using a RESTful API. We will walk through the process of designing such an application and learn how the implementation is structured, including a tour of the tools used for Going Reactive.
Candidates in this 1-day workshop will be introduced to a completely new way of thinking about concurrent programming. By taking a hardware up, rather than theory down, approach you'll learn how modern x86 hardware operates and how when you show sympathy for this hardware your algorithms will absolutely scream. In addition to learning the basic techniques of building high-performance data structures, a performance testing and profiling discipline will be introduced that is fundamental to working at the extremes of systems performance.
Understanding Mechanical Sympathy
Concurrent and High-performance
by Gil Tene
Managing, monitoring, and improving application responsiveness is a common need for many software professionals. Whether you develop Java applications or manage them, understanding application responsiveness and the major mechanisms that affect it is key to achieving successful applications and happy users. In this workshop, Gil Tene (CTO, Azul Systems) will provide an in-depth overview of Latency and Response Time Characterization, including proven methodologies for measuring, reporting, and investigating latencies, and and overview of some common pitfalls encountered (far too often) in the field. While most of this discussion will apply to all application environments, some specific considerations in JVM based environments will be covered as part of this workshop.
Our discussion will include an exploration of of the common needs and motivations for understanding the behavior of application response time and latency, and ways to successfully capture these descriptions and relate them to business needs. However, even good characterization of bad data is useless. If measurements of response time present false or misleading latency information, even the best analysis can lead to wrong operational decisions and poor application experience. Gil will demonstrate and discusses some common pitfalls, false assumptions and problematic measurement techniques that lead to dramatically incorrect reporting results, and will explain how these false measurements naturally occur using the most common measurement methods and tools in use today. We will discuss the coordinated data omission problem, and ways to work around it, and will introduce and demonstrate how simple and recently open sourced tools can be used to improve and gain higher confidence in both latency measurement and reporting.
Garbage Collection, in platforms that use it, is often dominantly responsible for application responsiveness and latency behavior. Gil will review and classify the various garbage collectors and collection techniques available in managed runtimes today. We will define terms and metrics common to all collectors, classify some commonly available collector mechanisms, and discuss the tradeoffs involved in balancing responsiveness requirements against other concerns (like throughput, space, etc.). We will include an interactive discussion of how these tradeoffs play off in the real world.
WHO SHOULD ATTEND
Software developers, architects, technical leaders and anyone with an interest in designing or measuring for latency in software environments.
latency, response time, jitter, stalls, hiccups, coordinated omission, garbage collection
18th–21st November 2014