SlideShare a Scribd company logo
SPRINGONE2GX
WASHINGTON, DC
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attributio n-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Ratpack Web Framework
By Dan Woods
@danveloper
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
About Me
• Member of the Ratpack Web core team
• Author of “Learning Ratpack”, O’Reilly
• http://shop.oreilly.com/product/0636920037545.do
• Senior Engineer, The Groundwork
• https://github.com/danveloper
2
1st Four Chapters Available Today!
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Ratpack Team on Twitter
3
Follow this crew!
• @ldaley
• @varzof
• @rus_hart
• @beckje01
• @marcinerdmann
• @zedar185
• @Lspacewalker
• @johnrengelman
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Brief History of Ratpack
• Ratpack started out as a Groovy DSL implementation example (2010)
• Evolved steadily into a JVM Sinatra clone (2010-2011)
• Dumped Sinatra legacy and started focusing on NIO/performance (2012)
• Under steady development in its modern form for 3 full years!
4
GroovyDSLImplementation
JVMSinatraClone
Drop“Sinatra”,NIO/Perf
DropsServletsforVert.x
CorerewritteninJava
Movestoorg.ratpackpackages
ExecutionModelIntroduced
Bootstraping,Config
Registryisintroduced
MovefromVert.xtoNetty
Stable,ProductionReady–1.0

Recommended for you

Spring Boot on Amazon Web Services with Spring Cloud AWS
Spring Boot on Amazon Web Services with Spring Cloud AWSSpring Boot on Amazon Web Services with Spring Cloud AWS
Spring Boot on Amazon Web Services with Spring Cloud AWS

SpringOne 2021 Session Title: Spring Boot on Amazon Web Services with Spring Cloud AWS Speakers: Maciej Walkowiak, Software Consultant at Independent; Matej Nedic, Software engineer at Ingemark

core framework
Enabling Cloud Native Buildpacks for Windows Containers
Enabling Cloud Native Buildpacks for Windows ContainersEnabling Cloud Native Buildpacks for Windows Containers
Enabling Cloud Native Buildpacks for Windows Containers

SpringOne 2020 Daniella Corricelli: Product Manager, VMware; Malini Valliath: Member of Technical Staff, VMware; Micah Young: Software Engineer, VMware; Andrew Meyer: Software Engineer, VMware

springone 2020.netkubernetes
Bootiful Reactive Testing - Mario Gray
Bootiful Reactive Testing - Mario GrayBootiful Reactive Testing - Mario Gray
Bootiful Reactive Testing - Mario Gray

This document contains the transcript of a presentation on reactive programming and consumer-driven contracts (CDC) using Spring Boot. Some of the key points discussed include: - The speaker's background and an overview of their GitHub project on testing. - An introduction to the Spring Cloud Contract Verifier for implementing CDC. It enables generating JSON stubs, messaging routes, and acceptance tests. - An overview of the Stub Runner tool for automatically downloading and executing stubs. - A description of the Reactor project for building reactive applications, including its core components like Flux and Mono, operators, and support for non-blocking I/O. - A demonstration of reactive programming concepts like publishers, subscribers, and reactive

springone tourpivotal softwarereactive
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Overview of Ratpack
• Ratpack is now at version 1.0.0
• Production-ready, API-stable
• Can safely adopt without fear of breaking API changes
• Great option for building microservices
• Can also be integrated into legacy apps through its robust test fixtures
5
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Overview of Ratpack
• A high performance web framework
• Built on a non-blocking network stack
• Provides low-level constructs for working with async APIs
• Core is written in Java (requires Java 8)
• Integrated support for building Groovy-based applications
• Emphasis on developer productivity
• As few opinions as possible
• Fast, self-contained, light-weight deployables
6
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Simplest Hello World Example
• Just a few lines of Groovy code required!
7
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Simplest Hello World Example
• Totally Tweetable! https://twitter.com/danveloper/status/608298173208100864
8

Recommended for you

Building Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring CloudBuilding Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring Cloud

As presented at: http://www.meetup.com/Pivotal-Open-Source-Hub/events/219264521/ With the advent of microservice and cloud-native application architectures, building distributed systems is becoming increasingly common for the enterprise Java developer. Fortunately many of the innovators in the space, including Twitter, LinkedIn, and Netflix, have embraced the JVM as they’ve built increasingly complex systems, with Netflix open-sourcing much of its toolkit for constructing these systems at NetflixOSS. Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems. Many of these patterns are provided via wrapping the battle-tested components found at NetflixOSS.

netflixspringjava
Building with Gradle
Building with GradleBuilding with Gradle
Building with Gradle

"Building with Gradle" by Laurynas Tretjakovas. A short introduction to Gradle. How to start using Gradle for Java projects and how does it compare to Maven and Ant.

gradle building kaunas jug
Maven beyond hello_world
Maven beyond hello_worldMaven beyond hello_world
Maven beyond hello_world

This document discusses best practices for using Maven to build large, multi-module projects within a corporate environment. It recommends using a parent POM and dependency management to control dependencies across modules. It also suggests installing a Maven repository manager and using the Maven release plugin to automate releases. The document emphasizes customizing Maven configurations and plugins to fit the unique needs of a project while still respecting Maven conventions and best practices.

javabuildapache maven
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Java Hello World Example
• Still, not very much needed at all…
9
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Overview of Ratpack
• Support for HTML templates with Groovy and Handlebars
10
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Overview of Ratpack
• Great for microservices!
• First-class support for language agnostic transport
11
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Overview of Ratpack
• Non-blocking HTTP client
12

Recommended for you

Introduction to gradle
Introduction to gradleIntroduction to gradle
Introduction to gradle

Gradle is an open source build automation system that builds upon the concepts of Apache Ant and Apache Maven and introduces a Groovy-based domain-specific language (DSL) instead of the XML form used by Apache Maven for declaring the project configuration.

gradlebuildbuild tool
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster

Slides from the "being productive with JHipster" talk at Devoxx Belgium 2016 by Julien Dubois (JHipster lead) & Deepu K Sasidharan (JHipster co-lead). Live video is at: https://www.youtube.com/watch?v=dzdjP3CPOCs Code commited (live!) during the presentation is at: https://github.com/jhipster/devoxx-2016

jhipsterangularjsspring
Spring GraphQL
Spring GraphQLSpring GraphQL
Spring GraphQL

SpringOne 2021 Session Title: Spring GraphQL Speakers: Andreas Marek, Software Architect at Atlassian; Rossen Stoyanchev, Senior Staff at VMware

core frameworkmodern web
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Overview of Ratpack
• Fault tolerance for building distributed systems
13
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Overview of Ratpack
• Support for metric reporting with Dropwizard Metrics
14
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Overview of Ratpack
• Comprehensive configuration model
15
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Overview of Ratpack
• Support for persistent sessions
16

Recommended for you

Ingress? That’s So 2020! Introducing the Kubernetes Gateway API
Ingress? That’s So 2020! Introducing the Kubernetes Gateway APIIngress? That’s So 2020! Introducing the Kubernetes Gateway API
Ingress? That’s So 2020! Introducing the Kubernetes Gateway API

SpringOne 2021: Session Title: Ingress? That’s So 2020! Introducing the Kubernetes Gateway API Speakers: Abhinav Rau, Principal Architect at Google; Madhav Sathe, Cloud Customer Engineer at Google

ci/cdkubernetesserverless/microservices
OpenShift for Java EE Developers
OpenShift for Java EE DevelopersOpenShift for Java EE Developers
OpenShift for Java EE Developers

We're all aware of cloud computing and the operational ability to easily create, configure and manage instances in an IaaS environment. But many of us are not Unix system admins and just want to focus on developing and deploying our Java applications. RedHat OpenShift (which is of course open source) is a developer-friendly PaaS that offers auto-scalability and reliability as native features. So if you are tired of configuring and administering servers, come see how OpenShift PaaS can make you a happier and more productive Java EE software engineer. Learn about the base platform, how to use existing developer frameworks (cartridges) and how to integrate them into your development life cycle. And learn about the exciting Docker and Kubernetes plans for OpenShift v3.

