SlideShare a Scribd company logo
Real World Scala hAkking


  Raymond Roestenburg
About me

•   Java since 1997
•   Scala since 2010
•   Mostly backend systems
•   Lead architect Traffic Management at CSC
•   Akka committer

code: http://github.com/RayRoestenburg
blog: http://roestenburg.agilesquad.com
twtr: @RayRoestenburg
Company I work for




             Traffic Management
             • Section Control
             • Weigh in Motion
             • Traffic Information
             • Traffic Enforcement
Agenda

•   @MIGO-BORAS sensordomain
•   Sensor networks
•   Typesafe stack
•   Akka Actors
•   Apache Camel Integration
•   Remote Actors
•   Monitoring
•   Testing
•   Deployment

Recommended for you

Akka Fundamentals
Akka FundamentalsAkka Fundamentals
Akka Fundamentals

This document provides an overview of Akka fundamentals including: - The actor model which uses message passing between encapsulated state and behavior units to achieve concurrency - The Akka actor API for building fault tolerant distributed applications in Scala and Java - Fault tolerance techniques in Akka like supervision which allows actors to monitor and respond to failures of child actors - Routing which provides abstractions for distributing messages to multiple receiver actors

actor modelakkascala
Reactive Streams - László van den Hoek
Reactive Streams - László van den HoekReactive Streams - László van den Hoek
Reactive Streams - László van den Hoek

This document provides an overview of reactive programming concepts including Reactive Streams and implementations like Akka and Akka Streams. It discusses: - Non-blocking processing with asynchronous event loops and back pressure to prevent OutOfMemoryErrors. - Use cases for Reactive Streams like managing uneven producer/consumer rates, ordering requirements, and efficient resource usage. - Key aspects of Reactive Streams including the Publisher, Subscriber, and Subscription interfaces. - How Akka implements the actor model for building concurrent, distributed applications and provides features like ordered message delivery, location transparency, and high-level components. - How Akka Streams implements Reactive Streams for building data pipelines

reactive streams
Multi-threading in the modern era: Vertx Akka and Quasar
Multi-threading in the modern era: Vertx Akka and QuasarMulti-threading in the modern era: Vertx Akka and Quasar
Multi-threading in the modern era: Vertx Akka and Quasar

Everybody wants scalable systems. However, writing non-blocking applications in Java is not an easy task. In this session, we'll go over 3 different frameworks for managing multi-treading and concurrency support (Akka, Vertx and Quasar).

multithreadingquazarakka
@MIGO-BORAS

•   Koninklijke Marechaussee
•   MTV (Mobiel Toezicht Vreemdelingen)
•   Prevent illegal border crossing
•   Sensor domain
•   Fixed locations
•   Mobile vehicles
•   Cameras, Radars
•   Vehicle properties
•   January 2012
Sensor networks

• Usable for many applications in our field
     •   Distributed along highways and provincial roads
     •   Traffic Enforcement
     •   Traffic Information
     •   Other applications
     •   Roadside systems
     •   Range of sensor types
          – Camera’s, Infrared, Laser, Piezoelectric, Loops, Mobile
            units, …
     • Remotely Configure & Control
Why Scala & Akka

• Less code, less bugs
• Less code, same VM power
• Experienced team (Java, C#, C)
     • 3 experienced Java devs
     • 1 experienced C# dev with no Java experience
• Need to interoperate with existing Java and
  C (JNA)
• Simplify development (C->Java->Scala)
• Ubuntu
Scala 2.9.x

•   Learning curve (Start with simple features)
•   Traits, Tupels, Stackable Traits
•   First Class Functions
•   Scala Collections
       • map, flatMap, partition, foreach, filter, groupBy..
• Option type
       • map.. orElse, foreach,..
• Case classes
• REPL, DSLs, Extension methods

Recommended for you

Zeppelin meetup 2016 madrid
Zeppelin meetup 2016 madridZeppelin meetup 2016 madrid
Zeppelin meetup 2016 madrid

The third session of the meetup in Apache Zeppelin in Madrid. This shows the multi-user features and so on.

apache zeppelin
Erlang factory SF 2011 "Erlang and the big switch in social games"
Erlang factory SF 2011 "Erlang and the big switch in social games"Erlang factory SF 2011 "Erlang and the big switch in social games"
Erlang factory SF 2011 "Erlang and the big switch in social games"

talk given at erlang factory 2011 about using erlang to build social games backends Watch the video of this presentation http://vimeo.com/22144057#at=0

erlang erlangfactory 2011 social games
Samza portable runner for beam
Samza portable runner for beamSamza portable runner for beam
Samza portable runner for beam

Hai Lu presented on the Samza Portable Runner for Apache Beam. The key points are: 1) The Samza Portable Runner allows stream processing to be done in multiple languages like Python by translating Beam pipelines into the Samza execution engine. 2) It provides a high-level Python SDK for building streaming applications on top of Beam's portability framework. Pipelines are translated from Python into the language-independent Beam representation. 3) Performance is improved through batching/bundling messages between the Python and Java processes to reduce round trips. Initial tests showed throughput increasing with larger bundle sizes. 4) Example use cases demonstrated near real-time image OCR, model training,

beamstream processingsamza
Typesafe Stack

• Current Stack
     • Open Source
     • SBT 0.7.7
     • Scala 2.9.0-1
     • Akka 1.1.3
     • Camel & Camel Components 2.7.0
       (FTP,Mina,Jetty,…)
     • Jboss Netty 3.2.4
