have you seen lately?chariotsolutions.com/.../uploads/...haveyouseenspringlately_phillye… · a...

Post on 29-Jun-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / / C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

Have You Seen Lately?

David Turanski Senior Software Engineer

Pivotal

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

David Turanski

I A M…

§ Spring XD § Spring Integration § Spring Data GemFire

@dturanski !dturanski@gopivotal.com !https://github.com/dturanski!http://spring.io

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

A Brief History of Spring

§ SpringSource created by the founders of the Spring Framework • Originally Interface 21, renamed SpringSource in 2008 • Employed most Spring developers and provided training, consulting,

and commercial support. • Acquisitions included G2One and Cloud Foundry

§ Acquired by VMWARE 2009 § In April 2013 VMware, and its parent company EMC Corporation,

formally created a joint venture with GE called . • All of VMware's application-oriented products, including Spring were

transferred to Pivotal.

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

Some things stay the same… “I believe that Spring is unique, for several reasons: !

It addresses important areas that many other popular frameworks don‘t

Spring is both comprehensive and modular. Spring is designed from the ground up to help you write code

that's easy to test. Spring is an increasingly important integration technology” !! - Rod Johnson, TheServerSide.com, 2005

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

Why do Java Developers choose Spring today?GRAILS

FULL-STACK, WEB

XD

STREAM, TAPS, JOBS

BOOT

BOOTABLE, MINIMAL, OPS-READY

BIG, FAST,

FLEXIBLE

DATA

WEB, INTEGRATIO

N, BATCH

WEB

CONTROLLERS, REST,WEBSOCKET

INTEGRATION

CHANNELS, ADAPTERS,

FILTERS, TRANSFORMERS

BATCH

JOBS, STEPS,READERS, WRITERS

BIG DATA

INGESTION, EXPORT,ORCHESTRATION,

HADOOP

DATA

NON-RELATIONALRELATIONAL

CORE

GROOVYFRAMEWORK SECURITY REACTOR

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

T H E S P R I N G I O P L AT F O R M ( S O M E “ M A R C H I T E C T U R E ” )

DEPLOY TO CLOUD OR ON

PREMISE

BIG, FAST,

FLEXIBLE DATA WEB,

INTEGRATION, BATCH

COREMODEL

GEMFIRE

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

S P R I N G . I O

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

S P R I N G . I O

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

S P R I N G . I O

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

W E ’ R E O N G I T H U B

SPRING IO EXECUTION:

Spring Boot

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

S P R I N G B O O T I S A B O U T P R O D U C T I V I T Y

BOOT

AUTOCONFIGURE

STARTERS

CLI

ACTUATOR

TOOLS

SAMPLES

BOOTS T R A P Y O U R P R O D U C T I V I T Y

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

i

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

D E M O : A G R O O V Y B O O T A P P

SPRING IO CORE:

Spring Framework 4.0

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

Introducing Spring Framework 4.0

§ Ready for new application architectures • embedded web servers and non-traditional datastores

• lightweight messaging and WebSocket-style architectures

• custom asynchronous processing with convenient APIs

§ A new baseline • Java SE 6+ (minimum API level: JDK 6 update 18, ~ early 2010)

• Java EE 6+ (Servlet 3.0 focused, Servlet 2.5 compatible at runtime)

• all deprecated packages removed

• many deprecated methods removed as well

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

Spring Framework 4 and Java 8

§ First-class support for Java 8 language and API features • lambda expressions

• method references

• JSR-310 Date and Time

• repeatable annotations

• parameter name discovery

§ Full runtime compatibility with JDK 8 • for Spring apps built against JDK 6/7 but running against JDK 8

• when moving existing apps to a JDK 8 based deployment platform

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

Lambda Conventions in Spring APIs

§ JdbcTemplate • PreparedStatementSetter: void setValues(PreparedStatement ps) throws SQLException

• RowMapper: Object mapRow(ResultSet rs, int rowNum) throws SQLException

§ JmsTemplate • MessageCreator: Message createMessage(Session session) throws JMSException

§ TransactionTemplate + TransactionCallback, etc

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

Lambda with Spring’s JdbcTemplateJdbcTemplate jt = new JdbcTemplate(dataSource);!jt.query("SELECT name, age FROM person WHERE dep = ?",! ! ps -> ps.setString(1, "Sales"),! ! (rs, rowNum) -> new Person(rs.getString(1), rs.getInt(2)));!!jt.query("SELECT name, age FROM person WHERE dep = ?",! ! ps -> {! ! ! ps.setString(1, "Sales");! ! },! ! (rs, rowNum) -> {!! ! return new Person(rs.getString(1), rs.getInt(2));!! });

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