redhatopenshiftjavaee
Drone presentation
Drone presentationDrone presentation
Drone presentation

Drone.io is a lightweight, Docker-based CI/CD platform written in Go. It spins up a Docker container to check out code from version control, build it, and perform other actions. Drone.io offers on-premise and cloud hosting, is easy to deploy, and supports configurations, notifications, publishing, and deploying artifacts. It uses a .drone.yml file to define build pipelines and actions like building Docker images, publishing artifacts, deployment, and notifications.

droneci
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Overview of Ratpack
• Robust security with Pac4j
17
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Overview of Ratpack
• Out of the box SSL support
18
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Performance
• Like most frameworks, Ratpack is CPU-bound (the more CPUs, the better)
• Unlike most frameworks, Ratpack efficiently processes on each CPU
19
https://gist.github.com/danveloper/db888be3519966976368
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Execution Model
• The execution model in Ratpack is borne from the fact that the JVM has no
inherent support for Continuations
• Asynchronous programming is difficult
• Async processing introduces non-determinism
• Web applications require deterministic processing
20

Recommended for you

Graalvm with Groovy and Kotlin - Madrid GUG 2019
Graalvm with Groovy and Kotlin - Madrid GUG 2019Graalvm with Groovy and Kotlin - Madrid GUG 2019
Graalvm with Groovy and Kotlin - Madrid GUG 2019

Charla sobre qué es GraalVM, que contiene y cómo usarlo con Groovy y con Kotlin, impartida en Madrid GUG en 2019.

groovykotlingraalvm
Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!

Grails 4 takes the powerful and flexibility of the Grails framework to a new level, with the latest versions of core frameworks like Spring 5.1, Spring Boot 2.1, Gradle 5, and Groovy 2.5. Additionally, Micronaut is now part of the Grails foundation, allowing many powerful features from Micronaut to be used natively within your Grails apps. In this talk, we’ll look at how you can upgrade your Grails 3 project (with a little aside for Grails 2 projects as well) to Grails 4, and get a taste of the new features at your disposal in this exciting new release.

grailsgroovyspring boot
Dockerize it all
Dockerize it allDockerize it all
Dockerize it all

Docker allows simple environment isolation and repeatability so that we can create a run-time environment once, package it up, then run it again on any other machine. Furthermore, everything that runs in that environment is isolated from the underlying host (much like a virtual machine). And best of all, everything is fast and simple. This presentation, we’ll provide basic introduction. What is Docker? why to use it? and demonstrate how we can use Docker to compose and deploy an application.

docker
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Execution Model
• Ratpack wants to make Async processing and programming a reliable and
usable model for the JVM
• By fitting into the execution model, applications garner confidence from a
deterministic processing flow
21
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
TPR/TPC Processing Model
• How most JVM web frameworks work
22
Internet Web App
new Thread().start()
Blocking
Processing
Process and wait
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
TPR/TPC Processing Model
• In the thread-per-request (or thread-per-connection) model, you are limited by
the amount of threads that you can create
• Bringing the data from a request-taking thread and placing it into a processing
thread incurs a context switch
• The processing thread is where all your work is done, and is established until
you respond
• This is not performant at all, but it is an easy model to program in, and that’s
why people use it
23
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Ratpack Processing Model
• How Ratpack works (4 CPU example)
24
Internet Event Loop
Event Loop
Event Loop
Event Loop
Handler
Waiting for something?
(db call, call to remote)
Return thread to
request-taking pool
while we wait
Respond
One thread per CPU core

Recommended for you

Developer Experience Cloud Native - Become Efficient and Achieve Parity
Developer Experience Cloud Native - Become Efficient and Achieve ParityDeveloper Experience Cloud Native - Become Efficient and Achieve Parity
Developer Experience Cloud Native - Become Efficient and Achieve Parity

Zu einer effizienten Cloud-Entwicklung gehört nicht nur ein schnelles Deployment der Services in die Cloud. Auch ein reibungsloses Entwickeln und Debuggen der Services direkt in der Cloud steigert die Effizienz. Darüber hinaus sollte die Entwicklungsumgebung möglichst identisch mit der Produktionsumgebung sein. Diesen Umstand empfiehlt schon seit langem die 12-Factor-App-Auflistung in Punkt 10: "Dev/prod parity". In dieser Session wird eine Auswahl an Open-Source-Tools vorgestellt, die einem Java-Entwickler bei der Erreichung folgender Ziele behilflich sind: schnelles und synchrones Deployment (Skaffold), Entwicklung und Debugging im Kubernetes Pod (OpenLiberty mit Ksync, Quarkus Live Coding), Erweiterung des Kubernetes Perimeter für eine lokale Entwicklung (telepresence oder Bridge to Kubernetes). Die einfache Handhabung dieser Tools verdeutlichen die zugehörigen Demos in dieser Session.

cloud nativecloudkubernetes
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012

The document discusses modularizing a Grails application using private plugins. It covers Grails plugin development basics like creating a new plugin, the plugin descriptor file, excluded files, running and packaging a plugin. It also discusses application architecture with private plugins, including moving common functionality into plugins to avoid forking code.

pluginsgrailsgroovy
leonardo monsalve
leonardo monsalveleonardo monsalve
leonardo monsalve

Este documento describe cómo Yeisson Fabian Gafaro Acero ayudó a Leonardo Monsalve García, un agricultor de 55 años, a aprender sobre Internet y redes sociales. A través de visitas semanales, Yeisson mostró a Leonardo cómo navegar páginas como Redvolución.gov.co y crear cuentas en redes sociales. Con la práctica, Leonardo aprendió a usar estas herramientas de forma independiente para comunicarse con familiares y distraerse de su rutina diaria como agricultor. Al final del proceso

Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Ratpack Processing Model
• Only establishes a single thread per CPU core
• Processing doesn’t block the thread (if it needs to, then we can schedule it to
the blocking thread pool)
• While we wait for async responses to be fulfilled, the thread is able to process
other requests
• When we get the async response, processing continues on the same thread
• No context switching in computation handlers, async processing responds when
its work is done
25
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Problems with Async Programming
• Callbacks are obnoxious to work with
• No good way to detect when waiting for async responses
• Represents a temporal disconnect from the processing flow
• Most async web frameworks start a timer when a request comes in, and if you
don’t respond by the time that’s over, then it assumes you’re not going to
26
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Problems with Async Programming
27
Callback
HELL
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Problems with Async Programming
28
With Ratpack Promises, you
get guaranteed execution
order without the need
scoped callbacks.
<1> - definitely happens 1st
<2> - definitely happens 2nd
<3> - definitely happens 3rd
<4> - definitely happens 4th
<5> - definitely happens 5th

Recommended for you

Content marketing that converts - Istanbul
Content marketing that converts - IstanbulContent marketing that converts - Istanbul
Content marketing that converts - Istanbul

My popular Content marketing presentation - Now in Turkish! (no just kidding Englis, but the version I gave at the Conversion Summit in Istanbul 2014)

#crsummittrcroconversion summit
Collaboration friday
Collaboration fridayCollaboration friday
Collaboration friday

Collaboration among teachers provides benefits like increased resources and opportunities for professional growth. Effective collaboration involves shared goals and accountability, well-defined roles, and active participation through discussions, planning, and decision making. It is facilitated by digital tools that allow asynchronous and synchronous work regardless of location. Regular time for collaboration should be built into schedules to allow for meaningful planning focused on curriculum, instruction, and student achievement.

Historia insp manuel antonio leal chacon
Historia insp   manuel antonio leal chaconHistoria insp   manuel antonio leal chacon
Historia insp manuel antonio leal chacon