• When we started early 2010
     • Akka 0.7, Scala 2.8.0Beta1
Akka Usage

Core
  Actors, Remote, TestKit, Serialization,
 STM, Agents, Dataflow, Async HTTP (Mist),
 FSM, Transactors

Modules
 MicroKernel, Camel, AMQP, Scalaz,
 Spring, OSGi, DataFlow, Persistence,
Akka Actors


      ActorRef    Mailbox      Actor



Message to send



  Dispatcher



                     Threads
Akka Actors


    ActorRef   Mailbox      Actor




Dispatcher



                  Threads

Recommended for you

Scaling software with akka
Scaling software with akkaScaling software with akka
Scaling software with akka

The document discusses the actor model and how it can be used to build concurrent, scalable and fault-tolerant applications. It explains that actors are the fundamental unit of computation that encapsulate processing, storage, and communication capabilities. Actors communicate asynchronously by message passing and can create new actors, send messages, and designate how to handle the next received message. This model allows software to be easily distributed and to automatically scale up and out.

Ruby on Rails All Hands Meeting
Ruby on Rails All Hands MeetingRuby on Rails All Hands Meeting
Ruby on Rails All Hands Meeting

This document provides an overview of Ruby on Rails, Apache httpd, and Oracle. It discusses why Ruby on Rails is useful for rapid prototyping, and how it can be integrated with Apache and Oracle. The document demonstrates Rails generators, routing, testing with RSpec, and security features. It also outlines how to configure Apache and link Rails to an Oracle database. The presenter provides cheat sheets for creating a sample Rails application integrated with Devise, ActiveAdmin, and a database, with minimal code required. The key takeaway is that learning is fun through experimenting with different technologies.

Getting Deep on Orchestration - Nickoloff - DockerCon16
Getting Deep on Orchestration - Nickoloff - DockerCon16Getting Deep on Orchestration - Nickoloff - DockerCon16
Getting Deep on Orchestration - Nickoloff - DockerCon16

Orchestration platforms let us work with higher level ideas like services and jobs; but there is more to a platform than scheduling and service discovery. A platform is a collection of actors and APIs that work together and provide those higher level abstractions on a distributed system. In this session we'll go deep on the architecture of open source orchestration platforms, consider scaling pains, reveal extension points, and reflect on an orchestration platform at Amazon. We'll finish with a demo of a homemade abstraction for failure injection by policy.

microservicesdockerconallingeek
Akka Actors


    ActorRef   Mailbox      Actor




Dispatcher



                  Threads
Akka Actors


    ActorRef   Mailbox      Actor




Dispatcher



                  Threads
Akka Actors


    ActorRef   Mailbox      Actor




Dispatcher



                  Threads
Akka Actors


    ActorRef   Mailbox      Actor




Dispatcher



                  Threads

Recommended for you

Java 8 in Anger (JavaOne)
Java 8 in Anger (JavaOne)Java 8 in Anger (JavaOne)
Java 8 in Anger (JavaOne)

The document summarizes some of the key new features and changes in Java 8. It discusses the removal of the JDBC-ODBC bridge and additions to JDBC 4.2. It also mentions new classes and methods added to packages for concurrency, networking, and XML processing. Enhancements to the HotSpot VM include hardware-accelerated AES encryption. Default methods and Java Mission Control 5.3 are also noted. The latter part provides an example application using new features like lambda expressions and streams to analyze sentiment in tweets.

javajava8
Introduction to Akka
Introduction to AkkaIntroduction to Akka
Introduction to Akka

In this you will learn about Akka – What is Akka, some design principles behind it, and why was it developed. So let’s begin.

akkaakka streamsakka cluster
Deploying microservices on AWS
Deploying microservices on AWSDeploying microservices on AWS
Deploying microservices on AWS

This document discusses deploying microservices on AWS. It begins by explaining what microservices are and then discusses hosting options on AWS including EC2, ECS, and Lambda. ECS is identified as the preferred option since it allows hosting containers with Docker. The document then covers deployment aspects like using source control with Git for multiple environments, building and testing code, deploying single services or entire clusters, live testing, and monitoring with alerts.

awsmicroservicesdeploy
One-way messaging




                    Shared
                    Dispatcher
Two-way
Two-way with Futures
Camel Actors

• Camel Component integration
• Consumers and Producers

Recommended for you

FunctionalConf '16 Robert Virding Erlang Ecosystem
FunctionalConf '16 Robert Virding Erlang EcosystemFunctionalConf '16 Robert Virding Erlang Ecosystem
FunctionalConf '16 Robert Virding Erlang Ecosystem

The document discusses the background and origins of the Erlang ecosystem. It describes how Erlang was originally developed at Ericsson to address the challenges of programming telephone switching systems, which required handling a large number of concurrent processes, distributed systems, continuous operation, and fault tolerance. It outlines the principles that guided the design of Erlang, including lightweight concurrency, asynchronous messaging, and error handling through process supervision. Finally, it discusses how the Erlang ecosystem has expanded through additional languages like Elixir and LFE that maintain Erlang's principles, as well as integrations with other languages like Lua.

erlangecosystem functional programming
Lessons learned migrating 100+ services to Kubernetes
Lessons learned migrating 100+ services to KubernetesLessons learned migrating 100+ services to Kubernetes
Lessons learned migrating 100+ services to Kubernetes