Spring Framework 4 and Groovyimport org.mypackage.domain.Person; beans { xmlns util: 'http://www.springframework.org/schema/util' person1(Person) { name = "homer" age = 45 props = [overweight:true, height:"1.8m"] children = ["bart", "lisa"] } util.list(id: 'foo') { value 'one' value 'two' } }

§ http://spring.io/blog/2014/03/03/groovy-bean-configuration-in-spring-framework-4

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

Messaging, WebSocket, Async Processing

§ General org.springframework.messaging module • core message and channel abstractions

• endpoints using generic messaging patterns

§ WebSocket endpoint model along the lines of Spring MVC • JSR-356 and native server support, with SockJS fallback option

• STOMP for higher-level messaging on top of raw WebSocket

• https://spring.io/guides/gs/messaging-stomp-websocket/

§ AsyncRestTemplate • based on ListenableFuture return values

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

WebSocketHandler with SockJS Fallback

@Configuration @EnableWebSocket public class MyWebSocketConfig implements WebSocketConfigurer { ! public void registerWebSocketHandlers( WebSocketHandlerRegistry registry){ WebSocketHandler echoHandler = new EchoHandler(); registry.addHandler(echoHandler, "/echo").withSockJS(); } } !public interface WebSocketHandler { ! void handleMessage(WebSocketSession s, WebSocketMessage<?> m); }

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

Higher-Level Messaging: STOMP on WebSocket@Controller public class MyStompController { ! @SubscribeEvent("/positions") public List<PortfolioPosition> getPortfolios(Principal user) { ... } ! @MessageMapping("/trade") public void executeTrade(Trade trade, Principal user) { ... } }

SPRING IO EXECUTION:

Spring XD

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

What is a Big Data application?§ Not just writing a few MR or Hive/Pig jobs. § Developing a comprehensive solution can be challenging § Key parts of the lifecycle involve • Ingestion • Stream Processing • Batch Workflow Orchestration • Export

§ Also requires • Enterprise Integration • Horizontally scalable deployments

§ How do you write one of these apps? • Status quo is to combine different projects together – not ideal

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

Introducing Spring XD§ Goal: One stop shop for writing Big Data applications § XD = eXtreme Data § Provides a scalable distributed runtime for • Stream processing • Batch processing • Communication between the two processing domains

§ “Simple things should be simple, complex things should be possible” • http | transform | hdfs • hdfsjdbc --resources=/data/*.csv • --names=forename,surname,address —tableName=people !

§ Open Source § Builds on mature Spring libraries • Spring Integration, Batch (JSR-352), Data

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

Spring XD Features!§ Unified Platform • Streams and Batch

§ Architecture • Scalable • Distributed • Pluggable middleware • Fault Tolerant (M6)

§ Developer Productivity • Interactive Shell • DSL for stream and jobs definitions

• Many pre-built components – 0 code • Sinks, sources, jobs, analytics

• UI for Batch Workflow Management

§ Modular Extensibility • Classpath isolation of components • Spring component model • Boot based contribution model (M7)

§ Programming Model • POJO, JSON, Tuple • Test friendly

§ Portable Runtime • Standalone • Amazon EC2 • Hadoop YARN (M6) • CloudFoundy (WIP)

§ Hadoop Distribution Agnostic

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

Spring XD – 10,000 foot view

TA P S

C O M P U T E

H D F S E X P O R T

S P R I N G X D R U N T I M E

ING

ES

T

J O B S

E X P O R T

F I L E S S E N S O R S M O B I L E S O C I A L

R D B M S

N O S Q L

R , S A S

S P R I N G X D S H E L L

S T R E A M S

R E D I S

G E M F I R E

P R E D I C T I V E M O D E L I N G

M R , H I V E , P I G ,

C A S C A D I N G , S Q L

WO

RK

FL

OW

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

D E M O : A N A LY T I C S W I T H X D

U N L E S S O T H E R W I S E I N D I C AT E D , T H E S E S L I D E S A R E © 2 0 1 3 - 2 0 1 4  P I V O TA L S O F T W A R E , I N C . A N D L I C E N S E D  U N D E R A C R E AT I V E C O M M O N S AT T R I B U T I O N - N O N C O M M E R C I A L L I C E N S E : H T T P : / /C R E AT I V E C O M M O N S . O R G / L I C E N S E S / B Y- N C / 3 . 0 /

@springcentral http://spring.io

Questions ?

top related