esta es una historia inspiradora que por medio del programa redvolucion pudo aprender como usar el internet

Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Problems with Async Programming
29
In other async web
frameworks:
The clock is ticking for you
to get that response out
before the framework
shuts you down
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Problems with Async Programming
30
Execution
|__stream
|__marker
|__flatMap(..)
|__findByUsername
|__stream
|__marker
|__flatMap(..)
|__loadProfile
|__stream
|__marker
|__flatMap(..)
|__loadFriends
|__stream
|__marker
|__flatMap(..)
|__loadFriendPhotos
|__stream
|__marker
|__render(..)
|__then(..)
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Execution Model
• The overall execution is a parallel to the construct of a continuation
• Each of the calls to a Promise represent a frame in the execution
• Each of the Promise types represents a new processing stream in the
execution
• While async processing is taking place (ie. Promise is not fulfilled), the
execution is suspended
• When the execution is suspended, the processing thread is given back to the
event loop to continue processing requests
• When an async call returns, the execution is resumed
31
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Execution Model
• Most importantly, we know that when we hit the marker on a processing stream
that the stream is done computing
• The processing streams are supervised by Ratpack to know that a request is
still processing
• If your code doesn’t respond to a request, we don’t need to wait until the
request times out to inform the client
• If all the streams are done computing but no response has been sent, we are
aware of that and can send an appropriate error back (no response sent) to the
client
32

Recommended for you

Wingss power point
Wingss power pointWingss power point
Wingss power point

Wingss Management Consultancy provides staffing and recruitment solutions. It offers services in industries such as hospitality, construction and engineering, banking, insurance, and marketing and sales. The company aims to achieve client satisfaction through quality, efficiency, cost-effectiveness and support. It has a database of candidate profiles and works to place the right professionals in the right jobs. Wingss believes in doing its best for clients and developing customizable staffing solutions.

Collaboration friday
Collaboration fridayCollaboration friday
Collaboration friday

Collaboration among teachers provides benefits such as increased resources and opportunities for professional growth. Effective collaboration involves shared goals and accountability, participation from all members, and reflection. It is important for schools to provide time and tools for meaningful collaborative planning and learning to better support students.

rhythm workshop
rhythm workshoprhythm workshop
rhythm workshop

Rhythm workshops for companies and organizations

Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Execution Model
• Ratpack’s execution model gives you much higher confidence in working with
async programming
• The Promise type makes async programming easier
• Deterministic async processing gives added benefits for concurrency
• You have better confidence when programming to async APIs with Ratpack
• Fun fact: any API can be made asynchronous in Ratpack
33
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Blocking Done Right
• To make use of most 3rd party Java libraries, blocking will need to take place at
some point
• A prime example here is using JDBC
• Since you can’t block on the request-taking thread, you will need to do blocking
on a separate thread
• Any non-trivial application will need to do blocking at some point…
• Ratpack provides easy fixtures for Promise types to be scheduled for
computation or blocking
34
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Blocking Done Right
35
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Dependency Injection
• Ratpack is not tied to any particular dependency injection framework
• DI is an abstract concept in Ratpack, components are registered via a Registry
• Ratpack apps can be built entirely without any DI
• Framework modularity is accomplished via Guice
• 1st class support for Guice and Spring Boot
36

Recommended for you

Grafico diario del dax perfomance index para el 11 02-2013
Grafico diario del dax perfomance index para el 11 02-2013Grafico diario del dax perfomance index para el 11 02-2013
Grafico diario del dax perfomance index para el 11 02-2013

Este documento presenta un análisis técnico del índice DAX alemán del 11 de febrero de 2013. Proporciona niveles de soporte y resistencia clave basados en medias móviles simples de 1 a 987 períodos. Explica que el mercado podría subir si mantiene ciertos niveles clave, pero podría caer si pierde otros niveles de soporte. También describe brevemente cómo se construyen los gráficos y cómo se usan las medias móviles para definir tendencias alcistas y

Impacto de las tics en la educaciòn
Impacto de las tics en la educaciònImpacto de las tics en la educaciòn
Impacto de las tics en la educaciòn

Este documento resume las ventajas de las TIC en la educación, incluyendo su uso como fuente de información, canal de comunicación, medio de expresión y creación, instrumento cognitivo, y recurso interactivo para el aprendizaje. También proporciona guías para usar los softwares Mind Manager y Hot Potatoes en educación, e incluye ejemplos de diagramas creados en Mind Manager sobre temas de ciencias naturales.

mind manager
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Registry
• There are multiple registries in Ratpack
• Provide components at different layers of the framework
37
Server Registry
User Registry
Context Registry
Request Registry
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Registry
• Components can be bound to the user registry at start time
38
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Registry
• Registries can be built and cascaded at request time, and according to request
attributes
39
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Registry
• Registries can be backed by Guice…
40

Recommended for you

Brexit Webinar Series 3
Brexit Webinar Series 3Brexit Webinar Series 3
Brexit Webinar Series 3

This document summarizes a webinar presented by Allen & Overy on employment, data protection, and data transfers following Brexit. The webinar addressed how Brexit may impact these areas in the short and long term. In the short term, EU laws and free movement rights will continue to apply until the UK formally exits the EU. However, the long term implications are still uncertain as negotiations unfold over the next two years. The webinar also discussed steps companies can take now to prepare, such as auditing expatriate workforces and securing workers' immigration status.

基隆交點Vol.5 - 王珈琳 - 陪伴,一段服務的時間
基隆交點Vol.5 - 王珈琳 - 陪伴,一段服務的時間基隆交點Vol.5 - 王珈琳 - 陪伴,一段服務的時間
基隆交點Vol.5 - 王珈琳 - 陪伴,一段服務的時間
Auktuálne otázky zodpovednosti za porušovanie práv duševného vlastníctva online
Auktuálne otázky zodpovednosti za porušovanie práv duševného vlastníctva onlineAuktuálne otázky zodpovednosti za porušovanie práv duševného vlastníctva online
Auktuálne otázky zodpovednosti za porušovanie práv duševného vlastníctva online

Prezentácia z februárovej prednášky v Brne.

intermediariesisp liabilitydisconnecting injunctions
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Registry
• … or by Spring Boot…
41
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Registry
• … or both …
42
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Dependency Injection
• In Groovy, dependency injection can be accomplished by simply specifying the
type as a closure argument
43
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Dependency Injection
• Taking a completely unopinionated approach to dependency injection allows
implementations to be flexible
• Can support nearly every component-providing backend
• Gives you the ability to leverage the best parts of all available ecosystems
• New Ratpack apps can readily fit into legacy infrastructures that do have
opinions about this stuff
44

Recommended for you

Getting Open Data Used
Getting Open Data UsedGetting Open Data Used
Getting Open Data Used

The document discusses strategies for getting open data used, including focusing on data that interests people, making data easy to access and reuse through common licensing and standards, and engaging with developers and the public to promote use. It provides examples of open data projects that have generated significant economic and social benefits through new applications and insights, while noting challenges in fully measuring these impacts. Overall it argues for open data as a "transport investment" that can yield high returns with the right approach.

open data
1 4 vamos a jugar
1 4 vamos a jugar1 4 vamos a jugar
1 4 vamos a jugar

Este documento presenta un juego dirigido a estudiantes adultos para que puedan elaborar una dieta saludable para una persona, seleccionando las tarjetas adecuadas de alimentos y raciones para cada comida del día. El objetivo es que aprendan a diseñar dietas equilibradas basadas en las recomendaciones de consumo de los diferentes grupos de alimentos. Los estudiantes trabajarán en grupos y revisarán las dietas diseñadas por los demás.

juego nutriciónnutricionjuego dieta
Women On Top: Celebrating Women in Business
Women On Top: Celebrating Women in BusinessWomen On Top: Celebrating Women in Business
Women On Top: Celebrating Women in Business

Return on sales: increase of 42%. Return on equity: increase of 53%. Return on investment capital: increase of 66%. Total sales: $1.3 trillion. Those are indomitable statistics and they all have one thing in common: they’re derived from businesses owned or operated by women.

womenbusinesswomens rights
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Build System Support
• Ratpack is just a set of libraries, so any Java build system can build your project
• Advanced integration with Gradle is provided through the ratpack-gradle plugin
• Using Gradle is the easiest way to get started
• Gradle plugin provides version-proper dependency resolution, so you don’t
need to update versions as you upgrade your project
45
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Build System Support
• Just a set of libraries…
46
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Build System Support
• Advanced integration with Gradle…
47
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Build System Support
• Ratpack apps can be easily packaged for deployment with Gradle
• Multiple options: fat jar, tarball, zip file
• Gradle plugin applies the application plugin, so distributions and dependencies
can easily be built and shipped with os start scripts
• Fat JAR building is accomplished via the ShadowJar plugin
48

