SlideShare a Scribd company logo
2018/2/6
김민석
Senior Platform Architect
Pivotal Cloud Foundry
mkim@pivotal.io

 1
Core Spring & Reactive
SpringOnePlatform 2017 recap
for Samsung SDS
2
And more…
Everything
you need to
transform
 Process &
Culture
Build for
change
Tools
 Continuously
Improve
Platform
 Any App, Every Cloud,
One Platform
PCF 2.0
Tracker / Spring / Concourse
Pivotal Labs
Data / AI
Apps
Culture, tools, and platform
4
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
About me
5
•  김민석	(mkim@pivotal.io)	
•  Platform	Architect	@	Pivotal	
•  Big-Data	Monitoring	System	Developer	
•  Software	Architect	
•  Software	Quality	Engineer	
•  Developer	
https://www.facebook.com/groups/CloudfoundryKorea	
	
https://www.meetup.com/Seoul-Cloud-Foundry-Meetup
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
6
여기서 다루는 세션들
스프링 프로젝트를 이용한 프로그래밍
Reactive	Spring	(Tue/05)	
Reactive	Applications	on	Apache	Tomcat	and	Servlet	3.1	
Containers(Tue	/05)	
Spring	Integration	5.0:	What's	New?(Tue/	05)	
Not	Only	Reactive	-	Data	Access	with	Spring	Data(Tue	/05)	
Reactive	Data	Access	with	Spring	Data	(Tue	/05)	
Under	the	Hood	of	Reactive	Data	Access	(Tue/06)	
Simplifying	Apache	Geode	with	Spring	Sata(Wed/06)	
JDBC,	What	is	it	Good	For?	(Thu/07)	
Spring	Security	5:	The	Reactive	Parts(Tue	/05)	
Bootiful	Development	with	Spring	Boot	and	React	(Wed/	06)	
Next	Generation	OAuth	Support	with	Spring	Security	5.0	(Wed/06)	
Lessons	Learned	from	Upgrading	Thymeleaf	(Wed	/06)	
Why	Spring	<3	Kotlin(	Tue/07)	
What's	New	in	Spring	AMQP	2.0(	Wed/06)	
JUnit	5	—	New	Opportunities	for	Testing	on	the	JVM(Thu	/07)	
Spring Core
New	in	Spring	Framework	5.0:	Functional	Web	Framework(Tue/05)	
Spring	Framework	5.0	on	JDK	8	&	9	(Wed	/06)	
Reactor	in	Action	(Web	/06)	
Spring	Framework	5:	Hidden	Gems(Wed/06)	
It's	a	Kind	of	Magic:	Under	the	Covers	of	Spring	Boot	(Web	/06)	
55	New	Features	in	JDK	9	(Thu/	07)	
Servlet	or	Reactive	Stacks:	The	Choice	is	Yours.	Oh	No...	The	Choice	is	
Mine!(Tue/	05)	
Design & Architecting
Designing,	Implementing,	and	Using	Reactive	APIs(Web/06)	
Cloud-Native	Batch	Processing	with	Spring	Batch	4	(Tue	/05)	
Bringing	New	Technology	to	Legacy	Land	(Tue	/05)	
State	or	Events?	Which	Shall	I	Keep?	(Tue	/05)	
Kafka	Streams	-	From	the	Ground	Up	to	the	Cloud	(Tue	/05)	
Cloud	Event	Driven	Architectures	with	Spring	Cloud	Stream	2.0(Wed/06)	
Spring	Driven	Industrial	IoT	Utilizing	Edge,	Fog,	and	Cloud	
Computing(	Wed/	06)
7
1. Spring Framework Core 살펴보기
2. Reactive Programming 개념이해하기
3. Demo
4. 어떻게 적용할 것인가?
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Reactive
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
10
Spring Framework 5.0 Overview
•  Back-Pressure(Reactive 데이터 흐름
제어)
•  Reactive Spring Data
•  Function Reactive Programming
•  Project Reactor
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
•  6개월 단위 Major release
•  Agile development
•  JDK9: 2017/09
•  JDK10: 2018/03
•  JDK11: 2018/09
•  LTS support release
•  JDK8 (LTS)
•  JDK11(LTS)
•  3 years
•  No Overlap of support
JDK Release and Support model
Java 8 Adoption(Oct. 2017, Baeldung)
Java	8	
Java	7	
Java	6	 Java	9
12
1. Spring Framework Core 살펴보기
2. Reactive Programming 개념이해하기
3. Demo
4. 어떻게 적용할 것인가?
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Servlet and Reactive
Servlet	3.1	(2013)	
Reactor	(2013)	
Servlet1.0	(1997)	 Servlet	3.0	(2009)
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
14
Servlet and Reactive
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
15
Servlet and Reactive
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
•  대안적 프로그래밍 방식
•  쉽고, 간결하고 에러가 줄어드는 비동기 이벤트 기반 프로그래밍
•  고성능, concurrency 코딩
•  Reactive Stream 명세 (http://www.reactive-streams.org/ )
•  WebFlux는 다양한 non-blocking API를 지원
Spring WebFlux를 이용한 Reactive Programming
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
17
멀티쓰레드 프로그래밍
•  Keeping an unused ExecutorService alive
•  Wrong thread-pool capacity while using fixed length thread-pool
•  Unexpectedly-long blocking with Future‘s get() method
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring WebFlux – 기존 RestController 방식
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring WebFlux – RouterFunction 방식 (1/2)
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring WebFlux – RouterFunction 방식 (2/2)
https://spring.io/blog/2016/09/22/new-in-spring-5-functional-web-framework	
https://github.com/myminseok/webflux-functional-mkim
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring WebFlux를 이용한 Reactive Programming
https://spring.io/blog/2016/04/19/understanding-reactive-types
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Reactive Spring Data – being Reactive
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
<T> List<T> findAll(Class<T>
entityClass, String collectionName);
<T> T findOne(Query query,
Class<T> entityClass);
…
<T> Flux<T> findAll(Class<T>
entityClass, String collectionName);
<T> Mono<T> findOne(Query query,
Class<T> entityClass);
…
Reactive Spring Data - ReactiveMongoOperations
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Reactive Spring Data - MongoDB
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Reactive Spring Integration
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Reactive Spring Integration
https://github.com/artembilan/spring-integration-s1p2017
27
1. Spring Framework Core 살펴보기
2. Reactive Programming 개념이해하기
3. Demo
4. 어떻게 적용할 것인가?
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
•  샘플: https://github.com/rstoyanchev/demo-reactive-spring
•  Spring Webflux
•  WebClient
•  Reactive Spring Data (@Tailable)
•  Streaming Data from Reactive repository to Reactive Client
28
Spring Webflux & Spring Data Demo
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
샘플: https://github.com/myminseok/s1p-reactor-in-action
Reactor 테스트
•  StepVerifier
Debugging
•  Async pipeline을 Debug, tracing하려고 할 때 .checkpoint()를 활용.
Spring WebFlux를 이용한 Reactive Programming
30
1. Spring Framework Core 살펴보기
2. Reactive Programming 개념이해하기
3. Demo
4. 어떻게 적용할 것인가?
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
•  Networking
•  Latency
•  Failures
•  Back-pressure(Data Flow Control)
•  Highly Concurrent Operations
•  Scalability
효과적인 Reactive Usecase
https://github.com/cloudfoundry/cf-java-client
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
32
Servlet or Reactive?
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
If it isn't broken, don’t fix it.
Imperative is simple until it is not
33
Servlet or Reactive?
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
•  Spring Framework 5.x
•  JDK 8 codebase (LTS), JDK9+ compatible
•  Support Java EE Level 7( Servlet 3.1, JPA 2.1)
•  Prepare to Java EE Level 8 (Servlet 4.x, JPA 2.x)
•  Dropped support (Portlet, Velocity, JDO…)
•  Spring Framework 5.x +
•  Upgrade train(JDK 9->10 ->11(LTS))
•  Spring framework 5.x building target to JDK11
•  Spring Framework 4.3
•  JDK6 codebase, JDK7,8,9 compatible
•  Backport from Spring framework 5 (@UsesJava8 …)
34
Spring Framework & JDK 업그레이드 계획하기
Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
1.  JDK Baseline Update
2.  Web Servers
3.  Libraries
•  Jackson 2.9+ Hibernate 5.0+ EhCache 2.10+
4.  Removed Packages, Classes and Methods
•  Hibernate 5 (orm.hibernate3/hibernate4 dropped)
5.  Dropped Support
•  Portlet, Velocity, JasperReports, XMLBeans, JDO, Guava (replaced by the
Caffeine support
•  Spring Framework 4.3.x (supported until 2020)
6.  Common Logging
•  spring-jcl
35
Spring Framework 5.0 적용하기
https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-5.x
36
Q&A

More Related Content

What's hot (20)

PDF
Java Development Company | Xicom
RyanForeman5
 
PDF
Documenting RESTful APIs with Spring REST Docs
VMware Tanzu
 
PDF
Lattice: A Cloud-Native Platform for Your Spring Applications
Matt Stine
 
PPTX
All you need to know to deploy applications on Kubernetes
Oleksandr Slynko
 
PDF
Spring Cloud in a Nutshell
Tsuyoshi Miyake
 
PDF
To Microservices and Beyond
Matt Stine
 
PDF
All You Need to Know to Deploy Applications on Kubernetes
VMware Tanzu
 
PDF
MEAN Vs MERN Stack | Detailed Comparison Between MEAN & MERN Stack
Mariya James
 
PDF
UKOUG - Implementing Enterprise API Management in the Oracle Cloud
luisw19
 
PDF
Data Migration at Scale with RabbitMQ and Spring Integration
Alvaro Videla
 
RTF
softwareengineer_abulaila_2017_01
Tariq Abulaila
 
PDF
EclipseCon Europe 2015 - liferay modularity patterns using OSGi -Rafik Harabi
Rafik HARABI
 
PPTX
Spring Integration 5.0: What's new?
VMware Tanzu
 
PPTX
OpenAPI v.Next - Events, Alternative Schemas & the Road Ahead
Ted Epstein
 
PPTX
Continuous integration and delivery with Xamarin and VSTS
Gill Cleeren
 
PPTX
Real world apps with Xamarin and MVVM
Gill Cleeren
 
PDF
Node summit workshop
Shubhra Kar
 
PDF
GraphQL for Native Apps
Emanuele Di Saverio
 
PPTX
harePoint Framework Webinar Series: Consume Graph APIs in SharePoint Framework
Jenkins NS
 
PDF
Not Just Initializing
VMware Tanzu
 
Java Development Company | Xicom
RyanForeman5
 
Documenting RESTful APIs with Spring REST Docs
VMware Tanzu
 
Lattice: A Cloud-Native Platform for Your Spring Applications
Matt Stine
 
All you need to know to deploy applications on Kubernetes
Oleksandr Slynko
 
Spring Cloud in a Nutshell
Tsuyoshi Miyake
 
To Microservices and Beyond
Matt Stine
 
All You Need to Know to Deploy Applications on Kubernetes
VMware Tanzu
 
MEAN Vs MERN Stack | Detailed Comparison Between MEAN & MERN Stack
Mariya James
 
UKOUG - Implementing Enterprise API Management in the Oracle Cloud
luisw19
 
Data Migration at Scale with RabbitMQ and Spring Integration
Alvaro Videla
 
softwareengineer_abulaila_2017_01
Tariq Abulaila
 
EclipseCon Europe 2015 - liferay modularity patterns using OSGi -Rafik Harabi
Rafik HARABI
 
Spring Integration 5.0: What's new?
VMware Tanzu
 
OpenAPI v.Next - Events, Alternative Schemas & the Road Ahead
Ted Epstein
 
Continuous integration and delivery with Xamarin and VSTS
Gill Cleeren
 
Real world apps with Xamarin and MVVM
Gill Cleeren
 
Node summit workshop
Shubhra Kar
 
GraphQL for Native Apps
Emanuele Di Saverio
 
harePoint Framework Webinar Series: Consume Graph APIs in SharePoint Framework
Jenkins NS
 
Not Just Initializing
VMware Tanzu
 

Similar to SpringOnePlatform2017 recap (20)

PPTX
Core Spring + Reactive 김민석
VMware Tanzu Korea
 
PPTX
Lagom framework
명주 김
 
PPTX
RESTful API 제대로 만들기
Juwon Kim
 
PPTX
Serverless Spring 오충현
VMware Tanzu Korea
 
PPTX
비동기 회고 발표자료
Benjamin Kim
 
PDF
테크톡1 by roach: Spring Interceptor
ssuser13b412
 
PPTX
Micro service architecture
uEngine Solutions
 
PDF
SpringCamp 2016 - Apache Geode 와 Spring Data Gemfire
Jay Lee
 
PDF
10thMeetup-20190420-REST API Design Principles 되새기기
DongHee Lee
 
PPTX
Spring reactor
Bhargav Surimenu
 
PDF
Spring framework 4.x
Arawn Park
 
PDF
API Design Principles Essential 
Oracle Korea
 
PPTX
Jersey framework
knight1128
 
PPTX
microservice architecture public education v2
uEngine Solutions
 
PDF
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
Oracle Korea
 
PPTX
CQRS and Event Sourcing
Inho Kang
 
PPTX
Building multi tenancy enterprise applications - quick
uEngine Solutions
 
PPTX
Java EE7
Jay Lee
 
PDF
Spring in Action - Sixth Edition (MEAP V04) Craig Walls
elonaolzakmx
 
PDF
사이드 프로젝트 빠르게 시작하기 by 제이제이
Excelcon
 
Core Spring + Reactive 김민석
VMware Tanzu Korea
 
Lagom framework
명주 김
 
RESTful API 제대로 만들기
Juwon Kim
 
Serverless Spring 오충현
VMware Tanzu Korea
 
비동기 회고 발표자료
Benjamin Kim
 
테크톡1 by roach: Spring Interceptor
ssuser13b412
 
Micro service architecture
uEngine Solutions
 
SpringCamp 2016 - Apache Geode 와 Spring Data Gemfire
Jay Lee
 
10thMeetup-20190420-REST API Design Principles 되새기기
DongHee Lee
 
Spring reactor
Bhargav Surimenu
 
Spring framework 4.x
Arawn Park
 
API Design Principles Essential 
Oracle Korea
 
Jersey framework
knight1128
 
microservice architecture public education v2
uEngine Solutions
 
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
Oracle Korea
 
CQRS and Event Sourcing
Inho Kang
 
Building multi tenancy enterprise applications - quick
uEngine Solutions
 
Java EE7
Jay Lee
 
Spring in Action - Sixth Edition (MEAP V04) Craig Walls
elonaolzakmx
 
사이드 프로젝트 빠르게 시작하기 by 제이제이
Excelcon
 
Ad

More from minseok kim (8)

PDF
PCF2.2 update mkim_201807
minseok kim
 
PDF
Meetup tools for-cloud_native_apps_meetup20180510-vs
minseok kim
 
PDF
consumer_driven_contract with spring cloud contract at spring camp 2018
minseok kim
 
PDF
Pivotal seminarq4 20161129_share
minseok kim
 
PDF
Pivotal korea transformation_strategy_seminar_enterprise_dev_ops_20160630_v1.0
minseok kim
 
PDF
Pcf 1page 201501
minseok kim
 
PDF
Development on cloud_paa_s_sddc_mkim_20141216_final
minseok kim
 
PDF
Pivotal cf for_devops_mkim_20141209
minseok kim
 
PCF2.2 update mkim_201807
minseok kim
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
minseok kim
 
consumer_driven_contract with spring cloud contract at spring camp 2018
minseok kim
 
Pivotal seminarq4 20161129_share
minseok kim
 
Pivotal korea transformation_strategy_seminar_enterprise_dev_ops_20160630_v1.0
minseok kim
 
Pcf 1page 201501
minseok kim
 
Development on cloud_paa_s_sddc_mkim_20141216_final
minseok kim
 
Pivotal cf for_devops_mkim_20141209
minseok kim
 
Ad

Recently uploaded (20)

PPTX
Optimization_Techniques_ML_Presentation.pptx
farispalayi
 
PPTX
ONLINE BIRTH CERTIFICATE APPLICATION SYSYTEM PPT.pptx
ShyamasreeDutta
 
PDF
Build Fast, Scale Faster: Milvus vs. Zilliz Cloud for Production-Ready AI
Zilliz
 
PPTX
04 Output 1 Instruments & Tools (3).pptx
GEDYIONGebre
 
PPTX
西班牙武康大学毕业证书{UCAMOfferUCAM成绩单水印}原版制作
Taqyea
 
PDF
Azure_DevOps introduction for CI/CD and Agile
henrymails
 
PPT
introductio to computers by arthur janry
RamananMuthukrishnan
 
PPTX
原版西班牙莱昂大学毕业证(León毕业证书)如何办理
Taqyea
 
PPTX
一比一原版(LaTech毕业证)路易斯安那理工大学毕业证如何办理
Taqyea
 
PPTX
L1A Season 1 Guide made by A hegy Eng Grammar fixed
toszolder91
 
PDF
The-Hidden-Dangers-of-Skipping-Penetration-Testing.pdf.pdf
naksh4thra
 
PPT
Agilent Optoelectronic Solutions for Mobile Application
andreashenniger2
 
PDF
Apple_Environmental_Progress_Report_2025.pdf
yiukwong
 
DOCX
Custom vs. Off-the-Shelf Banking Software
KristenCarter35
 
PPT
introduction to networking with basics coverage
RamananMuthukrishnan
 
PPTX
PE introd.pptxfrgfgfdgfdgfgrtretrt44t444
nepmithibai2024
 
PDF
AI_MOD_1.pdf artificial intelligence notes
shreyarrce
 
PPTX
法国巴黎第二大学本科毕业证{Paris 2学费发票Paris 2成绩单}办理方法
Taqyea
 
PPTX
Presentation3gsgsgsgsdfgadgsfgfgsfgagsfgsfgzfdgsdgs.pptx
SUB03
 
PPTX
PM200.pptxghjgfhjghjghjghjghjghjghjghjghjghj
breadpaan921
 
Optimization_Techniques_ML_Presentation.pptx
farispalayi
 
ONLINE BIRTH CERTIFICATE APPLICATION SYSYTEM PPT.pptx
ShyamasreeDutta
 
Build Fast, Scale Faster: Milvus vs. Zilliz Cloud for Production-Ready AI
Zilliz
 
04 Output 1 Instruments & Tools (3).pptx
GEDYIONGebre
 
西班牙武康大学毕业证书{UCAMOfferUCAM成绩单水印}原版制作
Taqyea
 
Azure_DevOps introduction for CI/CD and Agile
henrymails
 
introductio to computers by arthur janry
RamananMuthukrishnan
 
原版西班牙莱昂大学毕业证(León毕业证书)如何办理
Taqyea
 
一比一原版(LaTech毕业证)路易斯安那理工大学毕业证如何办理
Taqyea
 
L1A Season 1 Guide made by A hegy Eng Grammar fixed
toszolder91
 
The-Hidden-Dangers-of-Skipping-Penetration-Testing.pdf.pdf
naksh4thra
 
Agilent Optoelectronic Solutions for Mobile Application
andreashenniger2
 
Apple_Environmental_Progress_Report_2025.pdf
yiukwong
 
Custom vs. Off-the-Shelf Banking Software
KristenCarter35
 
introduction to networking with basics coverage
RamananMuthukrishnan
 
PE introd.pptxfrgfgfdgfdgfgrtretrt44t444
nepmithibai2024
 
AI_MOD_1.pdf artificial intelligence notes
shreyarrce
 
法国巴黎第二大学本科毕业证{Paris 2学费发票Paris 2成绩单}办理方法
Taqyea
 
Presentation3gsgsgsgsdfgadgsfgfgsfgagsfgsfgzfdgsdgs.pptx
SUB03
 
PM200.pptxghjgfhjghjghjghjghjghjghjghjghjghj
breadpaan921
 

SpringOnePlatform2017 recap

  • 1. 2018/2/6 김민석 Senior Platform Architect Pivotal Cloud Foundry [email protected] 1 Core Spring & Reactive SpringOnePlatform 2017 recap for Samsung SDS
  • 3. Everything you need to transform Process & Culture Build for change Tools Continuously Improve Platform Any App, Every Cloud, One Platform PCF 2.0 Tracker / Spring / Concourse Pivotal Labs Data / AI Apps Culture, tools, and platform
  • 4. 4
  • 5. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ About me 5 •  김민석 ([email protected]) •  Platform Architect @ Pivotal •  Big-Data Monitoring System Developer •  Software Architect •  Software Quality Engineer •  Developer https://www.facebook.com/groups/CloudfoundryKorea https://www.meetup.com/Seoul-Cloud-Foundry-Meetup
  • 6. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 6 여기서 다루는 세션들 스프링 프로젝트를 이용한 프로그래밍 Reactive Spring (Tue/05) Reactive Applications on Apache Tomcat and Servlet 3.1 Containers(Tue /05) Spring Integration 5.0: What's New?(Tue/ 05) Not Only Reactive - Data Access with Spring Data(Tue /05) Reactive Data Access with Spring Data (Tue /05) Under the Hood of Reactive Data Access (Tue/06) Simplifying Apache Geode with Spring Sata(Wed/06) JDBC, What is it Good For? (Thu/07) Spring Security 5: The Reactive Parts(Tue /05) Bootiful Development with Spring Boot and React (Wed/ 06) Next Generation OAuth Support with Spring Security 5.0 (Wed/06) Lessons Learned from Upgrading Thymeleaf (Wed /06) Why Spring <3 Kotlin( Tue/07) What's New in Spring AMQP 2.0( Wed/06) JUnit 5 — New Opportunities for Testing on the JVM(Thu /07) Spring Core New in Spring Framework 5.0: Functional Web Framework(Tue/05) Spring Framework 5.0 on JDK 8 & 9 (Wed /06) Reactor in Action (Web /06) Spring Framework 5: Hidden Gems(Wed/06) It's a Kind of Magic: Under the Covers of Spring Boot (Web /06) 55 New Features in JDK 9 (Thu/ 07) Servlet or Reactive Stacks: The Choice is Yours. Oh No... The Choice is Mine!(Tue/ 05) Design & Architecting Designing, Implementing, and Using Reactive APIs(Web/06) Cloud-Native Batch Processing with Spring Batch 4 (Tue /05) Bringing New Technology to Legacy Land (Tue /05) State or Events? Which Shall I Keep? (Tue /05) Kafka Streams - From the Ground Up to the Cloud (Tue /05) Cloud Event Driven Architectures with Spring Cloud Stream 2.0(Wed/06) Spring Driven Industrial IoT Utilizing Edge, Fog, and Cloud Computing( Wed/ 06)
  • 7. 7 1. Spring Framework Core 살펴보기 2. Reactive Programming 개념이해하기 3. Demo 4. 어떻게 적용할 것인가?
  • 8. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
  • 9. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Reactive
  • 10. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 10 Spring Framework 5.0 Overview •  Back-Pressure(Reactive 데이터 흐름 제어) •  Reactive Spring Data •  Function Reactive Programming •  Project Reactor
  • 11. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ •  6개월 단위 Major release •  Agile development •  JDK9: 2017/09 •  JDK10: 2018/03 •  JDK11: 2018/09 •  LTS support release •  JDK8 (LTS) •  JDK11(LTS) •  3 years •  No Overlap of support JDK Release and Support model Java 8 Adoption(Oct. 2017, Baeldung) Java 8 Java 7 Java 6 Java 9
  • 12. 12 1. Spring Framework Core 살펴보기 2. Reactive Programming 개념이해하기 3. Demo 4. 어떻게 적용할 것인가?
  • 13. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Servlet and Reactive Servlet 3.1 (2013) Reactor (2013) Servlet1.0 (1997) Servlet 3.0 (2009)
  • 14. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 14 Servlet and Reactive
  • 15. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 15 Servlet and Reactive
  • 16. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ •  대안적 프로그래밍 방식 •  쉽고, 간결하고 에러가 줄어드는 비동기 이벤트 기반 프로그래밍 •  고성능, concurrency 코딩 •  Reactive Stream 명세 (http://www.reactive-streams.org/ ) •  WebFlux는 다양한 non-blocking API를 지원 Spring WebFlux를 이용한 Reactive Programming
  • 17. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 17 멀티쓰레드 프로그래밍 •  Keeping an unused ExecutorService alive •  Wrong thread-pool capacity while using fixed length thread-pool •  Unexpectedly-long blocking with Future‘s get() method
  • 18. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring WebFlux – 기존 RestController 방식
  • 19. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring WebFlux – RouterFunction 방식 (1/2)
  • 20. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring WebFlux – RouterFunction 방식 (2/2) https://spring.io/blog/2016/09/22/new-in-spring-5-functional-web-framework https://github.com/myminseok/webflux-functional-mkim
  • 21. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring WebFlux를 이용한 Reactive Programming https://spring.io/blog/2016/04/19/understanding-reactive-types
  • 22. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Reactive Spring Data – being Reactive
  • 23. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ <T> List<T> findAll(Class<T> entityClass, String collectionName); <T> T findOne(Query query, Class<T> entityClass); … <T> Flux<T> findAll(Class<T> entityClass, String collectionName); <T> Mono<T> findOne(Query query, Class<T> entityClass); … Reactive Spring Data - ReactiveMongoOperations
  • 24. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Reactive Spring Data - MongoDB
  • 25. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Reactive Spring Integration
  • 26. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Reactive Spring Integration https://github.com/artembilan/spring-integration-s1p2017
  • 27. 27 1. Spring Framework Core 살펴보기 2. Reactive Programming 개념이해하기 3. Demo 4. 어떻게 적용할 것인가?
  • 28. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ •  샘플: https://github.com/rstoyanchev/demo-reactive-spring •  Spring Webflux •  WebClient •  Reactive Spring Data (@Tailable) •  Streaming Data from Reactive repository to Reactive Client 28 Spring Webflux & Spring Data Demo
  • 29. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 샘플: https://github.com/myminseok/s1p-reactor-in-action Reactor 테스트 •  StepVerifier Debugging •  Async pipeline을 Debug, tracing하려고 할 때 .checkpoint()를 활용. Spring WebFlux를 이용한 Reactive Programming
  • 30. 30 1. Spring Framework Core 살펴보기 2. Reactive Programming 개념이해하기 3. Demo 4. 어떻게 적용할 것인가?
  • 31. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ •  Networking •  Latency •  Failures •  Back-pressure(Data Flow Control) •  Highly Concurrent Operations •  Scalability 효과적인 Reactive Usecase https://github.com/cloudfoundry/cf-java-client
  • 32. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 32 Servlet or Reactive?
  • 33. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ If it isn't broken, don’t fix it. Imperative is simple until it is not 33 Servlet or Reactive?
  • 34. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ •  Spring Framework 5.x •  JDK 8 codebase (LTS), JDK9+ compatible •  Support Java EE Level 7( Servlet 3.1, JPA 2.1) •  Prepare to Java EE Level 8 (Servlet 4.x, JPA 2.x) •  Dropped support (Portlet, Velocity, JDO…) •  Spring Framework 5.x + •  Upgrade train(JDK 9->10 ->11(LTS)) •  Spring framework 5.x building target to JDK11 •  Spring Framework 4.3 •  JDK6 codebase, JDK7,8,9 compatible •  Backport from Spring framework 5 (@UsesJava8 …) 34 Spring Framework & JDK 업그레이드 계획하기
  • 35. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 1.  JDK Baseline Update 2.  Web Servers 3.  Libraries •  Jackson 2.9+ Hibernate 5.0+ EhCache 2.10+ 4.  Removed Packages, Classes and Methods •  Hibernate 5 (orm.hibernate3/hibernate4 dropped) 5.  Dropped Support •  Portlet, Velocity, JasperReports, XMLBeans, JDO, Guava (replaced by the Caffeine support •  Spring Framework 4.3.x (supported until 2020) 6.  Common Logging •  spring-jcl 35 Spring Framework 5.0 적용하기 https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-5.x