TransferWise migrated over 150 services from bare metal servers to Kubernetes in AWS over the course of a year. They developed tools and processes to automate cluster creation with Terraform, service deployment through custom manifest generation from YAML definitions, and a network mesh with Envoy to enable service-to-service communication. Some lessons learned included not exposing Kubernetes complexity, choosing the right CNI plugin, and installing node local DNS to reduce errors. Future plans include using EKS for simplified upgrades, enabling developer environments, and implementing network policies and advanced deployment pipelines.

awsdistributeddocker
Erlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughputErlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughput

Talk given at Erlang Factory San Francisco 2012 The video of this presentation is available at http://vimeo.com/43890312#at=0

erlangfactoryfractalaws
Camel Consumers
Camel Producers
Camel Producers

• Use CamelContext
Dispatchers




ThreadBasedDispatcher
ExecutorBasedEventDrivenDispatcher
ExecutorBasedWorkStealingDispatcher
PriorityExecutorBasedEventDrivenDispatcher
RollYourOwn

Recommended for you

Erlang factory 2011 london
Erlang factory 2011 londonErlang factory 2011 london
Erlang factory 2011 london

Slides of erlang factory 2011 London talk "Designing for performance with erlang" Video of this presentation available at http://vimeo.com/26715793#at=0

social gameserlangfactoryperformance
High performance network programming on the jvm oscon 2012
High performance network programming on the jvm   oscon 2012 High performance network programming on the jvm   oscon 2012
High performance network programming on the jvm oscon 2012

This document summarizes a talk on high performance network programming on the JVM. The talk discusses choosing between synchronous and asynchronous I/O, with examples of when each approach is best. It also covers how to optimize synchronous I/O on the JVM to maximize throughput. The document provides benchmarks comparing the performance of a simple synchronous memcache client versus an asynchronous one.

Working with groups 2
Working with groups 2Working with groups 2
Working with groups 2

Presentation to the Hampton Roads Association of Environmental Educators September 15, 2011 by Debra Burrell, CVA, Volunteer Services Manager, Norfolk Botanical Garden, Norfolk VA.

group volunteersvolunteers
Dispatchers

Camel Producers        Local Processing   Camel Consumers




     Heartbeat,                                 Remote Actors
     Cleanup,
     Schedule,
     Long Running,
     Redelivery,
     Remote Error Handling
Messages

• Case classes
     • Simple data containers
     • toProtobuf and fromProtobuf on case class
       and companion object for remoting
• Every msg has a
     • correlation Id to the event
     • Timestamp
• Logging, Tracing, Performance
Event Process Chains




Load Balancer      EndPoint (Consumer/Producer)

Forwarding Actor
Remote Actors

• Client
     • Actor.remote.actorFor(name, host,port)
• Server
     • Actor.remote.register(name, actorRef)


• remoteActorFor: (String, String, Int) =>
  ActorRef = remote.actorFor

Recommended for you

Computadora precios
Computadora preciosComputadora precios
Computadora precios

El documento lista precios y especificaciones de varios componentes de computadora como procesadores, memorias, discos duros, tarjetas de video, unidades ópticas, cajas, fuentes de poder, teclados, mouse y sistemas operativos.

Inleefreis Zambia
Inleefreis ZambiaInleefreis Zambia
Inleefreis Zambia
Akka tips
Akka tipsAkka tips
Akka tips

Hakking tips 'n tricks: practical patterns, tips and tricks working with Akka actors! http://www.meetup.com/Reactive-Amsterdam/events/231908511/