Recommended for you

5 Reasons Why Your Headlines Are On Life Support
5 Reasons Why Your Headlines Are On Life Support5 Reasons Why Your Headlines Are On Life Support
5 Reasons Why Your Headlines Are On Life Support

The perfect piece of content requires the perfect headline to draw your audience in. Keep these 5 elements in mind when crafting your next attention-grabbing headline!

copywritingheadlinessocial media
Kerry Karl | Debunking Myths: GLUTEN
Kerry Karl | Debunking Myths: GLUTENKerry Karl | Debunking Myths: GLUTEN
Kerry Karl | Debunking Myths: GLUTEN

Familiar with cooking for celiac-prone needs, Kerry Karl shines light on a few myths surrounding gluten and what it does and does not do to our bodies.

glutenmythsgluten free
Nuevas tecnologías de
Nuevas tecnologías deNuevas tecnologías de
Nuevas tecnologías de

Las nuevas tecnologías de información y comunicación (NTIC) son herramientas hardware y software utilizadas en procesos de enseñanza y aprendizaje, incluyendo blogs, correo electrónico, páginas web, foros de discusión y mensajería instantánea. Es de gran importancia que los docentes establezcan cambios en sus pedagogías y se adapten a las nuevas tecnologías para encaminar de forma más productiva el bagaje intelectual de los jóvenes en este campo para la sociedad y el mundo.

Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Developer Productivity
• Development time hot reloading is provided via Gradle’s “continuous build”
mode
• Standalone Ratpack Groovy scripts are able to be reloaded when the
development serverConfig option is true
49
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
The Handler Chain
• Denotes the edge of your application
• Requests flow through the chain until reaching a handler than can provide a
response
• Two types of handlers: request flow and terminal
• Request Flow handlers manage the direction the request takes through the
chain
• Terminal handlers process a request and respond to it
50
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
The Handler Chain
• Request flow handler
51
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
The Handler Chain
• Terminal handler
52

Recommended for you

Polyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and PlayPolyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and Play

The document summarizes a presentation by Evgeny Goldin given at Gradle eXchange in London on October 28, 2013 about using Gradle as a build tool for polyglot projects involving Node.js and Play. It discusses using Gradle to automate tasks like starting and stopping Node.js servers, versioning Node.js dependencies, and integrating Gradle with other tools like Jenkins, Chef, MongoDB, Redis, Grunt and Play. The presentation explores how Gradle could serve as a unified build tool for projects using multiple languages and frameworks.

gradleplaynode.js
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...

SpringOne Platform 2016 Speaker: Thomas Gamble; Director, Development, Home Depot Your team is excited about getting started with Spring Boot and Cloud Native, but you're not entirely sure you're ready to have the team continuously delivering to prod using cf push from their local desktops. The freedom of cloud native development can be very empowering for developers, but it shouldn't be something that terrifies the operations and security teams. We'll discuss how you can setup a fast and reliable deployment process, as well as some interesting things to thing about in the future. One of the most well known descriptions of these new paradigms is the Twelve Factor App (12factor.net), which describes elements of cloud native applications. Many of these needs are squarely met through the Spring Framework, others require support from other systems. In this session we will examine each of the twelve factors and present how Spring, and platforms such as Cloud Foundry satisfy them, and in some cases we’ll even suggest that responsibility should shift from Spring to platforms. At the conclusion you will understand what is needed for cloud‐native applications, why and how to deliver on those requirements.

springone platformspringone platform 2016
Federated Queries with HAWQ - SQL on Hadoop and Beyond
Federated Queries with HAWQ - SQL on Hadoop and BeyondFederated Queries with HAWQ - SQL on Hadoop and Beyond
Federated Queries with HAWQ - SQL on Hadoop and Beyond

In the space of Big Data, Pivotal offers two powerful data processing tools namely HAWQ and GemFire. HAWQ is a scalable OLAP SQL-on-Hadoop system, while GemFire is OLTP like, in-memory data grid and event processing system. This presentation will show different integration approaches that allow integration and data exchange between HAWQ and GemFire. The practical experience in applying Spring Boot and Spring XD for some of the use cases will be shared while walking you through the implementation of the different Integration strategies. Amongst other we will show an integration path that leverages SpringXD to ingest GemFire data and store it in HDFS as well as the benefits of using Spring Boot to implement REStful proxy for the HAWQ Web Table integration scenario.

hadoop
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
The Handler Chain
• Chain API provides semantic methods to bind a handler to an HTTP verb and
optionally a path
• get(..), post(..), put(..), patch(..), delete(..) methods will bind accordingly
• Can also bind a handler that will be called for every incoming request with the
all(..) and path(..) chain methods
53
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Live Coding Demo Time
54
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Questions?
55
Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Join the Community
56
http://slack-signup.ratpack.io/

Recommended for you

Reactive Web Applications
Reactive Web ApplicationsReactive Web Applications
Reactive Web Applications

Our previous talk "Intro to Reactive Programming" defined reactive programming and provided details around key initiatives such as Reactive Streams and ReactiveX. In this talk we'll focus on where we are today with building reactive web applications. We'll take a look at the choice of runtimes, how Reactive Streams may be applied to network I/O, and what the programming model may look like. While this is a forward looking talk, we'll spend plenty of time demoing code built with with back-pressure ready libraries available today.

reactive extensionsreactive streamsspringframework
Developing Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaDeveloping Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache Kafka

Developing Real-Time Data Pipelines with Apache Kafka http://kafka.apache.org/ is an introduction for developers about why and how to use Apache Kafka. Apache Kafka is a publish-subscribe messaging system rethought of as a distributed commit log. Kafka is designed to allow a single cluster to serve as the central data backbone. A single Kafka broker can handle hundreds of megabytes of reads and writes per second from thousands of clients. It can be elastically and transparently expanded without downtime. Data streams are partitioned and spread over a cluster of machines to allow data streams larger than the capability of any single machine and to allow clusters of coordinated consumers. Messages are persisted on disk and replicated within the cluster to prevent data loss. Each broker can handle terabytes of messages. For the Spring user, Spring Integration Kafka and Spring XD provide integration with Apache Kafka.

apache kafkaapache mesos
Introduction to Reactive Streams and Reactor 2.5
Introduction to Reactive Streams and Reactor 2.5Introduction to Reactive Streams and Reactor 2.5
Introduction to Reactive Streams and Reactor 2.5

An introduction to Reactive Streams that is challenging the notion of Reactive and where Reactor 2.5 fits in. Given at Mixit 2016.

reactivereactive streamsreactor

More Related Content

What's hot

Full Steam Ahead, R2DBC!
Full Steam Ahead, R2DBC!Full Steam Ahead, R2DBC!
Full Steam Ahead, R2DBC!
VMware Tanzu
 
Ratpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsRatpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web Apps
James Williams
 
What’s new in grails framework 5?
What’s new in grails framework 5?What’s new in grails framework 5?
What’s new in grails framework 5?
Puneet Behl
 
Spring Boot on Amazon Web Services with Spring Cloud AWS
Spring Boot on Amazon Web Services with Spring Cloud AWSSpring Boot on Amazon Web Services with Spring Cloud AWS
Spring Boot on Amazon Web Services with Spring Cloud AWS
VMware Tanzu
 
Enabling Cloud Native Buildpacks for Windows Containers
Enabling Cloud Native Buildpacks for Windows ContainersEnabling Cloud Native Buildpacks for Windows Containers
Enabling Cloud Native Buildpacks for Windows Containers
VMware Tanzu
 
Bootiful Reactive Testing - Mario Gray
Bootiful Reactive Testing - Mario GrayBootiful Reactive Testing - Mario Gray
Bootiful Reactive Testing - Mario Gray
VMware Tanzu
 
