Rails Four For you and for me!

Size: px
Start display at page:

Download "Rails Four For you and for me!"

Transcription

1 Realtime Rails Four

2 Rails Four For you and for me!

3 Aaron

4 HI!! :-)

5 AT&T, AT&T logo and all AT&T related marks are trademarks of AT&T Intellectual Property and/or AT&T affiliated companies.

6 Rails Four For you and me!!!

7 The Web!

8 Ruby Rails Web

9 Thread Safety In Rails

10 Delete config.threadsafe!

11 Why delete?

12 Always be thread safe!

13 My Opinion! Always be thread safe!

14 Simplify

15 Is it safe to remove?

16 What did it do?

17 threadsafe! Preload frameworks (enable) Cache classes (enable) Depency loading (disable) Allow concurrency (enable)

18 Loading Code isn t Thread-safe*

19 ENABLED Preload Frameworks

20 Cache classes ENABLED

21 DISABLED Depency Loading

22 ENABLED Allow Concurrency

23 Rack::Lock Get Lock Read from Socket Process Stuff Write to Socket Release Lock

24 Rack::Lock Thread 2 Get Lock Read from Socket Thread 1 Process Stuff Write to Socket Release Lock

25 Rack::Lock Thread 2 Get Lock Read from Socket Process Stuff Write to Socket Release Lock

26 Rack::Lock Get Lock Read from Socket Process Stuff Write to Socket Thread 2 Release Lock

27 Rack::Lock with Processes

28 Rack::Lock with Threads

29 Best Case: Extra Overhead

30 Worst Case: 1 req at a time

31 IMPACT

32 Boot time increases (in prod)

33 Fewer middleware

34 Multi-Proc servers stay the same

35 Threaded servers Just Work

36 Bug Fixes

37 100% Caching

38 Locking = def = some_calculation

39 check then act Is nil? Calculate Set Return

40 check then act Thread 1 Is nil? Calculate Set Return

41 check then act Is nil? Thread 2 Thread 1 Calculate Set Return

42 check then act Is nil? Calculate Thread 2 Thread 1 Set Return

43 check then act Is nil? Calculate Set Return

44 Fix #1 (eager init) class Foo class << self = fib(34) p Foo.hard_calculation

45 Fix #2 (locking) class = Mutex.new class << self def = fib(34) p Foo.hard_calculation

46 Fix #2 (locking) class = Mutex.new class << self def = fib(34) p Foo.hard_calculation

47 Fix #2 (locking) class = Mutex.new class << self def = fib(34) p Foo.hard_calculation

48 Move methods to instances

49 Move to object class Foo def = fib(34) def Foo.new.hard_calculation

50 Lazy Object class Foo include Mutex_m def hard_calculation synchronize = fib(34) Foo.new.hard_calculation

51 Maintain API class Foo include Mutex_m def hard_calculation synchronize = fib(34) Instance = new def self.hard_calculation Instance.hard_calculation Foo.hard_calculation

52 Hash.new { } class Foo def = Hash.new { h,k h[k] = [] } def

53 Fix #1 (lock) class Foo include Mutex_m def initialize = Hash.new { h,k h[k] = [] } def some_value(key) synchronize }

54 Fix #2 thread_safe

55 What about the App Level?

56 Thread Safety In Web Apps

57 Avoid shared data

58 Most people don t type Thread.new

59 Look for things that are global.

60 Global Variables $so_global = {} $so_global[:foo] = bar

61 Constants SET_TWICE = 10 SET_TWICE = 10 Warning ALSO_GLOBAL = {} ALSO_GLOBAL[:foo] = bar No Warning

62 Class methods class MyModel def = fib(34)

63 Avoid global data

64 Add locks

65 Streaming

66 Template Rering Today

67 Templates Results are Buffered

68 Clients are blocked while Rails works

69 The entire page must fit in memory

70 Rack Encourages Buffering class MyApplication def call(env) [200, {}, [ my page ]]

71 We can do I/O and CPU in parallel.

72 So why buffer?

73 ActionController::Live

74 Example class BrowserController < ApplicationController include ActionController::Live def index 100.times do response.stream.write "hello!\n" response.stream.close

75 Example class BrowserController < ApplicationController include ActionController::Live Mix in def index 100.times do response.stream.write "hello!\n" response.stream.close Stream

76 response.stream acts like an I/O object

77 Everything Is a File

78 How does it work?

79 Our API def index response.status = 200 response.headers[ X-Whatever ] = <3 response.stream.write hello response.stream.write world response.stream.close

80 Rack API def call(env) return [200, { X-Whatever => <3 }, [ hello world ]]

81 Wrapped Request class Response attr_accessor :status attr_reader :headers, :stream def = = = StringIO.new def call(env) res = Response.new controller.response = res controller.index [res.status, res.headers, res.stream]

82 Threaded action def call(env) res = Response.new controller.response = res Thread.new { controller.index } [res.status, res.headers, res.stream]

83 Block until write def call(env) res = Response.new controller.response = res Thread.new { controller.index } res.stream.await [res.status, res.headers, res.stream]

84 Block until write def call(env) res = Response.new controller.response = res Thread.new { controller.index } res.stream.await Block [res.status, res.headers, res.stream]

85 Blocking Buffer class Buffer def = = Queue.new def await # wait for << str

86 Blocking Buffer class Buffer def = = Queue.new def await # wait for `call` blocks here << str

87 Blocking Buffer class Buffer def = = Queue.new def await # wait for << str `write` unblocks