Remote Actors Internals

   •   RemoteActorRef                    • RemoteServer
   •   RemoteClient                      • Netty Server
   •   Netty Channels                    • Lifecycle Event
   •   Serialization (Scala,               listeners
       Java, (S)JSON, ProtoBuf           • RemoteProtocol



RemoteActorRef RemoteProtocol ActorRef       Mailbox    Actor




          RemoteClient    RemoteServer
Remote Actors (Akka 1.1.3)

•   JBoss Netty (Channels)
•   Not as transparent as you would like
•   Remote Lifecycle Listeners
•   Closing sockets, reconnect
•   Own Guaranteed Delivery implementation
     – Specific requirements
     – Bases on Idempotent Receiver and Repeating
       messages after reconnect
     – Non-Trivial
     – Heartbeats
     – Exp Backoff
Remote configuration

•   #compression-scheme = "zlib“ #leave out
•   zlib-compression-level = 0
•   client: reconnection-time-window = 2000000
•   client: read-timeout (we use 60)
•   backlog = 4096 # Netty backlog for
    connections, should suffice, increase if
    failures happen
Monitoring

• Application level monitoring
• Listener Actors contain Custom JMX MBeans
• Direct passthrough of msg or translation

Recommended for you

Sound cloud
Sound cloudSound cloud
Sound cloud

SoundCloud allows users to upload, share and record songs for free or with a paid account, and can be accessed from an iPhone. Users can sign up, upload songs, record tracks, make groups and friends, and share their music with others around the world. Many famous artists use SoundCloud as it is easy, free and fast to share their music.

Bootstrapping a Scala Mindset (Scala eXchange 2014)
Bootstrapping a Scala Mindset (Scala eXchange 2014)Bootstrapping a Scala Mindset (Scala eXchange 2014)
Bootstrapping a Scala Mindset (Scala eXchange 2014)

Watch the video of me presenting this at Scala Exchange 2014 : https://skillsmatter.com/skillscasts/5835-bootstrapping-a-scala-mindset The aim of this session was to map out the key stages involved in moving productively from a Java to a Scala mindset. As Scala gains increasing traction in OO developer communities, more and more Java developers are in the progress of making the move from being Imperative-comfortable to FP-fluent. Many are lured by the terser syntax, others by the promise of powerful high-level constructs, and more still by the thrill of challenging themselves and learning something almost entirely new to them. The problem however, is that for many their initial enthusiasm soon wears off and the realization of how much a mind-shift this really is sinks in. In this session I discussed in some detail the key steps along a path which via much trial-and-error, has proved for me to be effective in undertaking this transition. We began at the base-camp of understanding (Java-concepts to let go of, the initially-unfamiliar syntax, the equally-unfamiliar maths idiom) and from there up into the lower foothills (the basics of the type system, infix notation, ""everything is an expression"" and referential transparency) before progressing on to the lower peaks of the language (Pattern-matching with case classes and partial functions) and ending at one significant Monadic taster (Option, map/flatMap and the for-comprehension). For maximum benefit I also pointed out the pain points I encountered, techniques and resources I used to overcome these, and we ended by mentioning next steps and further inroads into the language.

scala java learning lessonslearned
Manual camara panasonic
Manual camara panasonicManual camara panasonic
Manual camara panasonic

This document provides operating instructions for a digital video camera. It contains safety information, descriptions of camera parts and their functions, instructions for using modes like recording, playback and editing, and specifications. Functions covered include recording, playback controls, menu settings, self-timer, zoom, autofocus, white balance and more. Users are advised to read the manual fully before use and handle the camera carefully.

camara panasonic
Testing with TestKit
Testing one-way Actor Output
Microkernel deployment

• sbt dist (akka-sbt-plugin)
• Creates dist directory
• init.d scripts
Questions?

Recommended for you

The Trouble with Naming
The Trouble with NamingThe Trouble with Naming
The Trouble with Naming

A lightning talk first presented at the 9th annual (2014) Java Posse Roundup in Crested Butte Colorado

Turning a Crisis into a Drama
Turning a Crisis into a DramaTurning a Crisis into a Drama
Turning a Crisis into a Drama

This document discusses turning a crisis into unnecessary drama and offers sarcastic advice on how to make the situation worse. It recommends crowding around anyone typing, keeping information to yourself by relying on rumors and gossip instead of facts, working incredibly long hours while simultaneously changing many things and introducing new problems, and placing religious-level belief in selective statistics rather than considering all available data. The overall tone is critical of exaggerating crises and problems through panic, lack of communication, unreasonable actions, and ignoring evidence.

Five Whys - Devoxx UK 2014
Five Whys - Devoxx UK 2014Five Whys - Devoxx UK 2014
Five Whys - Devoxx UK 2014

The presentation I gave at Devoxx UK 2014, subtitled "Counter-Intuitive Solutions to (All-Too-Common) Problems

antifragile netflix oss onestrawrevolution noops

More Related Content

What's hot

Event Driven Architectures with Camel
Event Driven Architectures with CamelEvent Driven Architectures with Camel
Event Driven Architectures with Camel
gnanagurus
 
Rails 5 subjective overview
Rails 5 subjective overviewRails 5 subjective overview
Rails 5 subjective overview
Jan Berdajs
 
Sbt, idea and eclipse
Sbt, idea and eclipseSbt, idea and eclipse
Sbt, idea and eclipse
Mike Slinn
 
Akka Fundamentals
Akka FundamentalsAkka Fundamentals
Akka Fundamentals
Michael Kendra
 
Reactive Streams - László van den Hoek
Reactive Streams - László van den HoekReactive Streams - László van den Hoek
Reactive Streams - László van den Hoek
RubiX BV
 
Multi-threading in the modern era: Vertx Akka and Quasar
Multi-threading in the modern era: Vertx Akka and QuasarMulti-threading in the modern era: Vertx Akka and Quasar
Multi-threading in the modern era: Vertx Akka and Quasar
Gal Marder
 
Zeppelin meetup 2016 madrid
Zeppelin meetup 2016 madridZeppelin meetup 2016 madrid
Zeppelin meetup 2016 madrid
Jongyoul Lee
 
Erlang factory SF 2011 "Erlang and the big switch in social games"
Erlang factory SF 2011 "Erlang and the big switch in social games"Erlang factory SF 2011 "Erlang and the big switch in social games"
Erlang factory SF 2011 "Erlang and the big switch in social games"
Paolo Negri
 
Samza portable runner for beam
Samza portable runner for beamSamza portable runner for beam
Samza portable runner for beam
Hai Lu
 
Scaling software with akka
Scaling software with akkaScaling software with akka
Scaling software with akka
scalaconfjp
 
Ruby on Rails All Hands Meeting
Ruby on Rails All Hands MeetingRuby on Rails All Hands Meeting
Ruby on Rails All Hands Meeting
Dan Davis
 
Getting Deep on Orchestration - Nickoloff - DockerCon16
Getting Deep on Orchestration - Nickoloff - DockerCon16Getting Deep on Orchestration - Nickoloff - DockerCon16
Getting Deep on Orchestration - Nickoloff - DockerCon16
allingeek
 
Java 8 in Anger (JavaOne)
Java 8 in Anger (JavaOne)Java 8 in Anger (JavaOne)
Java 8 in Anger (JavaOne)
Trisha Gee
 
Introduction to Akka
Introduction to AkkaIntroduction to Akka
Introduction to Akka
Knoldus Inc.
 
Deploying microservices on AWS
Deploying microservices on AWSDeploying microservices on AWS
Deploying microservices on AWS
Michael Haberman
 
FunctionalConf '16 Robert Virding Erlang Ecosystem
FunctionalConf '16 Robert Virding Erlang EcosystemFunctionalConf '16 Robert Virding Erlang Ecosystem
FunctionalConf '16 Robert Virding Erlang Ecosystem
Robert Virding
 
Lessons learned migrating 100+ services to Kubernetes
Lessons learned migrating 100+ services to KubernetesLessons learned migrating 100+ services to Kubernetes
Lessons learned migrating 100+ services to Kubernetes
Jose Galarza
 
Erlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughputErlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughput
Paolo Negri
 
Erlang factory 2011 london
Erlang factory 2011 londonErlang factory 2011 london
Erlang factory 2011 london
Paolo Negri
 
High performance network programming on the jvm oscon 2012
High performance network programming on the jvm   oscon 2012 High performance network programming on the jvm   oscon 2012
High performance network programming on the jvm oscon 2012
Erik Onnen
 

What's hot (20)

Event Driven Architectures with Camel
Event Driven Architectures with CamelEvent Driven Architectures with Camel
Event Driven Architectures with Camel
 
Rails 5 subjective overview
Rails 5 subjective overviewRails 5 subjective overview
Rails 5 subjective overview
 
Sbt, idea and eclipse
Sbt, idea and eclipseSbt, idea and eclipse
Sbt, idea and eclipse
 
Akka Fundamentals
Akka FundamentalsAkka Fundamentals
Akka Fundamentals
 
Reactive Streams - László van den Hoek
Reactive Streams - László van den HoekReactive Streams - László van den Hoek
Reactive Streams - László van den Hoek
 
Multi-threading in the modern era: Vertx Akka and Quasar
Multi-threading in the modern era: Vertx Akka and QuasarMulti-threading in the modern era: Vertx Akka and Quasar
Multi-threading in the modern era: Vertx Akka and Quasar
 
Zeppelin meetup 2016 madrid
Zeppelin meetup 2016 madridZeppelin meetup 2016 madrid
Zeppelin meetup 2016 madrid
 
Erlang factory SF 2011 "Erlang and the big switch in social games"
Erlang factory SF 2011 "Erlang and the big switch in social games"Erlang factory SF 2011 "Erlang and the big switch in social games"
Erlang factory SF 2011 "Erlang and the big switch in social games"
 
Samza portable runner for beam
Samza portable runner for beamSamza portable runner for beam
Samza portable runner for beam
 
Scaling software with akka
Scaling software with akkaScaling software with akka
Scaling software with akka
 
Ruby on Rails All Hands Meeting
Ruby on Rails All Hands MeetingRuby on Rails All Hands Meeting
Ruby on Rails All Hands Meeting
 
Getting Deep on Orchestration - Nickoloff - DockerCon16
Getting Deep on Orchestration - Nickoloff - DockerCon16Getting Deep on Orchestration - Nickoloff - DockerCon16
Getting Deep on Orchestration - Nickoloff - DockerCon16
 
Java 8 in Anger (JavaOne)
Java 8 in Anger (JavaOne)Java 8 in Anger (JavaOne)
Java 8 in Anger (JavaOne)
 
Introduction to Akka
Introduction to AkkaIntroduction to Akka
Introduction to Akka
 
Deploying microservices on AWS
Deploying microservices on AWSDeploying microservices on AWS
Deploying microservices on AWS
 
FunctionalConf '16 Robert Virding Erlang Ecosystem
FunctionalConf '16 Robert Virding Erlang EcosystemFunctionalConf '16 Robert Virding Erlang Ecosystem
FunctionalConf '16 Robert Virding Erlang Ecosystem
 
Lessons learned migrating 100+ services to Kubernetes
Lessons learned migrating 100+ services to KubernetesLessons learned migrating 100+ services to Kubernetes
Lessons learned migrating 100+ services to Kubernetes
 
Erlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughputErlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughput
 
Erlang factory 2011 london
Erlang factory 2011 londonErlang factory 2011 london
Erlang factory 2011 london
 
High performance network programming on the jvm oscon 2012
High performance network programming on the jvm   oscon 2012 High performance network programming on the jvm   oscon 2012
High performance network programming on the jvm oscon 2012
 

Viewers also liked

Working with groups 2
Working with groups 2Working with groups 2
Working with groups 2
Norfolk Botanical Garden
 
Computadora precios
Computadora preciosComputadora precios
Computadora precios
Daniel Macias
 
Inleefreis Zambia
Inleefreis ZambiaInleefreis Zambia
Inleefreis Zambia
hhartbree
 
Akka tips
Akka tipsAkka tips
Sound cloud
Sound cloudSound cloud
Sound cloud
Daniel Macias
 
Bootstrapping a Scala Mindset (Scala eXchange 2014)
Bootstrapping a Scala Mindset (Scala eXchange 2014)Bootstrapping a Scala Mindset (Scala eXchange 2014)
Bootstrapping a Scala Mindset (Scala eXchange 2014)
Andrew Harmel Law
 
Manual camara panasonic
Manual camara panasonicManual camara panasonic
Manual camara panasonic
Conectar Igualdad Entre Ríos
 
The Trouble with Naming
The Trouble with NamingThe Trouble with Naming
The Trouble with Naming
Andrew Harmel Law
 
Turning a Crisis into a Drama
Turning a Crisis into a DramaTurning a Crisis into a Drama
Turning a Crisis into a Drama
Andrew Harmel Law
 
Five Whys - Devoxx UK 2014
Five Whys - Devoxx UK 2014Five Whys - Devoxx UK 2014
Five Whys - Devoxx UK 2014
Andrew Harmel Law
 
Akka in-action
Akka in-actionAkka in-action
Akka in-action
Raymond Roestenburg
 
Get Going with Green - Closing the Sustainability Gap
Get Going with Green - Closing the Sustainability GapGet Going with Green - Closing the Sustainability Gap
Get Going with Green - Closing the Sustainability Gap
Green Initiatives 绿色倡议
 
Functions, Types, Programs and Effects
Functions, Types, Programs and EffectsFunctions, Types, Programs and Effects
Functions, Types, Programs and Effects
Raymond Roestenburg
 
Framework for Clean Technologies in China
Framework for Clean Technologies in ChinaFramework for Clean Technologies in China
Framework for Clean Technologies in China
Green Initiatives 绿色倡议
 

Viewers also liked (14)

Working with groups 2
Working with groups 2Working with groups 2
Working with groups 2
 
Computadora precios
Computadora preciosComputadora precios
Computadora precios
 
Inleefreis Zambia
Inleefreis ZambiaInleefreis Zambia
Inleefreis Zambia
 
Akka tips
Akka tipsAkka tips
Akka tips
 
Sound cloud
Sound cloudSound cloud
Sound cloud
 
Bootstrapping a Scala Mindset (Scala eXchange 2014)
Bootstrapping a Scala Mindset (Scala eXchange 2014)Bootstrapping a Scala Mindset (Scala eXchange 2014)
Bootstrapping a Scala Mindset (Scala eXchange 2014)
 
Manual camara panasonic
Manual camara panasonicManual camara panasonic
Manual camara panasonic
 
The Trouble with Naming
The Trouble with NamingThe Trouble with Naming
The Trouble with Naming
 
Turning a Crisis into a Drama
Turning a Crisis into a DramaTurning a Crisis into a Drama
Turning a Crisis into a Drama
 
Five Whys - Devoxx UK 2014
Five Whys - Devoxx UK 2014Five Whys - Devoxx UK 2014
Five Whys - Devoxx UK 2014
 
Akka in-action
Akka in-actionAkka in-action
Akka in-action
 
Get Going with Green - Closing the Sustainability Gap
Get Going with Green - Closing the Sustainability GapGet Going with Green - Closing the Sustainability Gap
Get Going with Green - Closing the Sustainability Gap
 
Functions, Types, Programs and Effects
Functions, Types, Programs and EffectsFunctions, Types, Programs and Effects
Functions, Types, Programs and Effects
 
Framework for Clean Technologies in China
Framework for Clean Technologies in ChinaFramework for Clean Technologies in China
Framework for Clean Technologies in China
 

Similar to Real world Scala hAkking NLJUG JFall 2011

Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015
Evan Chan
 
Typesafe stack - Scala, Akka and Play
Typesafe stack - Scala, Akka and PlayTypesafe stack - Scala, Akka and Play
Typesafe stack - Scala, Akka and Play
Luka Zakrajšek
 
Developing distributed applications with Akka and Akka Cluster
Developing distributed applications with Akka and Akka ClusterDeveloping distributed applications with Akka and Akka Cluster
Developing distributed applications with Akka and Akka Cluster
Konstantin Tsykulenko
 
DotNext 2020 - When and How to Use the Actor Model and Akka.NET
DotNext 2020 - When and How to Use the Actor Model and Akka.NETDotNext 2020 - When and How to Use the Actor Model and Akka.NET
DotNext 2020 - When and How to Use the Actor Model and Akka.NET
petabridge
 
Monitoring Akka with Kamon 1.0
Monitoring Akka with Kamon 1.0Monitoring Akka with Kamon 1.0
Monitoring Akka with Kamon 1.0
Steffen Gebert
 
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)
Robert "Chip" Senkbeil
 