Building Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring CloudBuilding Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring Cloud
Matt Stine
 
Building with Gradle
Building with GradleBuilding with Gradle
Building with Gradle
Kaunas Java User Group
 
Maven beyond hello_world
Maven beyond hello_worldMaven beyond hello_world
Maven beyond hello_world
Gabriel Dogaru
 
Introduction to gradle
Introduction to gradleIntroduction to gradle
Introduction to gradle
NexThoughts Technologies
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster
Julien Dubois
 
Spring GraphQL
Spring GraphQLSpring GraphQL
Spring GraphQL
VMware Tanzu
 
Ingress? That’s So 2020! Introducing the Kubernetes Gateway API
Ingress? That’s So 2020! Introducing the Kubernetes Gateway APIIngress? That’s So 2020! Introducing the Kubernetes Gateway API
Ingress? That’s So 2020! Introducing the Kubernetes Gateway API
VMware Tanzu
 
OpenShift for Java EE Developers
OpenShift for Java EE DevelopersOpenShift for Java EE Developers
OpenShift for Java EE Developers
Markus Eisele
 
Drone presentation
Drone presentationDrone presentation
Drone presentation
Lance Smith
 
Graalvm with Groovy and Kotlin - Madrid GUG 2019
Graalvm with Groovy and Kotlin - Madrid GUG 2019Graalvm with Groovy and Kotlin - Madrid GUG 2019
Graalvm with Groovy and Kotlin - Madrid GUG 2019
Alberto De Ávila Hernández
 
Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!
Zachary Klein
 
Dockerize it all
Dockerize it allDockerize it all
Dockerize it all
Puneet Behl
 
Developer Experience Cloud Native - Become Efficient and Achieve Parity
Developer Experience Cloud Native - Become Efficient and Achieve ParityDeveloper Experience Cloud Native - Become Efficient and Achieve Parity
Developer Experience Cloud Native - Become Efficient and Achieve Parity
Michael Hofmann
 
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
kennethaliu
 

What's hot (20)

Full Steam Ahead, R2DBC!
Full Steam Ahead, R2DBC!Full Steam Ahead, R2DBC!
Full Steam Ahead, R2DBC!
 
Ratpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsRatpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web Apps
 
What’s new in grails framework 5?
What’s new in grails framework 5?What’s new in grails framework 5?
What’s new in grails framework 5?
 
Spring Boot on Amazon Web Services with Spring Cloud AWS
Spring Boot on Amazon Web Services with Spring Cloud AWSSpring Boot on Amazon Web Services with Spring Cloud AWS
Spring Boot on Amazon Web Services with Spring Cloud AWS
 
Enabling Cloud Native Buildpacks for Windows Containers
Enabling Cloud Native Buildpacks for Windows ContainersEnabling Cloud Native Buildpacks for Windows Containers
Enabling Cloud Native Buildpacks for Windows Containers
 
Bootiful Reactive Testing - Mario Gray
Bootiful Reactive Testing - Mario GrayBootiful Reactive Testing - Mario Gray
Bootiful Reactive Testing - Mario Gray
 
Building Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring CloudBuilding Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring Cloud
 
Building with Gradle
Building with GradleBuilding with Gradle
Building with Gradle
 
Maven beyond hello_world
Maven beyond hello_worldMaven beyond hello_world
Maven beyond hello_world
 
Introduction to gradle
Introduction to gradleIntroduction to gradle
Introduction to gradle
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster
 
Spring GraphQL
Spring GraphQLSpring GraphQL
Spring GraphQL
 
Ingress? That’s So 2020! Introducing the Kubernetes Gateway API
Ingress? That’s So 2020! Introducing the Kubernetes Gateway APIIngress? That’s So 2020! Introducing the Kubernetes Gateway API
Ingress? That’s So 2020! Introducing the Kubernetes Gateway API
 
OpenShift for Java EE Developers
OpenShift for Java EE DevelopersOpenShift for Java EE Developers
OpenShift for Java EE Developers
 
Drone presentation
Drone presentationDrone presentation
Drone presentation
 
Graalvm with Groovy and Kotlin - Madrid GUG 2019
Graalvm with Groovy and Kotlin - Madrid GUG 2019Graalvm with Groovy and Kotlin - Madrid GUG 2019
Graalvm with Groovy and Kotlin - Madrid GUG 2019
 
Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!
 
Dockerize it all
Dockerize it allDockerize it all
Dockerize it all
 
Developer Experience Cloud Native - Become Efficient and Achieve Parity
Developer Experience Cloud Native - Become Efficient and Achieve ParityDeveloper Experience Cloud Native - Become Efficient and Achieve Parity
Developer Experience Cloud Native - Become Efficient and Achieve Parity
 
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
 

Viewers also liked

leonardo monsalve
leonardo monsalveleonardo monsalve
leonardo monsalve
antonio leal
 
Content marketing that converts - Istanbul
Content marketing that converts - IstanbulContent marketing that converts - Istanbul
Content marketing that converts - Istanbul
Conversionista
 
Collaboration friday
Collaboration fridayCollaboration friday
Collaboration friday
kacrey
 
Historia insp manuel antonio leal chacon
Historia insp   manuel antonio leal chaconHistoria insp   manuel antonio leal chacon
Historia insp manuel antonio leal chacon
antonio leal
 
Wingss power point
Wingss power pointWingss power point
Wingss power point
wingss
 
Collaboration friday
Collaboration fridayCollaboration friday
Collaboration friday
kacrey
 
rhythm workshop
rhythm workshoprhythm workshop
rhythm workshop
Rhythm_Therapy
 
Grafico diario del dax perfomance index para el 11 02-2013
Grafico diario del dax perfomance index para el 11 02-2013Grafico diario del dax perfomance index para el 11 02-2013
Grafico diario del dax perfomance index para el 11 02-2013
Experiencia Trading
 
Impacto de las tics en la educaciòn
Impacto de las tics en la educaciònImpacto de las tics en la educaciòn
Impacto de las tics en la educaciòn
Darìo Miranda S.A
 
Brexit Webinar Series 3
Brexit Webinar Series 3Brexit Webinar Series 3
Brexit Webinar Series 3
U.S. Chamber of Commerce
 
基隆��點Vol.5 - 王珈琳 - 陪伴,一段服務的時間
基隆交點Vol.5 - 王珈琳 - 陪伴,一段服務的時間基隆交點Vol.5 - 王珈琳 - 陪伴,一段服務的時間
基隆交點Vol.5 - 王珈琳 - 陪伴,一段服務的時間
交點
 
Auktuálne otázky zodpovednosti za porušovanie práv duševného vlastníctva online
Auktuálne otázky zodpovednosti za porušovanie práv duševného vlastníctva onlineAuktuálne otázky zodpovednosti za porušovanie práv duševného vlastníctva online
Auktuálne otázky zodpovednosti za porušovanie práv duševného vlastníctva online
Martin Husovec
 
Getting Open Data Used
Getting Open Data UsedGetting Open Data Used
Getting Open Data Used
Andrew Stott
 
1 4 vamos a jugar
1 4 vamos a jugar1 4 vamos a jugar
1 4 vamos a jugar
Araceli Sanz Muñoz
 
Women On Top: Celebrating Women in Business
Women On Top: Celebrating Women in BusinessWomen On Top: Celebrating Women in Business
Women On Top: Celebrating Women in Business
Oneupweb
 
5 Reasons Why Your Headlines Are On Life Support
5 Reasons Why Your Headlines Are On Life Support5 Reasons Why Your Headlines Are On Life Support
5 Reasons Why Your Headlines Are On Life Support
Wishpond
 
Kerry Karl | Debunking Myths: GLUTEN
Kerry Karl | Debunking Myths: GLUTENKerry Karl | Debunking Myths: GLUTEN
Kerry Karl | Debunking Myths: GLUTEN
Kerry Karl
 
Nuevas tecnologías de
Nuevas tecnologías deNuevas tecnologías de
Nuevas tecnologías de
mariaelicena
 
Polyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and PlayPolyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and Play
Evgeny Goldin
 