88 What can we do?

89 Rails Internals

90 Streaming ERB

91 View Source # encoding: utf-8 require 'erb' doc = ERB.new '<%= hello %> world' puts doc.src

92 Source #coding:utf-8 _erbout = ''; _erbout.concat(( hello ).to_s); _erbout.concat " world"; _erbout.force_encoding( ENCODING )

93 Control Output class MyERB < ERB def set_eoutvar(compiler, eoutvar = '_erbout') compiler.put_cmd = "#{eoutvar}.write" compiler.insert_cmd = "#{eoutvar}.write" compiler.pre_cmd = [] compiler.post_cmd = [] doc = MyERB.new '<%= hello %> world', nil, nil, '$stdout' puts doc.src

94 Source #coding:utf-8 $stdout.write(( hello ).to_s); $stdout.write " world"

95 $ ruby test.rb hello world $

96 Web Apps

97 Infinite Streams

98 Server Sent Events

99 SSE Response HTTP/ OK X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff Content-Type: text/event-stream Transfer-Encoding: chunked event: ping data: {"ping":" t21:44:41-07:00"} event: reload data: {"changed":["/users/aaron/git/lolwut/app/views/ users/"]}

100 SSE Response HTTP/ OK X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff Content-Type: text/event-stream Transfer-Encoding: chunked event: ping data: {"ping":" t21:44:41-07:00"} event: reload data: {"changed":["/users/aaron/git/lolwut/app/views/ users/"]}

101 SSE Response HTTP/ OK X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff Content-Type: text/event-stream Transfer-Encoding: chunked event: ping data: {"ping":" t21:44:41-07:00"} event: reload data: {"changed":["/users/aaron/git/lolwut/app/views/ users/"]}

102 SSE Response HTTP/ OK X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff Content-Type: text/event-stream Transfer-Encoding: chunked event: ping data: {"ping":" t21:44:41-07:00"} event: reload data: {"changed":["/users/aaron/git/lolwut/app/views/ users/"]}