Introduction to Actor Model and Akka
Introduction to Actor Model and AkkaIntroduction to Actor Model and Akka
Introduction to Actor Model and Akka
Yung-Lin Ho
 
Andy Parsons Pivotal June 2011
Andy Parsons Pivotal June 2011Andy Parsons Pivotal June 2011
Andy Parsons Pivotal June 2011
Andy Parsons
 
Clustersoftware
ClustersoftwareClustersoftware
Clustersoftware
Roger Johansson
 
Actor model in .NET - Akka.NET
Actor model in .NET - Akka.NETActor model in .NET - Akka.NET
Actor model in .NET - Akka.NET
Konrad Dusza
 
A tour of Java and the JVM
A tour of Java and the JVMA tour of Java and the JVM
A tour of Java and the JVM
Alex Birch
 
Indic threads pune12-typesafe stack software development on the jvm
Indic threads pune12-typesafe stack software development on the jvmIndic threads pune12-typesafe stack software development on the jvm
Indic threads pune12-typesafe stack software development on the jvm
IndicThreads
 
Java withrealworldtechnology
Java withrealworldtechnologyJava withrealworldtechnology
Java withrealworldtechnology
Anju Kanjirathingal
 
Agile Lab_BigData_Meetup_AKKA
Agile Lab_BigData_Meetup_AKKAAgile Lab_BigData_Meetup_AKKA
Agile Lab_BigData_Meetup_AKKA
Paolo Platter
 
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Sunghyouk Bae
 