Viewers also liked (20)

leonardo monsalve
leonardo monsalveleonardo monsalve
leonardo monsalve
 
Content marketing that converts - Istanbul
Content marketing that converts - IstanbulContent marketing that converts - Istanbul
Content marketing that converts - Istanbul
 
Collaboration friday
Collaboration fridayCollaboration friday
Collaboration friday
 
Historia insp manuel antonio leal chacon
Historia insp   manuel antonio leal chaconHistoria insp   manuel antonio leal chacon
Historia insp manuel antonio leal chacon
 
Wingss power point
Wingss power pointWingss power point
Wingss power point
 
Collaboration friday
Collaboration fridayCollaboration friday
Collaboration friday
 
rhythm workshop
rhythm workshoprhythm workshop
rhythm workshop
 
Grafico diario del dax perfomance index para el 11 02-2013
Grafico diario del dax perfomance index para el 11 02-2013Grafico diario del dax perfomance index para el 11 02-2013
Grafico diario del dax perfomance index para el 11 02-2013
 
부용
부용부용
부용
 
Impacto de las tics en la educaciòn
Impacto de las tics en la educaciònImpacto de las tics en la educaciòn
Impacto de las tics en la educaciòn
 
Brexit Webinar Series 3
Brexit Webinar Series 3Brexit Webinar Series 3
Brexit Webinar Series 3
 
基隆交點Vol.5 - 王珈琳 - 陪伴,一段服務的時間
基隆交點Vol.5 - 王珈琳 - 陪伴,一段服務的時間基隆交點Vol.5 - 王珈琳 - 陪伴,一段服務的時間
基隆交點Vol.5 - 王珈琳 - 陪伴,一段服務的時間
 
Auktuálne otázky zodpovednosti za porušovanie práv duševného vlastníctva online
Auktuálne otázky zodpovednosti za porušovanie práv duševného vlastníctva onlineAuktuálne otázky zodpovednosti za porušovanie práv duševného vlastníctva online
Auktuálne otázky zodpovednosti za porušovanie práv duševného vlastníctva online
 
Getting Open Data Used
Getting Open Data UsedGetting Open Data Used
Getting Open Data Used
 
1 4 vamos a jugar
1 4 vamos a jugar1 4 vamos a jugar
1 4 vamos a jugar
 
Women On Top: Celebrating Women in Business
Women On Top: Celebrating Women in BusinessWomen On Top: Celebrating Women in Business
Women On Top: Celebrating Women in Business
 
5 Reasons Why Your Headlines Are On Life Support
5 Reasons Why Your Headlines Are On Life Support5 Reasons Why Your Headlines Are On Life Support
5 Reasons Why Your Headlines Are On Life Support
 
Kerry Karl | Debunking Myths: GLUTEN
Kerry Karl | Debunking Myths: GLUTENKerry Karl | Debunking Myths: GLUTEN
Kerry Karl | Debunking Myths: GLUTEN
 
Nuevas tecnologías de
Nuevas tecnologías deNuevas tecnologías de
Nuevas tecnologías de
 
Polyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and PlayPolyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and Play
 

Similar to Ratpack - SpringOne2GX 2015

12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
VMware Tanzu
 
Federated Queries with HAWQ - SQL on Hadoop and Beyond
Federated Queries with HAWQ - SQL on Hadoop and BeyondFederated Queries with HAWQ - SQL on Hadoop and Beyond
Federated Queries with HAWQ - SQL on Hadoop and Beyond
Christian Tzolov
 
Reactive Web Applications
Reactive Web ApplicationsReactive Web Applications
Reactive Web Applications
Rossen Stoyanchev
 
Developing Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaDeveloping Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache Kafka
Joe Stein
 
Introduction to Reactive Streams and Reactor 2.5
Introduction to Reactive Streams and Reactor 2.5Introduction to Reactive Streams and Reactor 2.5
Introduction to Reactive Streams and Reactor 2.5
Stéphane Maldini
 
Building .NET Microservices
Building .NET MicroservicesBuilding .NET Microservices
Building .NET Microservices
VMware Tanzu
 
Intro To Reactive Programming
Intro To Reactive ProgrammingIntro To Reactive Programming
Intro To Reactive Programming
Rossen Stoyanchev
 
Intro to Reactive Programming
Intro to Reactive ProgrammingIntro to Reactive Programming
Intro to Reactive Programming
Stéphane Maldini
 
Lattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring ApplicationsLattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring Applications
Matt Stine
 
Building Highly Scalable Spring Applications using In-Memory Data Grids
Building Highly Scalable Spring Applications using In-Memory Data GridsBuilding Highly Scalable Spring Applications using In-Memory Data Grids
Building Highly Scalable Spring Applications using In-Memory Data Grids
John Blum
 
Migrating to Angular 5 for Spring Developers
Migrating to Angular 5 for Spring DevelopersMigrating to Angular 5 for Spring Developers
Migrating to Angular 5 for Spring Developers
Gunnar Hillert
 
Migrating to Angular 4 for Spring Developers
Migrating to Angular 4 for Spring Developers Migrating to Angular 4 for Spring Developers
Migrating to Angular 4 for Spring Developers
VMware Tanzu
 
High performance stream processing
High performance stream processingHigh performance stream processing
High performance stream processing
Glenn Renfro
 
Resource Handling in Spring MVC 4.1
Resource Handling in Spring MVC 4.1Resource Handling in Spring MVC 4.1
Resource Handling in Spring MVC 4.1
Rossen Stoyanchev
 
State of Securing Restful APIs s12gx2015
State of Securing Restful APIs s12gx2015State of Securing Restful APIs s12gx2015
State of Securing Restful APIs s12gx2015
robwinch
 
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
cornelia davis
 
What's new in Spring Boot 2.0
What's new in Spring Boot 2.0What's new in Spring Boot 2.0
What's new in Spring Boot 2.0
VMware Tanzu
 
P to V to C: The Value of Bringing “Everything” to Containers
P to V to C: The Value of Bringing “Everything” to ContainersP to V to C: The Value of Bringing “Everything” to Containers
P to V to C: The Value of Bringing “Everything” to Containers
VMware Tanzu
 
Implementing Raft in RabbitMQ
Implementing Raft in RabbitMQImplementing Raft in RabbitMQ
Implementing Raft in RabbitMQ
VMware Tanzu
 
Fast 5 Things You Can Do Now to Get Ready for the Cloud
Fast 5 Things You Can Do Now to Get Ready for the CloudFast 5 Things You Can Do Now to Get Ready for the Cloud
Fast 5 Things You Can Do Now to Get Ready for the Cloud
VMware Tanzu
 

Similar to Ratpack - SpringOne2GX 2015 (20)

12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
 
Federated Queries with HAWQ - SQL on Hadoop and Beyond
Federated Queries with HAWQ - SQL on Hadoop and BeyondFederated Queries with HAWQ - SQL on Hadoop and Beyond
Federated Queries with HAWQ - SQL on Hadoop and Beyond
 
Reactive Web Applications
Reactive Web ApplicationsReactive Web Applications
Reactive Web Applications
 
Developing Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaDeveloping Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache Kafka
 
Introduction to Reactive Streams and Reactor 2.5
Introduction to Reactive Streams and Reactor 2.5Introduction to Reactive Streams and Reactor 2.5
Introduction to Reactive Streams and Reactor 2.5
 
Building .NET Microservices
Building .NET MicroservicesBuilding .NET Microservices
Building .NET Microservices
 
Intro To Reactive Programming
Intro To Reactive ProgrammingIntro To Reactive Programming
Intro To Reactive Programming
 
Intro to Reactive Programming
Intro to Reactive ProgrammingIntro to Reactive Programming
Intro to Reactive Programming
 
Lattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring ApplicationsLattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring Applications
 
Building Highly Scalable Spring Applications using In-Memory Data Grids
Building Highly Scalable Spring Applications using In-Memory Data GridsBuilding Highly Scalable Spring Applications using In-Memory Data Grids
Building Highly Scalable Spring Applications using In-Memory Data Grids
 
