TT Session 13: Web

Location: 
Date and time: 
Friday, June 3, 2011 - 10:25 - 12:05
 
  • Finagle: A Network Stack for the JVM
    Marius A. Eriksen

    We share our experience building and deploying Finagle, a library for building robust and highly performant asynchronous RPC servers and clients. Finagle is built on top of Netty and uses futures as a unifying abstraction in order to provide an intuitive and powerful API on top of asynchronous dispatching.
    Finagle supports a variety of RPC styles, including request-response, streaming, and pipelining. It is protocol agnostic, and we have implemented codecs for the core protocols at Twitter.
    We will talk about:
    • the design & technical underpinnings of Finagle
    • the use of futures and channels
    • integration with Java projects
    • its use at Twitter
    • developer experience
     
  • Task-Driven Scala  Web Applications
    Timothy Perrett

    Within this talk we will discuss patterns for building highly interactive, massively scalable web applications by leveraging some of the best projects available in the Scala community.
    Recent years have seen a distinct shift in user behavior online: applications now have to deal with heavily write-orientated, event-driven architectures (E.D.A) and real-time user interfaces. Couple this with the operational challenges of scaling these types of applications and one can quickly find themselves having to cope with a lot of additional complexity.
    With this in mind, this talk guides you through some of the paradigms associated with E.D.A and Task-based User Interfaces, whilst discussing how the Scala eco-system has evolved over the past years into a vibrant and intellectually rich place, which has yielded many excellent projects, such as Akka and Lift. Whilst these projects have remained largely independent and standalone, consider that utilizing parts of each can make building these highly event-driven, interactive applications far easier than it would otherwise be with more traditional software stacks.
    Prototypical applications found in industry today are heavily orientated toward solving the relevant problem, with a UI that is designed for simply satisfying input to the domain objects; resulting in UIs that often leave the user with little specific information on what the primary intent of the display is. Task-based UIs however can greatly assist in these scenarios by placing the user experience in a central place during the inception of any given system. Task-based UI design is orientated toward capturing user intention and sending messages (or commands) back to the server, rather than mutated transformation objects (DTOs) that are simply persisted by the system, with little appreciation for what specifically changed or what the user was achieving.
    This notion of sending messages has a strong synergy with actor based messaging, and specifically as the messages are being sent from the client-side UI, with responses being dynamically propagated back to that same client, that in turn is an excellent fit with Lift’s comet support, which is entirely based on actor message sending. More broadly, within this talk you will hear how you can neatly integrate a highly interactive, task-based user experience powered by Lift and propagate user events through entire software architectures, with a robust, distributed backend provided by Akka. Specifically, patterns of implementation such as CQRS and Event Sourcing have excellent synergy with the actor pattern and are superbly supported by Akka with its lightweight, fault-tolerant actors.
    Building asynchronous E.D.As within Scala is a lot of fun, and this talk will give attendees a view into what is possible and aim to inspire them to implement task-based UIs and message-orientated systems with the awesome Scala eco-system of tools.
     
  • Play! + Scala: Adding more Fun to the equation
    Sadek Drobi, Guillaume Bort

    Play! framework is a simple lightweight web framework that has originally been designed for Java programming language on top of the JVM. Its uniqueness on the JVM is in how simple, productive and scalable it is yet being isomorphic to the HTTP protocol.
    Play! Scala targets the Scala language keeping key properties of the framework. It uses a more functional and Scala idiomatic style of programming without giving up on simplicity and developer friendliness.
    In this talk we will do a quick introduction into Play! Scala and highlight key components of the framework and main design techniques that will enable you being productive getting your scalable web application up and running.