Messaging for IoT
Messaging for IoTMessaging for IoT
Messaging for IoT
dejanb
 
Building a multi-tenanted Cloud-native AppServer
Building a multi-tenanted Cloud-native AppServerBuilding a multi-tenanted Cloud-native AppServer
Building a multi-tenanted Cloud-native AppServer
Afkham Azeez
 
System Integration with Akka and Apache Camel
System Integration with Akka and Apache CamelSystem Integration with Akka and Apache Camel
System Integration with Akka and Apache Camel
krasserm
 
Implementing End-To-End Tracing With Roman Kolesnev and Antony Stubbs | Curre...
Implementing End-To-End Tracing With Roman Kolesnev and Antony Stubbs | Curre...Implementing End-To-End Tracing With Roman Kolesnev and Antony Stubbs | Curre...
Implementing End-To-End Tracing With Roman Kolesnev and Antony Stubbs | Curre...
HostedbyConfluent
 
Reasonable RPC with Remotely
Reasonable RPC with RemotelyReasonable RPC with Remotely
Reasonable RPC with Remotely
Timothy Perrett
 

Similar to Real world Scala hAkking NLJUG JFall 2011 (20)

Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015
 
Typesafe stack - Scala, Akka and Play
Typesafe stack - Scala, Akka and PlayTypesafe stack - Scala, Akka and Play
Typesafe stack - Scala, Akka and Play
 