Migrating to Angular 5 for Spring Developers
Migrating to Angular 5 for Spring DevelopersMigrating to Angular 5 for Spring Developers
Migrating to Angular 5 for Spring Developers
 
Migrating to Angular 4 for Spring Developers
Migrating to Angular 4 for Spring Developers Migrating to Angular 4 for Spring Developers
Migrating to Angular 4 for Spring Developers
 
High performance stream processing
High performance stream processingHigh performance stream processing
High performance stream processing
 
Resource Handling in Spring MVC 4.1
Resource Handling in Spring MVC 4.1Resource Handling in Spring MVC 4.1
Resource Handling in Spring MVC 4.1
 
State of Securing Restful APIs s12gx2015
State of Securing Restful APIs s12gx2015State of Securing Restful APIs s12gx2015
State of Securing Restful APIs s12gx2015
 
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
 
What's new in Spring Boot 2.0
What's new in Spring Boot 2.0What's new in Spring Boot 2.0
What's new in Spring Boot 2.0
 
P to V to C: The Value of Bringing “Everything” to Containers
P to V to C: The Value of Bringing “Everything” to ContainersP to V to C: The Value of Bringing “Everything” to Containers
P to V to C: The Value of Bringing “Everything” to Containers
 
Implementing Raft in RabbitMQ
Implementing Raft in RabbitMQImplementing Raft in RabbitMQ
Implementing Raft in RabbitMQ
 
Fast 5 Things You Can Do Now to Get Ready for the Cloud
Fast 5 Things You Can Do Now to Get Ready for the CloudFast 5 Things You Can Do Now to Get Ready for the Cloud
Fast 5 Things You Can Do Now to Get Ready for the Cloud
 

More from Daniel Woods

Continuous Delivery with Spinnaker and OpenStack
Continuous Delivery with Spinnaker and OpenStackContinuous Delivery with Spinnaker and OpenStack
Continuous Delivery with Spinnaker and OpenStack
Daniel Woods
 
Microservices: The Right Way
Microservices: The Right WayMicroservices: The Right Way
Microservices: The Right Way
Daniel Woods
 
Facilitating Continuous Delivery at Scale
Facilitating Continuous Delivery at ScaleFacilitating Continuous Delivery at Scale
Facilitating Continuous Delivery at Scale
Daniel Woods
 
Continuous Delivery with NetflixOSS
Continuous Delivery with NetflixOSSContinuous Delivery with NetflixOSS
Continuous Delivery with NetflixOSS
Daniel Woods
 
Server-Side JavaScript with Nashorn
Server-Side JavaScript with NashornServer-Side JavaScript with Nashorn
Server-Side JavaScript with Nashorn
Daniel Woods
 
Groovy for System Administrators
Groovy for System AdministratorsGroovy for System Administrators
Groovy for System Administrators
Daniel Woods
 
Message Driven Architecture in Grails
Message Driven Architecture in GrailsMessage Driven Architecture in Grails
Message Driven Architecture in Grails
Daniel Woods
 
Building Web Apps in Ratpack
Building Web Apps in RatpackBuilding Web Apps in Ratpack
Building Web Apps in Ratpack
Daniel Woods
 
Gainesville Web Developer Group, Sept 2012
Gainesville Web Developer Group, Sept 2012Gainesville Web Developer Group, Sept 2012
Gainesville Web Developer Group, Sept 2012
Daniel Woods
 

More from Daniel Woods (9)

Continuous Delivery with Spinnaker and OpenStack
Continuous Delivery with Spinnaker and OpenStackContinuous Delivery with Spinnaker and OpenStack
Continuous Delivery with Spinnaker and OpenStack
 
Microservices: The Right Way
Microservices: The Right WayMicroservices: The Right Way
Microservices: The Right Way
 
Facilitating Continuous Delivery at Scale
Facilitating Continuous Delivery at ScaleFacilitating Continuous Delivery at Scale
Facilitating Continuous Delivery at Scale
 
Continuous Delivery with NetflixOSS
Continuous Delivery with NetflixOSSContinuous Delivery with NetflixOSS
Continuous Delivery with NetflixOSS
 
Server-Side JavaScript with Nashorn
Server-Side JavaScript with NashornServer-Side JavaScript with Nashorn
Server-Side JavaScript with Nashorn
 
Groovy for System Administrators
Groovy for System AdministratorsGroovy for System Administrators
Groovy for System Administrators
 
Message Driven Architecture in Grails
Message Driven Architecture in GrailsMessage Driven Architecture in Grails
Message Driven Architecture in Grails
 
Building Web Apps in Ratpack
Building Web Apps in RatpackBuilding Web Apps in Ratpack
Building Web Apps in Ratpack
 
Gainesville Web Developer Group, Sept 2012
Gainesville Web Developer Group, Sept 2012Gainesville Web Developer Group, Sept 2012
Gainesville Web Developer Group, Sept 2012
 

Recently uploaded

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
 
Measuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at TwitterMeasuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at Twitter
ScyllaDB
 
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
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
Kief Morris
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
Liveplex
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc
 
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
 
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
 
Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
rajancomputerfbd
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
Larry Smarr
 
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
 
7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf
Enterprise Wired
 
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
 
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Bert Blevins
 
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
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
jackson110191
 
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
 
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
 
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
Toru Tamaki
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
Matthew Sinclair
 

Recently uploaded (20)

20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
 
Measuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at TwitterMeasuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at Twitter
 
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
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
 
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
 
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
 
Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
 
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
 
7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
 
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
 
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
 
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
 
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
 