103 Client Side jquery(document).ready(function() { settimeout(function() { var source = new EventSource('/control'); // if we get a reload command, reload the page source.addeventlistener('reload', function(e) { window.location.reload(); }); }, 1); });

104 Client Side jquery(document).ready(function() { settimeout(function() { var source = new EventSource('/control'); // if we get a reload command, reload the page source.addeventlistener('reload', function(e) { window.location.reload(); }); }, 1); });

105 Client Side jquery(document).ready(function() { settimeout(function() { var source = new EventSource('/control'); // if we get a reload command, reload the page source.addeventlistener('reload', function(e) { window.location.reload(); }); }, 1); });

106 Client Side jquery(document).ready(function() { settimeout(function() { var source = new EventSource('/control'); // if we get a reload command, reload the page source.addeventlistener('reload', function(e) { window.location.reload(); }); }, 1); });

107 Real-Time Browser Communication

108

109 FS Events Puma FS-Events Browser

110 FS Events Puma FS-Events Browser

111 FS Events Puma FS-Events Browser

112 FS Events Puma FS-Events Browser

113 DB Events DRB Puma Console Browser

114 Socket DB Events DRB Puma Console Browser

115 Other Input Sources Embedded systems (sausage box) Telephony (twilio) Other users (chat systems)

116 Thread Safety Streaming P72N

117 Cores are increasing.

118 We need to utilize the entire machine

119 High latency clients are increasing.

120 Patience is decreasing.

121 Lie. Using cached data

122 Cheat. Updating partial parts of the page

123 Steal. Move computations to client side via JS

124 Lie. Cheat. Steal.

125 Be Good Engineers

126 THANK YOU

127 Questions?

Philadelphia Emerging Technology For The. First to welcome you. Claudia gave amazing talk. Online advertising, fib numbers.

Philadelphia Emerging Technology For The. First to welcome you. Claudia gave amazing talk. Online advertising, fib numbers. Philadelphia Emerging Technology For The First to welcome you. Claudia gave amazing talk. Online advertising, fib numbers Enterprise Aaron Patterson @tenderlove Rails Core Team Ruby Core Team enterprise

More information

Who makes the best Churrasco?

Who makes the best Churrasco? Who makes the best Churrasco? What country has the best footballers? Argentina! Aaron Patterson @tenderlove Fala viado! wtf?? Fala viado! Ruby core team Rails core team ! WARNING! ZOMG! WE ARE IN BRAZIL!

More information

HOLA

HOLA HOLA Aaron Patterson José Yo WWFMD? AT&T, AT&T logo and all AT&T related marks are trademarks of AT&T Intellectual Property and/or AT&T affiliated companies. Señor Engineer @tenderlove Ruby core team

More information

Wednesday, May 18, Before I Begin...

Wednesday, May 18, Before I Begin... Before I Begin... @jonleighton I José Double Dream Hands: SO INTENSE ZOMG!!! HAPPY RAILS CONF Aaron Patterson @tenderlove AT&T, AT&T logo and all AT&T related marks are trademarks of AT&T Intellectual

More information

Backend Development. SWE 432, Fall Web Application Development

Backend Development. SWE 432, Fall Web Application Development Backend Development SWE 432, Fall 2018 Web Application Development Review: Async Programming Example 1 second each Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy

More information

Working With Ruby Threads. Copyright (C) 2013 Jesse Storimer. This book is dedicated to Sara, Inara, and Ora, who make it all worthwhile.

Working With Ruby Threads. Copyright (C) 2013 Jesse Storimer. This book is dedicated to Sara, Inara, and Ora, who make it all worthwhile. Working With Ruby Threads Copyright (C) 2013 Jesse Storimer. This book is dedicated to Sara, Inara, and Ora, who make it all worthwhile. Chapter 16 Puma's Thread Pool Implementation Puma 1 is a concurrent

More information

Real Time Rack. Konstantin Haase

Real Time Rack. Konstantin Haase Real Time Rack Konstantin Haase La verdadera pregunta es... Quién es el mejor fútbolista? Explora! Por cierto... Come again? streaming server push decide what to s while streaming, not upfront

More information

Server execution of JavaScript: What could possibly go wrong?

Server execution of JavaScript: What could possibly go wrong? Server execution of JavaScript: What could possibly go wrong? Brian Geffon Staff Software Engineer Hello! 2 Outline Introductions Ø Brief History The paradigm shift Problems! Where we are today Closing

More information

Matt Terwilliger. Networking Crash Course

Matt Terwilliger. Networking Crash Course Matt Terwilliger Networking Crash Course Before We Start Client/Server Model Client requests information from server over pre-established protocols. TCP/IP Model Application Layer Transport Layer Internet

More information

Module 6 Node.js and Socket.IO

Module 6 Node.js and Socket.IO Module 6 Node.js and Socket.IO Module 6 Contains 2 components Individual Assignment and Group Assignment Both are due on Wednesday November 15 th Read the WIKI before starting Portions of today s slides

More information

The realtime web: HTTP/1.1 to WebSocket, SPDY and beyond. Guillermo QCon. November 2012.

The realtime web: HTTP/1.1 to WebSocket, SPDY and beyond. Guillermo QCon. November 2012. The realtime web: HTTP/1.1 to WebSocket, SPDY and beyond Guillermo Rauch @ QCon. November 2012. Guillermo. CTO and co-founder at LearnBoost. Creator of socket.io and engine.io. @rauchg on twitter http://devthought.com

More information

Backend Development. SWE 432, Fall 2017 Design and Implementation of Software for the Web

Backend Development. SWE 432, Fall 2017 Design and Implementation of Software for the Web Backend Development SWE 432, Fall 2017 Design and Implementation of Software for the Web Real World Example https://qz.com/1073221/the-hackers-who-broke-into-equifax-exploited-a-nine-year-old-security-flaw/

More information

Tutorial 8 Build resilient, responsive and scalable web applications with SocketPro

Tutorial 8 Build resilient, responsive and scalable web applications with SocketPro Tutorial 8 Build resilient, responsive and scalable web applications with SocketPro Contents: Introduction SocketPro ways for resilient, responsive and scalable web applications Vertical scalability o

More information

And the Greatest of These Is... Rack Support. Ben Scofield Viget Labs

And the Greatest of These Is... Rack Support. Ben Scofield Viget Labs Welcome 1 And the Greatest of These Is... Rack Support Ben Scofield Viget Labs 2 #?forben 3 4 Application Templates 5 Nested Attribute Assignment flickr: angelrays 6 ActiveRecord::Base#touch flickr: jjjohn

More information

Control for CloudFlare - Installation and Preparations

Control for CloudFlare - Installation and Preparations Control for CloudFlare - Installation and Preparations Installation Backup your web directory and Magento 2 store database; Download Control for CloudFlare installation package; Copy files to /app/firebear/cloudflare/

More information

porcelain Documentation

porcelain Documentation porcelain Documentation Release August 20, 2014 Contents 1 Overview 3 2 Installation 5 3 Usage 7 3.1 Launching one-off programs....................................... 7 3.2 Passing input and

More information

Scaling Rails on App Engine with JRuby and Duby

Scaling Rails on App Engine with JRuby and Duby Scaling Rails on App Engine with JRuby and Duby Run your apps on Google Servers, with access to first-class Java APIs John Woodell David Masover Ryan Brown June 9, 2010 2 Google App Engine 3 Key Features

More information

Working With Ruby Threads. Copyright (C) 2013 Jesse Storimer. This book is dedicated to Sara, Inara, and Ora, who make it all worthwhile.

Working With Ruby Threads. Copyright (C) 2013 Jesse Storimer. This book is dedicated to Sara, Inara, and Ora, who make it all worthwhile. Working With Ruby Threads Copyright (C) 2013 Jesse Storimer. This book is dedicated to Sara, Inara, and Ora, who make it all worthwhile. Chapter 0 Introduction My story When I joined the Ruby community,

More information

Quick housekeeping Last Two Homeworks Extra Credit for demoing project prototypes Reminder about Project Deadlines/specifics Class on April 12th Resul

Quick housekeeping Last Two Homeworks Extra Credit for demoing project prototypes Reminder about Project Deadlines/specifics Class on April 12th Resul CIS192 Python Programming Web Frameworks and Web APIs Harry Smith University of Pennsylvania March 29, 2016 Harry Smith (University of Pennsylvania) CIS 192 March 29, 2016 1 / 25 Quick housekeeping Last

More information

THE FLEXIBLE DATA-STRUCTURE SERVER THAT COULD.

THE FLEXIBLE DATA-STRUCTURE SERVER THAT COULD. REDIS THE FLEXIBLE DATA-STRUCTURE SERVER THAT COULD. @_chriswhitten_ REDIS REDIS April 10, 2009; 6 years old Founding Author: Salvatore Sanfilippo Stable release: 3.0.3 / June 4, 2015; 3 months ago Fundamental

More information

For Bitcoins and Bounties James Kettle

For Bitcoins and Bounties James Kettle EXPLOITING CORS MISCONFIGURATIONS For Bitcoins and Bounties James Kettle A MORAL STORY WeBuy0day Internal team of security experts Users are all security experts Easily fenced intellectual property Trivial

More information

Vulkan: Scaling to Multiple Threads. Kevin sun Lead Developer Support Engineer, APAC PowerVR Graphics

Vulkan: Scaling to Multiple Threads. Kevin sun Lead Developer Support Engineer, APAC PowerVR Graphics Vulkan: Scaling to Multiple Threads Kevin sun Lead Developer Support Engineer, APAC PowerVR Graphics www.imgtec.com Introduction Who am I? Kevin Sun Working at Imagination Technologies Take responsibility

More information

CMSC330 Fall 2010 Final Exam Solutions

CMSC330 Fall 2010 Final Exam Solutions CMSC330 Fall 2010 Final Exam Solutions 1. (8 pts) Programming languages a. (4 pts) Give two examples of programming language features that make it easier to write programs, but make it more difficult to

More information

htmlmin Documentation

htmlmin Documentation htmlmin Documentation Release 0.1 Dave Mankoff Dec 07, 2017 Contents 1 Quickstart 3 1.1 Command Line.............................................. 4 2 Tutorial & Examples 7 3 API Reference 9 3.1 Main

More information

RailsConf Europe 2008 Juggernaut Realtime Rails. Alex MacCaw and Stuart Eccles

RailsConf Europe 2008 Juggernaut Realtime Rails. Alex MacCaw and Stuart Eccles RailsConf Europe 2008 Juggernaut Realtime Rails Alex MacCaw and Stuart Eccles RailsConf Europe 2008 Juggernaut Realtime Rails Alex MacCaw and Stuart Eccles http://www.madebymany.co.uk/ server push HTTP

More information

Progress report of "Ruby 3 Concurrency"

Progress report of Ruby 3 Concurrency Progress report of "Ruby 3 Concurrency" Cookpad Inc. Koichi Sasada Ruby X Elixir Conf Taiwan 2018 (2018/04/28) Today s topic Difficulty of Thread programming New concurrent abstraction

More information

Performance Case Study

Performance Case Study Performance Case Study @Fabian_Frank Yahoo! Search, Engineer Youthmedia.eu, Volunteer A Dynamic Website self-contained App self-contained App self-contained App node v0.4.x multi-core

More information

Reactor Pattern & Event-Driven Programming

Reactor Pattern & Event-Driven Programming Reactor Pattern & Event-Driven Programming A scalable concurrent approach, using EventMachine with Thin as an example Lin Jen-Shin, http://godfat.org/ Reactor Pattern & Event-Driven Programming A scalable

More information

JavaScript: the Big Picture

JavaScript: the Big Picture JavaScript had to look like Java only less so be Java's dumb kid brother or boy-hostage sidekick. Plus, I had to be done in ten days or something worse than JavaScript would have happened.! JavaScript:

More information

A proposal of new concurrency model for Ruby 3

A proposal of new concurrency model for Ruby 3 A proposal of new concurrency model for Ruby 3 Koichi Sasada ko1@heroku.com People love Concurrency Concurrent RubyKaigi (at least, there are two parallel sessions) Why people love (to discuss) Concurrency?

More information

Mavrig. a Tcl application construction kit. Jean-Claude Wippler Equi 4 Software, NL. EuroTcl 2008, Strasbourg, FR

Mavrig. a Tcl application construction kit. Jean-Claude Wippler Equi 4 Software, NL. EuroTcl 2008, Strasbourg, FR Mavrig a Tcl application construction kit Jean-Claude Wippler Equi 4 Software, NL EuroTcl 2008, Strasbourg, FR Let s write an app Tons of packages to build with - Tcllib, etc Choose:! file structure, dev

More information

UA-Tester.... or why Web-Application Penetration Testers are only getting half the story

UA-Tester.... or why Web-Application Penetration Testers are only getting half the story UA-Tester... or why Web-Application Penetration Testers are only getting half the story UA-Tester... or why Web-Application Penetration Testers are only getting half the story... or time to PIMP your tool!

More information

Today: VM wrap-up Select (if time) Course wrap-up Final Evaluations

Today: VM wrap-up Select (if time) Course wrap-up Final Evaluations Today: VM wrap-up Select (if time) Course wrap-up Final Evaluations Program structure int A[1024][1024] ; Each row is stored in one page Ignore code page in this example One frame allocated Program 1 for

More information

Smashing Node.JS: JavaScript Everywhere

Smashing Node.JS: JavaScript Everywhere Smashing Node.JS: JavaScript Everywhere Rauch, Guillermo ISBN-13: 9781119962595 Table of Contents PART I: GETTING STARTED: SETUP AND CONCEPTS 5 Chapter 1: The Setup 7 Installing on Windows 8 Installing

More information

Ruby on Rails TKK, Otto Hilska

Ruby on Rails TKK, Otto Hilska Ruby on Rails intro @ TKK, 25.5.2009 Otto Hilska 1 Today s agenda 1. The Ruby programming language 2. Ruby on Rails framework 3. An example project 2 About me Started Nodeta Oy in 2004 10+ employees always

More information

Node.js. Node.js Overview. CS144: Web Applications

Node.js. Node.js Overview. CS144: Web Applications Node.js Node.js Overview JavaScript runtime environment based on Chrome V8 JavaScript engine Allows JavaScript to run on any computer JavaScript everywhere! On browsers and servers! Intended to run directly

More information

Building an All Flash Server What s the big deal? Isn t it all just plug and play?

Building an All Flash Server What s the big deal? Isn t it all just plug and play? Building an All Flash Server What s the big deal? Isn t it all just plug and play? Doug Rollins Micron Technology Santa Clara, CA 1 What we ll cover Industry Secrets (shhhhh. ) Example Platform Key features

More information

Quick Start Guide WatchGuard Technologies, Inc.

Quick Start Guide WatchGuard Technologies, Inc. WatchGuard XCS Platform Appliance Models: 970 and 1170 Quick Start Guide WatchGuard Technologies, Inc. WatchGuard XCS Quick Start Guide Registration and Configuration 1 2 Register with LiveSecurity Service

More information

Streams, Pipes and Mega Pipes

Streams, Pipes and Mega Pipes Streams, Pipes and Mega Pipes Felix Geisendörfer 11.06.2011 (v1) @felixge Twitter / GitHub / IRC Co-founder transloadit.com Core Developer & Module Author node-mysql node-formidable Streams Image Resizing

More information

CS 856 Latency in Communication Systems

CS 856 Latency in Communication Systems CS 856 Latency in Communication Systems Winter 2010 Latency Challenges CS 856, Winter 2010, Latency Challenges 1 Overview Sources of Latency low-level mechanisms services Application Requirements Latency

More information

Remote Procedure Call

Remote Procedure Call Remote Procedure Call Remote Procedure Call Integrate network communication with programming language Procedure call is well understood implementation use Control transfer Data transfer Goals Easy make

More information

Computer Systems and Networks

Computer Systems and Networks University of the Pacific LECTURE 12: PYTHON BYTES, TCP/IP (LAB 08) Computer Systems and Networks Dr. Pallipuram (vpallipuramkrishnamani@pacific.edu) Today s Agenda Python exercises to simulate network

More information

Introducing Rack. Christian Neukirchen Editor in Chief of Anarchaia

Introducing Rack. Christian Neukirchen Editor in Chief of Anarchaia Introducing Rack Christian Neukirchen Editor in Chief of Anarchaia A Google Image Search for ruby rack reveals: Overview What is Rack? Why do we need Rack? The design of Rack The Rack distribution Coset:

More information

HTTP Authentication API

HTTP Authentication API HTTP Authentication API Note: Both GET (URL format) and POST http requests are supported. Note that POST is considered better security as URL data can be cached in the browser. HTTP URL Format http(s)://your_securenvoy_server/secserver?flag=desktop&version=2.0&status=auth&userid=(my_userid)&passcode=(6

More information

This book is dedicated to Sara, Inara, and the newest little one, who make it all worthwhile.

This book is dedicated to Sara, Inara, and the newest little one, who make it all worthwhile. Working With Ruby Threads Copyright (C) 2013 Jesse Storimer. This book is dedicated to Sara, Inara, and the newest little one, who make it all worthwhile. Chapter 7 How many threads is too many? This question

More information

Creating Ultra-fast Realtime Apps and Microservices with Java. Markus Kett, CEO Jetstream Technologies

Creating Ultra-fast Realtime Apps and Microservices with Java. Markus Kett, CEO Jetstream Technologies Creating Ultra-fast Realtime Apps and Microservices with Java Markus Kett, CEO Jetstream Technologies #NoDBMSApplications #JetstreamDB About me: Markus Kett Living in Regensburg, Germany Working with Java

More information

GraphQL. Concepts & Challenges. - I m Robert Mosolgo - Work from home Ruby developer - From Charlottesville VA - For GitHub

GraphQL. Concepts & Challenges. - I m Robert Mosolgo - Work from home Ruby developer - From Charlottesville VA - For GitHub GraphQL Concepts & Challenges - I m Robert Mosolgo - Work from home Ruby developer - From Charlottesville VA - For GitHub Rails API WHY - You have your Rails app, why bother with an API? - You have clients.

More information

Flash: an efficient and portable web server

Flash: an efficient and portable web server Flash: an efficient and portable web server High Level Ideas Server performance has several dimensions Lots of different choices on how to express and effect concurrency in a program Paper argues that

More information

REST. Lecture BigData Analytics. Julian M. Kunkel. University of Hamburg / German Climate Computing Center (DKRZ)

REST. Lecture BigData Analytics. Julian M. Kunkel. University of Hamburg / German Climate Computing Center (DKRZ) REST Lecture BigData Analytics Julian M. Kunkel julian.kunkel@googlemail.com University of Hamburg / German Climate Computing Center (DKRZ) 11-12-2015 Outline 1 REST APIs 2 Julian M. Kunkel Lecture BigData

More information

Module 3 Web Component

Module 3 Web Component Module 3 Component Model Objectives Describe the role of web components in a Java EE application Define the HTTP request-response model Compare Java servlets and JSP components Describe the basic session

More information

Kaazing Gateway: An Open Source

Kaazing Gateway: An Open Source Kaazing Gateway: An Open Source HTML 5 Websocket Server Speaker Jonas Jacobi Co-Founder: Kaazing Co-Author: Pro JSF and Ajax, Apress Agenda Real-Time Web? Why Do I Care? Scalability and Performance Concerns

More information

This is an open book, open notes exam. But no online or in-class chatting.

This is an open book, open notes exam. But no online or in-class chatting. Principles of Operating Systems Fall 2017 Final 12/13/2017 Time Limit: 8:00am - 10:00am Name (Print): Don t forget to write your name on this exam. This is an open book, open notes exam. But no online

More information

The Rails Initialization Process

The Rails Initialization Process The Rails Initialization Process December 25, 2014 This guide explains the internals of the initialization process in Rails as of Rails 4. It is an extremely in-depth guide and recommed for advanced Rails

More information

Introduc)on to Computer Networks

Introduc)on to Computer Networks Introduc)on to Computer Networks COSC 4377 Lecture 3 Spring 2012 January 25, 2012 Announcements Four HW0 s)ll missing HW1 due this week Start working on HW2 and HW3 Re- assess if you found HW0/HW1 challenging

More information

TM-H6000V. WebConfig API User's Manual. Overview. Web API Specification. Reference. M Rev.A. Describes an overview of WebConfig API.

TM-H6000V. WebConfig API User's Manual. Overview. Web API Specification. Reference. M Rev.A. Describes an overview of WebConfig API. TM-H6000V WebConfig API User's Manual Overview Describes an overview of WebConfig API. Web API Specification Describes the web API specification. Reference Describes how to refer to and change setting

More information

416 Distributed Systems. Networks review; Day 2 of 2 Fate sharing, e2e principle And start of RPC Jan 10, 2018

416 Distributed Systems. Networks review; Day 2 of 2 Fate sharing, e2e principle And start of RPC Jan 10, 2018 416 Distributed Systems Networks review; Day 2 of 2 Fate sharing, e2e principle And start of RPC Jan 10, 2018 1 Last Time Modularity, Layering, and Decomposition Example: UDP layered on top of IP to provide

More information

A Joint SLC/RealEyes Production.

A Joint SLC/RealEyes Production. A Joint SLC/RealEyes Production www.realeyes.com www.streaminglearningcenter.com Understanding the problem Reducing latency Delivery Player Content Up and Coming Some test results Time to video play Important

More information

Introduction and first application. Luigi De Russis. Rails 101

Introduction and first application. Luigi De Russis. Rails 101 Introduction and first application Luigi De Russis 2 About Rails Ruby on Rails 3 Framework for making dynamic web applications created in 2003 Open Source (MIT License) for the Ruby programming language

More information

CSci 4061 Introduction to Operating Systems. (Thread-Basics)

CSci 4061 Introduction to Operating Systems. (Thread-Basics) CSci 4061 Introduction to Operating Systems (Thread-Basics) Threads Abstraction: for an executing instruction stream Threads exist within a process and share its resources (i.e. memory) But, thread has

More information

MRI Internals. Koichi Sasada.

MRI Internals. Koichi Sasada. MRI Internals Koichi Sasada ko1@heroku.com MRI Internals towards Ruby 3 Koichi Sasada ko1@heroku.com Today s talk Koichi is working on improving Ruby internals Introduce my ideas toward Ruby 3 Koichi Sasada

More information

CS510 Operating System Foundations. Jonathan Walpole

CS510 Operating System Foundations. Jonathan Walpole CS510 Operating System Foundations Jonathan Walpole Course Overview Who am I? Jonathan Walpole Professor at PSU since 2004, OGI 1989 2004 Research Interests: Operating System Design, Parallel and Distributed

More information

CMSC 330: Organization of Programming Languages

CMSC 330: Organization of Programming Languages CMSC 330: Organization of Programming Languages Multithreading Multiprocessors Description Multiple processing units (multiprocessor) From single microprocessor to large compute clusters Can perform multiple

More information

DRb. RMI For Smart People

DRb. RMI For Smart People DRb RMI For Smart People Brian Sletten brian@bosatsu.net David Sletten david@bosatsu.net DRb Distributed Ruby Written by Masatoshi Seki Ruby Objects in one process can easily call Ruby Objects in another

More information

Tools. SWE 432, Fall Design and Implementation of Software for the Web

Tools. SWE 432, Fall Design and Implementation of Software for the Web Tools SWE 432, Fall 2016 Design and Implementation of Software for the Web Today Before we can really make anything, there s a bunch of technical stuff to get out of the way Tools make our lives so much

More information

Microservices with Node.js

Microservices with Node.js Microservices with Node.js Objectives In this module we will discuss: Core Node.js concepts Node Package Manager (NPM) The Express Node.js package The MEAN stack 1.1 What is Node.js? Node.js [ https://nodejs.org/

More information

September 15th, Finagle + Java. A love story (

September 15th, Finagle + Java. A love story ( September 15th, 2016 Finagle + Java A love story ( ) @mnnakamura hi, I m Moses Nakamura Twitter lives on the JVM When Twitter realized we couldn t stay on a Rails monolith and continue to scale at the

More information

MPI on the Cray XC30

MPI on the Cray XC30 MPI on the Cray XC30 Aaron Vose 4/15/2014 Many thanks to Cray s Nick Radcliffe and Nathan Wichmann for slide ideas. Cray MPI. MPI on XC30 - Overview MPI Message Pathways. MPI Environment Variables. Environment

More information

Implementing Microservices Tracing with Spring Cloud and Zipkin

Implementing Microservices Tracing with Spring Cloud and Zipkin Implementing Microservices Tracing with Spring Cloud and Zipkin Marcin Grzejszczak, @mgrzejszczak 1 2017 Pivotal About me Spring Cloud developer at Pivotal Working mostly on Spring Cloud Sleuth Spring

More information

EmberJS A Fitting Face for a D8 Backend. Taylor Solomon

EmberJS A Fitting Face for a D8 Backend. Taylor Solomon EmberJS A Fitting Face for a D8 Backend Taylor Solomon taylor.solomon @jtsolomon http://interactivestrategies.com 2 Years Ago 2 Years Ago URL Ember Data assumes a few things. - Your API format is JSON

More information

Python 3000 and You. Guido van Rossum PyCon March 14, 2008

Python 3000 and You. Guido van Rossum PyCon March 14, 2008 Python 3000 and You Guido van Rossum PyCon March 14, 2008 Why Py3k Open source needs to move or die Matz (creator of Ruby) To fix early, sticky design mistakes e.g. classic classes, int division, print

More information

From the event loop to the distributed system. Martyn 3rd November, 2011

From the event loop to the distributed system. Martyn 3rd November, 2011 From the event loop to the distributed system Martyn Loughran martyn@pusher.com @mloughran 3rd November, 2011 From the event loop to the distributed system From the event loop to the distributed system

More information

Getting Some REST with webmachine. Kevin A. Smith

Getting Some REST with webmachine. Kevin A. Smith Getting Some REST with webmachine Kevin A. Smith What is webmachine? Framework Framework Toolkit A toolkit for building RESTful HTTP resources What is REST? Style not a standard Resources == URLs http://localhost:8000/hello_world

More information

CMPSC 311- Introduction to Systems Programming Module: Systems Programming

CMPSC 311- Introduction to Systems Programming Module: Systems Programming CMPSC 311- Introduction to Systems Programming Module: Systems Programming Professor Patrick McDaniel Fall 2013 Patrick McDaniel Professor of Computer Science and Engineering Co-head of Security Group

More information

Rhino & RingoJS: JavaScript on the JVM

Rhino & RingoJS: JavaScript on the JVM Rhino & RingoJS: JavaScript on the JVM Hannes Wallnöfer http://hns.github.com @hannesw "Overall, JavaScript as a system programming language feels a lot like Lisp must have for the programming generation

More information

Welcome to the Bash Workshop!

Welcome to the Bash Workshop! Welcome to the Bash Workshop! If you prefer to work on your own, already know programming or are confident in your abilities, please sit in the back. If you prefer guided exercises, are completely new

More information

Web Applications. Software Engineering 2017 Alessio Gambi - Saarland University

Web Applications. Software Engineering 2017 Alessio Gambi - Saarland University Web Applications Software Engineering 2017 Alessio Gambi - Saarland University Based on the work of Cesare Pautasso, Christoph Dorn, Andrea Arcuri, and others ReCap Software Architecture A software system

More information

OPERATING SYSTEM TRANSACTIONS

OPERATING SYSTEM TRANSACTIONS OPERATING SYSTEM TRANSACTIONS Donald E. Porter, Owen S. Hofmann, Christopher J. Rossbach, Alexander Benn, and Emmett Witchel The University of Texas at Austin OS APIs don t handle concurrency 2 OS is weak

More information

JS Event Loop, Promises, Async Await etc. Slava Kim

JS Event Loop, Promises, Async Await etc. Slava Kim JS Event Loop, Promises, Async Await etc Slava Kim Synchronous Happens consecutively, one after another Asynchronous Happens later at some point in time Parallelism vs Concurrency What are those????

More information

Overview of the Ruby Language. By Ron Haley

Overview of the Ruby Language. By Ron Haley Overview of the Ruby Language By Ron Haley Outline Ruby About Ruby Installation Basics Ruby Conventions Arrays and Hashes Symbols Control Structures Regular Expressions Class vs. Module Blocks, Procs,

More information

Be warned Niklas Gustavsson

Be warned Niklas Gustavsson 1 Niklas Gustavsson niklas.gustavsson@callistaenterprise.se www.callistaenterprise.se Be warned CouchDB, Slide 2 2 Won't replace your relational database You (probably) won't be using it any time soon

More information

Distributed Architectures & Microservices. CS 475, Spring 2018 Concurrent & Distributed Systems

Distributed Architectures & Microservices. CS 475, Spring 2018 Concurrent & Distributed Systems Distributed Architectures & Microservices CS 475, Spring 2018 Concurrent & Distributed Systems GFS Architecture GFS Summary Limitations: Master is a huge bottleneck Recovery of master is slow Lots of success

More information

Quick Start Guide. WatchGuard XCS Platform Appliance Models: 170, 370, 570, 770, and 770R. Guide de démarrage rapide Kurzanleitung Guida introduttiva

Quick Start Guide. WatchGuard XCS Platform Appliance Models: 170, 370, 570, 770, and 770R. Guide de démarrage rapide Kurzanleitung Guida introduttiva WatchGuard XCS Platform Appliance Models: 170, 370, 570, 770, and 770R Quick Start Guide Guide de démarrage rapide Kurzanleitung Guida introduttiva Guía Rápida WatchGuard Technologies, Inc. XCS_170_370_570_770_770R_QSG_FINAL_0110110.indd

More information

Rudy: a small web server. Johan Montelius. October 2, 2016

Rudy: a small web server. Johan Montelius. October 2, 2016 Rudy: a small web server Johan Montelius October 2, 2016 Introduction Your task is to implement a small web server in Erlang. The aim of this exercise is that you should be able to: describe the procedures

More information

Processes and Threads

Processes and Threads COS 318: Operating Systems Processes and Threads Kai Li and Andy Bavier Computer Science Department Princeton University http://www.cs.princeton.edu/courses/archive/fall13/cos318 Today s Topics u Concurrency

More information

- From Theory to Practice -

- From Theory to Practice - - From Theory to Practice - Thomas Balthazar Stella Cotton Corey Donohoe Yannick Schutz What is distributed tracing? Tracing requests across distributed system boundaries A Simple Use Case Web Request

More information

Overview. CMSC 330: Organization of Programming Languages. Concurrency. Multiprocessors. Processes vs. Threads. Computation Abstractions

Overview. CMSC 330: Organization of Programming Languages. Concurrency. Multiprocessors. Processes vs. Threads. Computation Abstractions CMSC 330: Organization of Programming Languages Multithreaded Programming Patterns in Java CMSC 330 2 Multiprocessors Description Multiple processing units (multiprocessor) From single microprocessor to

More information

Introduction to yada. Malcolm

Introduction to yada. Malcolm Introduction to yada Malcolm Sparks @malcolmsparks 304 Not Modified RangeRequests Expires uthorization Weak vs Strong 405 Method Not Allowed Referrer AcceptLanguage Quality Values IfMatch Allow Continue

More information

Copyright by Object Computing, Inc. (OCI). All rights reserved. Strata

Copyright by Object Computing, Inc. (OCI). All rights reserved. Strata Overview npm install [-g] strata var strata = require('strata'); Node.js streaming HTTP server Based on Web Server Gateway Interface (WSGI) - a Python standard at http://wsgi.org Rack - a Ruby Webserver

More information

OS Extensibility: SPIN and Exokernels. Robert Grimm New York University

OS Extensibility: SPIN and Exokernels. Robert Grimm New York University OS Extensibility: SPIN and Exokernels Robert Grimm New York University The Three Questions What is the problem? What is new or different? What are the contributions and limitations? OS Abstraction Barrier

More information

django-baton Documentation

django-baton Documentation django-baton Documentation Release 1.0.7 abidibo Nov 13, 2017 Contents 1 Features 3 2 Getting started 5 2.1 Installation................................................ 5 2.2 Configuration...............................................

More information

Under The Hood: Performance Tuning With Tizen. Ravi Sankar Guntur

Under The Hood: Performance Tuning With Tizen. Ravi Sankar Guntur Under The Hood: Performance Tuning With Tizen Ravi Sankar Guntur How to write a Tizen App Tools already available in IDE v2.3 Dynamic Analyzer Valgrind 2 What s NEXT? Want to optimize my application App

More information

Application Layer Introduction; HTTP; FTP

Application Layer Introduction; HTTP; FTP Application Layer Introduction; HTTP; FTP Tom Kelliher, CS 325 Feb. 4, 2011 1 Administrivia Announcements Assignment Read 2.4 2.6. From Last Time Packet-switched network characteristics; protocol layers

More information

CS 111. Operating Systems Peter Reiher

CS 111. Operating Systems Peter Reiher Operating System Principles: File Systems Operating Systems Peter Reiher Page 1 Outline File systems: Why do we need them? Why are they challenging? Basic elements of file system design Designing file

More information

Toby Crawley. Creative Commons BY-SA 3.0. Charlotte.rb May 2011

Toby Crawley. Creative Commons BY-SA 3.0. Charlotte.rb May 2011 Toby Crawley Creative Commons BY-SA 3.0 Charlotte.rb May 2011 whoami @tcrawley C > Java > PHP > Java > Ruby > Java? Red Hat Senior Engineer member of Goal To convert you all to TorqueBox users! TorqueBox

More information

Grand Central Dispatch

Grand Central Dispatch A better way to do multicore. (GCD) is a revolutionary approach to multicore computing. Woven throughout the fabric of Mac OS X version 10.6 Snow Leopard, GCD combines an easy-to-use programming model

More information

Understanding MPI on Cray XC30

Understanding MPI on Cray XC30 Understanding MPI on Cray XC30 MPICH3 and Cray MPT Cray MPI uses MPICH3 distribution from Argonne Provides a good, robust and feature rich MPI Cray provides enhancements on top of this: low level communication

More information

CSE 413 Programming Languages & Implementation. Hal Perkins Winter 2019 Ruby Containers, Blocks, and Procs

CSE 413 Programming Languages & Implementation. Hal Perkins Winter 2019 Ruby Containers, Blocks, and Procs CSE 413 Programming Languages & Implementation Hal Perkins Winter 2019 Ruby Containers, Blocks, and Procs CSE413 Winter 2019 1 The Plan Ruby container data structures Blocks and control structures (iterators,

More information

Computer Systems and Networks

Computer Systems and Networks University of the Pacific LECTURE 13: TCP RECAP, ENDIANNESS, DNS, WIRESHARK Computer Systems and Networks Dr. Pallipuram (vpallipuramkrishnamani@pacific.edu) Gist of TCP/IP Socket Programming Client Server

More information

What is Node.js? Tim Davis Director, The Turtle Partnership Ltd

What is Node.js? Tim Davis Director, The Turtle Partnership Ltd What is Node.js? Tim Davis Director, The Turtle Partnership Ltd About me Co-founder of The Turtle Partnership Working with Notes and Domino for over 20 years Working with JavaScript technologies and frameworks

More information

A Sense of Time for JavaScript and Node.js

A Sense of Time for JavaScript and Node.js A Sense of Time for JavaScript and Node.js First-Class Timeouts as a Cure for Event Handler Poisoning James C. Davis Eric R. Williamson Dongyoon Lee COMPUTER SCIENCE - 1 - Contributions Attack: Event Handler

More information