Developing distributed applications with Akka and Akka Cluster
Developing distributed applications with Akka and Akka ClusterDeveloping distributed applications with Akka and Akka Cluster
Developing distributed applications with Akka and Akka Cluster
 
DotNext 2020 - When and How to Use the Actor Model and Akka.NET
DotNext 2020 - When and How to Use the Actor Model and Akka.NETDotNext 2020 - When and How to Use the Actor Model and Akka.NET
DotNext 2020 - When and How to Use the Actor Model and Akka.NET
 
Monitoring Akka with Kamon 1.0
Monitoring Akka with Kamon 1.0Monitoring Akka with Kamon 1.0
Monitoring Akka with Kamon 1.0
 
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)
 
Introduction to Actor Model and Akka
Introduction to Actor Model and AkkaIntroduction to Actor Model and Akka
Introduction to Actor Model and Akka
 
Andy Parsons Pivotal June 2011
Andy Parsons Pivotal June 2011Andy Parsons Pivotal June 2011
Andy Parsons Pivotal June 2011
 
Clustersoftware
ClustersoftwareClustersoftware
Clustersoftware
 
Actor model in .NET - Akka.NET
Actor model in .NET - Akka.NETActor model in .NET - Akka.NET
Actor model in .NET - Akka.NET
 
A tour of Java and the JVM
A tour of Java and the JVMA tour of Java and the JVM
A tour of Java and the JVM
 
Indic threads pune12-typesafe stack software development on the jvm
Indic threads pune12-typesafe stack software development on the jvmIndic threads pune12-typesafe stack software development on the jvm
Indic threads pune12-typesafe stack software development on the jvm
 
Java withrealworldtechnology
Java withrealworldtechnologyJava withrealworldtechnology
Java withrealworldtechnology
 
Agile Lab_BigData_Meetup_AKKA
Agile Lab_BigData_Meetup_AKKAAgile Lab_BigData_Meetup_AKKA
Agile Lab_BigData_Meetup_AKKA
 
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
 
Messaging for IoT
Messaging for IoTMessaging for IoT
Messaging for IoT
 
Building a multi-tenanted Cloud-native AppServer
Building a multi-tenanted Cloud-native AppServerBuilding a multi-tenanted Cloud-native AppServer
Building a multi-tenanted Cloud-native AppServer
 
System Integration with Akka and Apache Camel
System Integration with Akka and Apache CamelSystem Integration with Akka and Apache Camel
System Integration with Akka and Apache Camel
 
Implementing End-To-End Tracing With Roman Kolesnev and Antony Stubbs | Curre...
Implementing End-To-End Tracing With Roman Kolesnev and Antony Stubbs | Curre...Implementing End-To-End Tracing With Roman Kolesnev and Antony Stubbs | Curre...
Implementing End-To-End Tracing With Roman Kolesnev and Antony Stubbs | Curre...
 
Reasonable RPC with Remotely
Reasonable RPC with RemotelyReasonable RPC with Remotely
Reasonable RPC with Remotely
 

Recently uploaded

What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
Stephanie Beckett
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
Emerging Tech
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
Larry Smarr
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
Andrey Yasko
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
Safe Software
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Mydbops
 
Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
KAMAL CHOUDHARY
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
Sally Laouacheria
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
Neo4j
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
Vijayananda Mohire
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
Eric D. Schabell
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
Tatiana Al-Chueyr
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
Bert Blevins
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
Matthew Sinclair
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
ishalveerrandhawa1
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Chris Swan
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
Adam Dunkels
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
Mark Billinghurst
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
SynapseIndia
 
UiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs ConferenceUiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs Conference
UiPathCommunity
 

Recently uploaded (20)

What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
 
Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
 
UiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs ConferenceUiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs Conference
 