Ratpack - SpringOne2GX 2015

  • 1. SPRINGONE2GX WASHINGTON, DC Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attributio n-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Ratpack Web Framework By Dan Woods @danveloper
  • 2. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ About Me • Member of the Ratpack Web core team • Author of “Learning Ratpack”, O’Reilly • http://shop.oreilly.com/product/0636920037545.do • Senior Engineer, The Groundwork • https://github.com/danveloper 2 1st Four Chapters Available Today!
  • 3. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Ratpack Team on Twitter 3 Follow this crew! • @ldaley • @varzof • @rus_hart • @beckje01 • @marcinerdmann • @zedar185 • @Lspacewalker • @johnrengelman
  • 4. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Brief History of Ratpack • Ratpack started out as a Groovy DSL implementation example (2010) • Evolved steadily into a JVM Sinatra clone (2010-2011) • Dumped Sinatra legacy and started focusing on NIO/performance (2012) • Under steady development in its modern form for 3 full years! 4 GroovyDSLImplementation JVMSinatraClone Drop“Sinatra”,NIO/Perf DropsServletsforVert.x CorerewritteninJava Movestoorg.ratpackpackages ExecutionModelIntroduced Bootstraping,Config Registryisintroduced MovefromVert.xtoNetty Stable,ProductionReady–1.0
  • 5. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Overview of Ratpack • Ratpack is now at version 1.0.0 • Production-ready, API-stable • Can safely adopt without fear of breaking API changes • Great option for building microservices • Can also be integrated into legacy apps through its robust test fixtures 5
  • 6. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Overview of Ratpack • A high performance web framework • Built on a non-blocking network stack • Provides low-level constructs for working with async APIs • Core is written in Java (requires Java 8) • Integrated support for building Groovy-based applications • Emphasis on developer productivity • As few opinions as possible • Fast, self-contained, light-weight deployables 6
  • 7. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Simplest Hello World Example • Just a few lines of Groovy code required! 7
  • 8. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Simplest Hello World Example • Totally Tweetable! https://twitter.com/danveloper/status/608298173208100864 8
  • 9. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Java Hello World Example • Still, not very much needed at all… 9
  • 10. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Overview of Ratpack • Support for HTML templates with Groovy and Handlebars 10
  • 11. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Overview of Ratpack • Great for microservices! • First-class support for language agnostic transport 11
  • 12. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Overview of Ratpack • Non-blocking HTTP client 12
  • 13. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Overview of Ratpack • Fault tolerance for building distributed systems 13
  • 14. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Overview of Ratpack • Support for metric reporting with Dropwizard Metrics 14
  • 15. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Overview of Ratpack • Comprehensive configuration model 15
  • 16. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Overview of Ratpack • Support for persistent sessions 16
  • 17. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Overview of Ratpack • Robust security with Pac4j 17
  • 18. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Overview of Ratpack • Out of the box SSL support 18
  • 19. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Performance • Like most frameworks, Ratpack is CPU-bound (the more CPUs, the better) • Unlike most frameworks, Ratpack efficiently processes on each CPU 19 https://gist.github.com/danveloper/db888be3519966976368
  • 20. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Execution Model • The execution model in Ratpack is borne from the fact that the JVM has no inherent support for Continuations • Asynchronous programming is difficult • Async processing introduces non-determinism • Web applications require deterministic processing 20
  • 21. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Execution Model • Ratpack wants to make Async processing and programming a reliable and usable model for the JVM • By fitting into the execution model, applications garner confidence from a deterministic processing flow 21
  • 22. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ TPR/TPC Processing Model • How most JVM web frameworks work 22 Internet Web App new Thread().start() Blocking Processing Process and wait
  • 23. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ TPR/TPC Processing Model • In the thread-per-request (or thread-per-connection) model, you are limited by the amount of threads that you can create • Bringing the data from a request-taking thread and placing it into a processing thread incurs a context switch • The processing thread is where all your work is done, and is established until you respond • This is not performant at all, but it is an easy model to program in, and that’s why people use it 23
  • 24. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Ratpack Processing Model • How Ratpack works (4 CPU example) 24 Internet Event Loop Event Loop Event Loop Event Loop Handler Waiting for something? (db call, call to remote) Return thread to request-taking pool while we wait Respond One thread per CPU core
  • 25. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Ratpack Processing Model • Only establishes a single thread per CPU core • Processing doesn’t block the thread (if it needs to, then we can schedule it to the blocking thread pool) • While we wait for async responses to be fulfilled, the thread is able to process other requests • When we get the async response, processing continues on the same thread • No context switching in computation handlers, async processing responds when its work is done 25
  • 26. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Problems with Async Programming • Callbacks are obnoxious to work with • No good way to detect when waiting for async responses • Represents a temporal disconnect from the processing flow • Most async web frameworks start a timer when a request comes in, and if you don’t respond by the time that’s over, then it assumes you’re not going to 26
  • 27. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Problems with Async Programming 27 Callback HELL
  • 28. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Problems with Async Programming 28 With Ratpack Promises, you get guaranteed execution order without the need scoped callbacks. <1> - definitely happens 1st <2> - definitely happens 2nd <3> - definitely happens 3rd <4> - definitely happens 4th <5> - definitely happens 5th
  • 29. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Problems with Async Programming 29 In other async web frameworks: The clock is ticking for you to get that response out before the framework shuts you down
  • 30. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Problems with Async Programming 30 Execution |__stream |__marker |__flatMap(..) |__findByUsername |__stream |__marker |__flatMap(..) |__loadProfile |__stream |__marker |__flatMap(..) |__loadFriends |__stream |__marker |__flatMap(..) |__loadFriendPhotos |__stream |__marker |__render(..) |__then(..)
  • 31. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Execution Model • The overall execution is a parallel to the construct of a continuation • Each of the calls to a Promise represent a frame in the execution • Each of the Promise types represents a new processing stream in the execution • While async processing is taking place (ie. Promise is not fulfilled), the execution is suspended • When the execution is suspended, the processing thread is given back to the event loop to continue processing requests • When an async call returns, the execution is resumed 31
  • 32. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Execution Model • Most importantly, we know that when we hit the marker on a processing stream that the stream is done computing • The processing streams are supervised by Ratpack to know that a request is still processing • If your code doesn’t respond to a request, we don’t need to wait until the request times out to inform the client • If all the streams are done computing but no response has been sent, we are aware of that and can send an appropriate error back (no response sent) to the client 32
  • 33. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Execution Model • Ratpack’s execution model gives you much higher confidence in working with async programming • The Promise type makes async programming easier • Deterministic async processing gives added benefits for concurrency • You have better confidence when programming to async APIs with Ratpack • Fun fact: any API can be made asynchronous in Ratpack 33
  • 34. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Blocking Done Right • To make use of most 3rd party Java libraries, blocking will need to take place at some point • A prime example here is using JDBC • Since you can’t block on the request-taking thread, you will need to do blocking on a separate thread • Any non-trivial application will need to do blocking at some point… • Ratpack provides easy fixtures for Promise types to be scheduled for computation or blocking 34
  • 35. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Blocking Done Right 35
  • 36. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Dependency Injection • Ratpack is not tied to any particular dependency injection framework • DI is an abstract concept in Ratpack, components are registered via a Registry • Ratpack apps can be built entirely without any DI • Framework modularity is accomplished via Guice • 1st class support for Guice and Spring Boot 36
  • 37. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Registry • There are multiple registries in Ratpack • Provide components at different layers of the framework 37 Server Registry User Registry Context Registry Request Registry
  • 38. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Registry • Components can be bound to the user registry at start time 38
  • 39. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Registry • Registries can be built and cascaded at request time, and according to request attributes 39
  • 40. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Registry • Registries can be backed by Guice… 40
  • 41. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Registry • … or by Spring Boot… 41
  • 42. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Registry • … or both … 42
  • 43. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Dependency Injection • In Groovy, dependency injection can be accomplished by simply specifying the type as a closure argument 43
  • 44. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Dependency Injection • Taking a completely unopinionated approach to dependency injection allows implementations to be flexible • Can support nearly every component-providing backend • Gives you the ability to leverage the best parts of all available ecosystems • New Ratpack apps can readily fit into legacy infrastructures that do have opinions about this stuff 44
  • 45. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Build System Support • Ratpack is just a set of libraries, so any Java build system can build your project • Advanced integration with Gradle is provided through the ratpack-gradle plugin • Using Gradle is the easiest way to get started • Gradle plugin provides version-proper dependency resolution, so you don’t need to update versions as you upgrade your project 45
  • 46. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Build System Support • Just a set of libraries… 46
  • 47. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Build System Support • Advanced integration with Gradle… 47
  • 48. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Build System Support • Ratpack apps can be easily packaged for deployment with Gradle • Multiple options: fat jar, tarball, zip file • Gradle plugin applies the application plugin, so distributions and dependencies can easily be built and shipped with os start scripts • Fat JAR building is accomplished via the ShadowJar plugin 48
  • 49. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Developer Productivity • Development time hot reloading is provided via Gradle’s “continuous build” mode • Standalone Ratpack Groovy scripts are able to be reloaded when the development serverConfig option is true 49
  • 50. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ The Handler Chain • Denotes the edge of your application • Requests flow through the chain until reaching a handler than can provide a response • Two types of handlers: request flow and terminal • Request Flow handlers manage the direction the request takes through the chain • Terminal handlers process a request and respond to it 50
  • 51. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ The Handler Chain • Request flow handler 51
  • 52. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ The Handler Chain • Terminal handler 52
  • 53. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ The Handler Chain • Chain API provides semantic methods to bind a handler to an HTTP verb and optionally a path • get(..), post(..), put(..), patch(..), delete(..) methods will bind accordingly • Can also bind a handler that will be called for every incoming request with the all(..) and path(..) chain methods 53
  • 54. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Live Coding Demo Time 54
  • 55. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Questions? 55
  • 56. Unless otherwise indicated, these slides are © 2013 -2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Join the Community 56 http://slack-signup.ratpack.io/

Editor's Notes

  1. We provide a comprehensive integration with NetflixOSS’s Hystrix project Hystrix is a circuit breaker library where you can safely buil Hystrix helps you better build fault tolerant systems We even provide the ability to stream
  2. Non-blocking networking and asynchronous programming go hand-in-hand
  3. Demo: fatjar
  4. Demo: app.groovy
  5. Demo: app.groovy
  6. Demo: app.groovy
  7. Demo: app.groovy
  8. Demo: app.groovy
  9. Demo: app.groovy
  10. Demo: app.groovy
  11. Demo: app.groovy