Real world Scala hAkking NLJUG JFall 2011

  • 1. Real World Scala hAkking Raymond Roestenburg
  • 2. About me • Java since 1997 • Scala since 2010 • Mostly backend systems • Lead architect Traffic Management at CSC • Akka committer code: http://github.com/RayRoestenburg blog: http://roestenburg.agilesquad.com twtr: @RayRoestenburg
  • 3. Company I work for Traffic Management • Section Control • Weigh in Motion • Traffic Information • Traffic Enforcement
  • 4. Agenda • @MIGO-BORAS sensordomain • Sensor networks • Typesafe stack • Akka Actors • Apache Camel Integration • Remote Actors • Monitoring • Testing • Deployment
  • 5. @MIGO-BORAS • Koninklijke Marechaussee • MTV (Mobiel Toezicht Vreemdelingen) • Prevent illegal border crossing • Sensor domain • Fixed locations • Mobile vehicles • Cameras, Radars • Vehicle properties • January 2012
  • 6. Sensor networks • Usable for many applications in our field • Distributed along highways and provincial roads • Traffic Enforcement • Traffic Information • Other applications • Roadside systems • Range of sensor types – Camera’s, Infrared, Laser, Piezoelectric, Loops, Mobile units, … • Remotely Configure & Control
  • 7. Why Scala & Akka • Less code, less bugs • Less code, same VM power • Experienced team (Java, C#, C) • 3 experienced Java devs • 1 experienced C# dev with no Java experience • Need to interoperate with existing Java and C (JNA) • Simplify development (C->Java->Scala) • Ubuntu
  • 8. Scala 2.9.x • Learning curve (Start with simple features) • Traits, Tupels, Stackable Traits • First Class Functions • Scala Collections • map, flatMap, partition, foreach, filter, groupBy.. • Option type • map.. orElse, foreach,.. • Case classes • REPL, DSLs, Extension methods
  • 9. Typesafe Stack • Current Stack • Open Source • SBT 0.7.7 • Scala 2.9.0-1 • Akka 1.1.3 • Camel & Camel Components 2.7.0 (FTP,Mina,Jetty,…) • Jboss Netty 3.2.4 • When we started early 2010 • Akka 0.7, Scala 2.8.0Beta1
  • 10. Akka Usage Core Actors, Remote, TestKit, Serialization, STM, Agents, Dataflow, Async HTTP (Mist), FSM, Transactors Modules MicroKernel, Camel, AMQP, Scalaz, Spring, OSGi, DataFlow, Persistence,
  • 11. Akka Actors ActorRef Mailbox Actor Message to send Dispatcher Threads
  • 12. Akka Actors ActorRef Mailbox Actor Dispatcher Threads
  • 13. Akka Actors ActorRef Mailbox Actor Dispatcher Threads
  • 14. Akka Actors ActorRef Mailbox Actor Dispatcher Threads
  • 15. Akka Actors ActorRef Mailbox Actor Dispatcher Threads
  • 16. Akka Actors ActorRef Mailbox Actor Dispatcher Threads
  • 17. One-way messaging Shared Dispatcher
  • 20. Camel Actors • Camel Component integration • Consumers and Producers
  • 23. Camel Producers • Use CamelContext
  • 25. Dispatchers Camel Producers Local Processing Camel Consumers Heartbeat, Remote Actors Cleanup, Schedule, Long Running, Redelivery, Remote Error Handling
  • 26. Messages • Case classes • Simple data containers • toProtobuf and fromProtobuf on case class and companion object for remoting • Every msg has a • correlation Id to the event • Timestamp • Logging, Tracing, Performance
  • 27. Event Process Chains Load Balancer EndPoint (Consumer/Producer) Forwarding Actor
  • 28. Remote Actors • Client • Actor.remote.actorFor(name, host,port) • Server • Actor.remote.register(name, actorRef) • remoteActorFor: (String, String, Int) => ActorRef = remote.actorFor
  • 29. Remote Actors Internals • RemoteActorRef • RemoteServer • RemoteClient • Netty Server • Netty Channels • Lifecycle Event • Serialization (Scala, listeners Java, (S)JSON, ProtoBuf • RemoteProtocol RemoteActorRef RemoteProtocol ActorRef Mailbox Actor RemoteClient RemoteServer
  • 30. Remote Actors (Akka 1.1.3) • JBoss Netty (Channels) • Not as transparent as you would like • Remote Lifecycle Listeners • Closing sockets, reconnect • Own Guaranteed Delivery implementation – Specific requirements – Bases on Idempotent Receiver and Repeating messages after reconnect – Non-Trivial – Heartbeats – Exp Backoff
  • 31. Remote configuration • #compression-scheme = "zlib“ #leave out • zlib-compression-level = 0 • client: reconnection-time-window = 2000000 • client: read-timeout (we use 60) • backlog = 4096 # Netty backlog for connections, should suffice, increase if failures happen
  • 32. Monitoring • Application level monitoring • Listener Actors contain Custom JMX MBeans • Direct passthrough of msg or translation
  • 35. Microkernel deployment • sbt dist (akka-sbt-plugin) • Creates dist directory • init.d scripts

Editor's Notes

  1. ActorRef is an immutable reference which exclusively gives access to the Actor.Actors run on Dispatchers. A Dispatcher runs a mailbox to process messages.Amount of messages per mailbox run is configurable. (actor.throughput, default 5)
  2. One way messaging between two ActorsActors can process messages in parallel
  3. One way messaging between two ActorsActors can process messages in parallel
  4. !!! Is preferred over !!Futuresalso run onDispatchers.FutureTimeoutException happens onfuture.get. IfonlyonComplete and failure are registered, yougetnoFutureTimeoutException