SlideShare a Scribd company logo
SpringCamp 2016 - Apache Geode 와 Spring Data Gemfire
2© 2015 Pivotal Software, Inc. All rights reserved. 2
Apache Geode 와
Spring
이창재 (jaylee@pivotal.io)| Pivotal | Advanced Platform Architects
April, 2016
3© 2015 Pivotal Software, Inc. All rights reserved.
Agenda
Ÿ Apache Geode 소개
Ÿ Spring Data Gemfire
Ÿ Spring Session
Ÿ Demo
4© 2015 Pivotal Software, Inc. All rights reserved.
5© 2015 Pivotal Software, Inc. All rights reserved.
6© 2015 Pivotal Software, Inc. All rights reserved.
Apache Geode 는?
open source distributed, in-
memory database for scale-out
applications
7© 2015 Pivotal Software, Inc. All rights reserved.
Geode 는?
Ÿ 온라인으로 수평 확장이 가능한 고가용성 및 Low latency in-
memory Data Grid
Ÿ Key/Value (Map) Store (+ ααααααααα)
Ÿ Open Source
– 2015년 4월 Pivotal Gemfire 를 Apache 재단에 기증
– Project Geode
– 2016년 4월 현재 1.0.0-M2
8© 2015 Pivotal Software, Inc. All rights reserved.
Geode - In Memory
Ÿ Data 를 메모리에 분산해서 저장
– JVM Heap
– Off Heap 사용 가능(defragmentation)
Ÿ Disk 에도 저장 가능
– Persistent
Ÿ Eviction 과 Expiration 지원
– Least Recently Used 기반 Eviction
– Time To Live 기반 Expiration
9© 2015 Pivotal Software, Inc. All rights reserved.
Geode In-Memory 데이타 분산
VM 1
VM 2 VM 3
10© 2015 Pivotal Software, Inc. All rights reserved.
Server 3Server 2
Bucket 3
*primary*
Bucket 1
secondary
Bucket 3
secondary
Bucket 2
*primary*
Server 1
Bucket 2
secondary
Bucket 1
*primary*
Geode In-Memory 데이타 분산 (Redundant = 1)
11© 2015 Pivotal Software, Inc. All rights reserved.
Server 3Server 2
Bucket 3
*primary*
Bucket 1
secondary
Bucket 3
secondary
Bucket 2
*primary*
Server 1
Bucket 2
secondary
Bucket 1
*primary*
Geode In-Memory 데이타 분산 (Redundant = 1)
Server 가 죽으면?
12© 2015 Pivotal Software, Inc. All rights reserved.
Server 1 Server 3Server 2
Bucket 2
secondary
Bucket 1
*primary*
Bucket 3
*primary*
Bucket 1
*primary*
Bucket 3
secondary
Bucket 2
*primary*
Bucket 2
secondary
Primary
Failover
Restore
Redundancy
Bucket 1
secondary
Geode In-Memory 데이타 분산 (Redundant = 1)
13© 2015 Pivotal Software, Inc. All rights reserved.
Geode – PARTITION REGION
Ÿ REGION
– Database 의 Table
– 메모리에 분산되서 저장되는 java.util.Map
Ÿ REDUNDANT 를 가지는 것과 안가지는 것(PARTITION,
PARTITION_REDUNDANT)
– REDUNDANT 즉 Backup 의 갯수는 지정 가능 – 0~3개
Ÿ Consistent Hashing
– 기본 113 개의 Bucket
Ÿ Map API 뿐만 아니라 SQL Query 도 지원
14© 2015 Pivotal Software, Inc. All rights reserved.
Geode – Key/Value (Map) Store (+ ααααααααα)
Ÿ In Memory Data Grid
Ÿ Data Colocation
– Master / Detail 형태의 data graph
Ÿ Data Serialization (PDX)
Ÿ FuctionService
Ÿ JTA 호환 Transaction
출처 : http://s.hswstatic.com/gif/grid-computing-1.gif
15© 2015 Pivotal Software, Inc. All rights reserved.
Geode – Key/Value (Map) Store (+ ααααααααα)
16© 2015 Pivotal Software, Inc. All rights reserved.
Geode – Key/Value (Map) Store (+ ααααααααα)
17© 2015 Pivotal Software, Inc. All rights reserved.
Gemfire vs Geode
Ÿ Open Source
Ÿ 상용 Support
Ÿ 기능상의 차이
– WAN 상의 클러스터 복제 (M2 에 이미 포함)
– Continuous Query (M2 에 이미 포함)
– C++, C# 지원
18© 2015 Pivotal Software, Inc. All rights reserved.
Demo Repo
https://github.com/eggboy/springcamp2016geode
https://github.com/eggboy/gemfiredemo
19© 2015 Pivotal Software, Inc. All rights reserved.
Spring Data Gemfire
20© 2015 Pivotal Software, Inc. All rights reserved.
Spring Data GemFire (SDG)
Spring Data 의 강력하고 단순한 프로그래밍 모델을 이용하여 Apache
Geode 이용가능.
Spring Ecosystem Integration…
– Spring Cache Abstraction / Transaction Management
– Spring Data Commons + REST
– Spring Integration (Inbound/Outbound Channel Adapters)
– Spring Data Flow (Input Source and Sinks)
21© 2015 Pivotal Software, Inc. All rights reserved.
Apache Geode combined with Spring Data GemFire
can be used as JSR-107 (JCache) caching provider
+ +
22© 2015 Pivotal Software, Inc. All rights reserved.
GRAILS
Full-stack, Web
Data Flow
Stream, Taps, Jobs
BOOT
Bootable, Minimal, Ops-Ready
Big,
Fast,
Flexible
Data Web,
Integration,
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
23© 2015 Pivotal Software, Inc. All rights reserved.
Server 설정
Spring XML 기반 설정
24© 2015 Pivotal Software, Inc. All rights reserved.
Client 설정
Spring XML 기반 설정
25© 2015 Pivotal Software, Inc. All rights reserved.
with Spring
Geode 서버 시작
@SpringBootApplication
@ImportResource("/spring-data-gemfire-cache.xml")
@EnableGemfireRepositories
@EnableTransactionManagement
public class SampleDataGemFireApplication {
public static void main(String[] args) {
SpringApplication.run(SampleDataGemFireApplication.class, args);
}
}
혹은…
gfsh>start server –name=Example … --spring-xml-location=“spring-data-gemfire-cache.xml”
26© 2015 Pivotal Software, Inc. All rights reserved.
GemfireRepository
Repository 를 이용한 data 접근
public interface CustomerRepository extends GemfireRepository<Customer, Long> {
}
// Spring context.xml
<gfe-data:repositories base-package="io.pivotal.springcamp.geode.repository" />
27© 2015 Pivotal Software, Inc. All rights reserved.
GemfireTemplate
GemfireTemplate 을 이용한 data 접근
Ÿ 가장 단순한 data 접근 방법
Ÿ Gemfire/Geode API 변경으로 부터 자유로움
Ÿ Exception 이 Spring DAO Exception 으로 변경
Ÿ Transaction
<bean id="customerTemplate" class="org.springframework.data.gemfire.GemfireTemplate"
p:region-ref="Customer" />
28© 2015 Pivotal Software, Inc. All rights reserved.
Implementation
Annotation-based Function Implementation/Execution
package org.example.app.functions;
import …
@Component
public class ExampleFunctions {
@GemfireFunction
public Customer update(…) {
…
}
…
}
Example…
(Optional)…
<bean class=“org.example….ExampleFunctions”/>
29© 2015 Pivotal Software, Inc. All rights reserved.
Execution
Annotation-based Function Implementation/Execution
package org.example.app.function.executions;
import …
@OnRegion(“Example”)
public interface ExampleFunctionExecution {
Customer update(…);
}
And…
<gfe:annotation-driven/>
<gfe-data:function-executions base-package="org.example.app.function.executions">
30© 2015 Pivotal Software, Inc. All rights reserved.
JSR-107 (JCache), Spring Cache Abstraction
Geode Caching Provider
Ÿ With @Cacheable
Ÿ And @CachePut, @CacheEvict(allEntries=[true|false]),
@CacheConfig
– http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#cache-jsr-107
Ÿ Or with JSR-107 using…
– @CacheResult, @CachePut, @CacheRemove, @CacheRemoveAll,
@CacheDefaults
31© 2015 Pivotal Software, Inc. All rights reserved.
Spring Session 과 Geode
32© 2015 Pivotal Software, Inc. All rights reserved. 32
12factor App Manifesto - VI. Processes
Twelve-factor processes are stateless and share-nothing.
Some web systems rely on “sticky sessions” – that is, caching user
session data in memory of the app’s process and expectingfuture
requests from the same visitor to be routed to the same process. Sticky
sessions are a violation of twelve-factor and should never be used
or relied upon.
33© 2015 Pivotal Software, Inc. All rights reserved.
Spring Session
Ÿ 일반적인 WAS 의 Clustering
– SESSION Replication-> Overhead
– 구성의 복잡
Ÿ HTTPSession 과 User 의 Object
들이 공존
– Session 이 차지하는 공간으로 인한
Heap 부족
34© 2015 Pivotal Software, Inc. All rights reserved.
Spring Session
Ÿ 플랫폼에 독립적인 세션 관리
Ÿ Annotation 기반에 쉬운 설정
Ÿ Persistence
Ÿ WebSocket 지원
Ÿ 지원하는 기술
– Redis
– Geode
– Hazelcast
35© 2015 Pivotal Software, Inc. All rights reserved.
Spring Session - @EnableGemFireHttpSession
36© 2015 Pivotal Software, Inc. All rights reserved.
Spring Session – Servlet Filter
출처 : http://www.slideshare.net/dgomezg/managing-users-data-with-spring-session
SpringCamp 2016 - Apache Geode 와 Spring Data Gemfire

More Related Content

What's hot (20)

PPTX
Next Generation Scheduling for YARN and K8s: For Hybrid Cloud/On-prem Environ...
DataWorks Summit
 
PDF
Scale Out Your Big Data Apps: The Latest on Pivotal GemFire and GemFire XD
VMware Tanzu
 
PPTX
ApexMeetup Geode - Talk1 2016-03-17
Apache Apex Organizer
 
PPTX
Using Apache Geode: Lessons Learned at Southwest Airlines
VMware Tanzu
 
PPTX
Not all open source is the same
EDB
 
PPTX
GemFire In Memory Data Grid
Dmitry Buzdin
 
PPTX
YARN Containerized Services: Fading The Lines Between On-Prem And Cloud
DataWorks Summit
 
PDF
How-To: Zero Downtime Migrations from Oracle to a Cloud-Native PostgreSQL
YugabyteDB
 
PDF
Hadoop {Submarine} Project: Running Deep Learning Workloads on YARN
DataWorks Summit
 
PPTX
Hive LLAP: A High Performance, Cost-effective Alternative to Traditional MPP ...
DataWorks Summit
 
PPTX
OLTP+OLAP=HTAP
EDB
 
PDF
#GeodeSummit - Large Scale Fraud Detection using GemFire Integrated with Gree...
PivotalOpenSourceHub
 
PPTX
New Integration Options with Postgres Enterprise Manager 8.0
EDB
 
PDF
Greenplum Kontained: Coordinating Many PostgreSQL Instances on Kubernetes: Cl...
VMware Tanzu
 
PDF
Slides for the Apache Geode Hands-on Meetup and Hackathon Announcement
VMware Tanzu
 
PDF
Scaling Apache Pulsar to 10 PB/day
Karthik Ramasamy
 
PPTX
Geode Meetup Apachecon
upthewaterspout
 
PDF
Online Upgrade Using Logical Replication
EDB
 
PPTX
How to Design for Database High Availability
EDB
 
PPTX
HBase coprocessors, Uses, Abuses, Solutions
DataWorks Summit
 
Next Generation Scheduling for YARN and K8s: For Hybrid Cloud/On-prem Environ...
DataWorks Summit
 
Scale Out Your Big Data Apps: The Latest on Pivotal GemFire and GemFire XD
VMware Tanzu
 
ApexMeetup Geode - Talk1 2016-03-17
Apache Apex Organizer
 
Using Apache Geode: Lessons Learned at Southwest Airlines
VMware Tanzu
 
Not all open source is the same
EDB
 
GemFire In Memory Data Grid
Dmitry Buzdin
 
YARN Containerized Services: Fading The Lines Between On-Prem And Cloud
DataWorks Summit
 
How-To: Zero Downtime Migrations from Oracle to a Cloud-Native PostgreSQL
YugabyteDB
 
Hadoop {Submarine} Project: Running Deep Learning Workloads on YARN
DataWorks Summit
 
Hive LLAP: A High Performance, Cost-effective Alternative to Traditional MPP ...
DataWorks Summit
 
OLTP+OLAP=HTAP
EDB
 
#GeodeSummit - Large Scale Fraud Detection using GemFire Integrated with Gree...
PivotalOpenSourceHub
 
New Integration Options with Postgres Enterprise Manager 8.0
EDB
 
Greenplum Kontained: Coordinating Many PostgreSQL Instances on Kubernetes: Cl...
VMware Tanzu
 
Slides for the Apache Geode Hands-on Meetup and Hackathon Announcement
VMware Tanzu
 
Scaling Apache Pulsar to 10 PB/day
Karthik Ramasamy
 
Geode Meetup Apachecon
upthewaterspout
 
Online Upgrade Using Logical Replication
EDB
 
How to Design for Database High Availability
EDB
 
HBase coprocessors, Uses, Abuses, Solutions
DataWorks Summit
 

Viewers also liked (20)

PDF
Lean engineering for lean/balanced teams: lessons learned (and still learning...
Balanced Team
 
PDF
ContainerCon 2015 - Be a Microservices Hero
Dragos Dascalita
 
PPTX
Dropwizard Restful 微服務 (microservice) 初探 - JCConf TW 2014
Anthony Chen
 
PPT
GE healthcare
joessye
 
PDF
Disruptors Don't Play By The Rules
Reuven Gorsht
 
PDF
Pivotal Big Data Suite: A Technical Overview
VMware Tanzu
 
PPTX
Keys for Success from Streams to Queries
DataWorks Summit/Hadoop Summit
 
PDF
Wall Street Derivative Risk Solutions Using Apache Geode
Andre Langevin
 
PPTX
Driving Real Insights Through Data Science
VMware Tanzu
 
PPTX
Troubleshooting App Health and Performance with PCF Metrics 1.2
VMware Tanzu
 
PPTX
Why is my Hadoop* job slow?
DataWorks Summit/Hadoop Summit
 
PDF
Implementing Applications with SOA and Application Integration Architecture
Bob Rhubart
 
PPTX
Improving Hadoop Resiliency and Operational Efficiency with EMC Isilon
DataWorks Summit/Hadoop Summit
 
PPTX
Solving Performance Problems on Hadoop
Tyler Mitchell
 
PDF
Workload Automation + Hadoop?
DataWorks Summit/Hadoop Summit
 
PPTX
Digital Transformation (Implications for the CXO)
Anant Desai
 
PDF
SQL and Search with Spark in your browser
DataWorks Summit/Hadoop Summit
 
PDF
Pivotal Big Data Roadshow
VMware Tanzu
 
PPTX
Why Domain-Driven Design and Reactive Programming?
VMware Tanzu
 
PPTX
Faster, Faster, Faster: The True Story of a Mobile Analytics Data Mart on Hive
DataWorks Summit/Hadoop Summit
 
Lean engineering for lean/balanced teams: lessons learned (and still learning...
Balanced Team
 
ContainerCon 2015 - Be a Microservices Hero
Dragos Dascalita
 
Dropwizard Restful 微服務 (microservice) 初探 - JCConf TW 2014
Anthony Chen
 
GE healthcare
joessye
 
Disruptors Don't Play By The Rules
Reuven Gorsht
 
Pivotal Big Data Suite: A Technical Overview
VMware Tanzu
 
Keys for Success from Streams to Queries
DataWorks Summit/Hadoop Summit
 
Wall Street Derivative Risk Solutions Using Apache Geode
Andre Langevin
 
Driving Real Insights Through Data Science
VMware Tanzu
 
Troubleshooting App Health and Performance with PCF Metrics 1.2
VMware Tanzu
 
Why is my Hadoop* job slow?
DataWorks Summit/Hadoop Summit
 
Implementing Applications with SOA and Application Integration Architecture
Bob Rhubart
 
Improving Hadoop Resiliency and Operational Efficiency with EMC Isilon
DataWorks Summit/Hadoop Summit
 
Solving Performance Problems on Hadoop
Tyler Mitchell
 
Workload Automation + Hadoop?
DataWorks Summit/Hadoop Summit
 
Digital Transformation (Implications for the CXO)
Anant Desai
 
SQL and Search with Spark in your browser
DataWorks Summit/Hadoop Summit
 
Pivotal Big Data Roadshow
VMware Tanzu
 
Why Domain-Driven Design and Reactive Programming?
VMware Tanzu
 
Faster, Faster, Faster: The True Story of a Mobile Analytics Data Mart on Hive
DataWorks Summit/Hadoop Summit
 
Ad

Similar to SpringCamp 2016 - Apache Geode 와 Spring Data Gemfire (20)

PPTX
CF Korea Meetup - Gemfire on PCF
Jay Lee
 
PPTX
Getting Started with Apache Geode
John Blum
 
PDF
Session State Caching with Spring
VMware Tanzu
 
PDF
SpringOnePlatform2017 recap
minseok kim
 
PPTX
Building Highly Scalable Spring Applications using In-Memory Data Grids
John Blum
 
PDF
피보탈 클라우드 파운드리 밋업 - 2017년 2월 24일
VMware Tanzu Korea
 
PDF
인메모리 클러스터링 아키텍처
Jaehong Cheon
 
PDF
인피니스팬데이터그리드따라잡기 (@JCO 2014)
Jaehong Cheon
 
PPTX
Core Spring + Reactive 김민석
VMware Tanzu Korea
 
PPTX
Cache in API Gateway
GilWon Oh
 
PDF
Apache Geode Meetup, London
Apache Geode
 
PPTX
Amplify로 Neptune 그래프 DB 기반 모바일 앱 만들기 :: 김현민 - AWS Community Day 2019
AWSKRUG - AWS한국사용자모임
 
PPTX
Simplifying Apache Geode with Spring Data
VMware Tanzu
 
PPTX
PlatformDay2013 발표자료
Tae Young Lee
 
PPTX
#GeodeSummit - Spring Data GemFire API Current and Future
PivotalOpenSourceHub
 
PPTX
Scaling Spring Boot Applications in Real-Time
VMware Tanzu
 
PDF
Apache Geode Meetup, Cork, Ireland at CIT
Apache Geode
 
PPTX
G cube Openstack solution
G-Cube
 
PPTX
Geode introduction
Swapnil Bawaskar
 
PDF
Apache Spark Overview part1 (20161107)
Steve Min
 
CF Korea Meetup - Gemfire on PCF
Jay Lee
 
Getting Started with Apache Geode
John Blum
 
Session State Caching with Spring
VMware Tanzu
 
SpringOnePlatform2017 recap
minseok kim
 
Building Highly Scalable Spring Applications using In-Memory Data Grids
John Blum
 
피보탈 클라우드 파운드리 밋업 - 2017년 2월 24일
VMware Tanzu Korea
 
인메모리 클러스터링 아키텍처
Jaehong Cheon
 
인피니스팬데이터그리드따라잡기 (@JCO 2014)
Jaehong Cheon
 
Core Spring + Reactive 김민석
VMware Tanzu Korea
 
Cache in API Gateway
GilWon Oh
 
Apache Geode Meetup, London
Apache Geode
 
Amplify로 Neptune 그래프 DB 기반 모바일 앱 만들기 :: 김현민 - AWS Community Day 2019
AWSKRUG - AWS한국사용자모임
 
Simplifying Apache Geode with Spring Data
VMware Tanzu
 
PlatformDay2013 발표자료
Tae Young Lee
 
#GeodeSummit - Spring Data GemFire API Current and Future
PivotalOpenSourceHub
 
Scaling Spring Boot Applications in Real-Time
VMware Tanzu
 
Apache Geode Meetup, Cork, Ireland at CIT
Apache Geode
 
G cube Openstack solution
G-Cube
 
Geode introduction
Swapnil Bawaskar
 
Apache Spark Overview part1 (20161107)
Steve Min
 
Ad

More from Jay Lee (9)

PDF
Spring on Kubernetes
Jay Lee
 
PDF
Knative And Pivotal Function As a Service
Jay Lee
 
PDF
Knative and Riff
Jay Lee
 
PDF
Spring5 New Features
Jay Lee
 
PDF
Reactive Microservice And Spring5
Jay Lee
 
PDF
JavaEE6 - 설계 차원의 단순성
Jay Lee
 
PDF
Java8 - Oracle Korea Magazine
Jay Lee
 
PPTX
Java EE7
Jay Lee
 
PDF
Java 8 & Beyond
Jay Lee
 
Spring on Kubernetes
Jay Lee
 
Knative And Pivotal Function As a Service
Jay Lee
 
Knative and Riff
Jay Lee
 
Spring5 New Features
Jay Lee
 
Reactive Microservice And Spring5
Jay Lee
 
JavaEE6 - 설계 차원의 단순성
Jay Lee
 
Java8 - Oracle Korea Magazine
Jay Lee
 
Java EE7
Jay Lee
 
Java 8 & Beyond
Jay Lee
 

Recently uploaded (20)

DOCX
8th International Conference on Electrical Engineering (ELEN 2025)
elelijjournal653
 
PPTX
GitOps_Without_K8s_Training_detailed git repository
DanialHabibi2
 
PDF
Halide Perovskites’ Multifunctional Properties: Coordination Engineering, Coo...
TaameBerhe2
 
PPT
Carmon_Remote Sensing GIS by Mahesh kumar
DhananjayM6
 
DOC
MRRS Strength and Durability of Concrete
CivilMythili
 
PPTX
Worm gear strength and wear calculation as per standard VB Bhandari Databook.
shahveer210504
 
PDF
MAD Unit - 2 Activity and Fragment Management in Android (Diploma IT)
JappanMavani
 
PPTX
The Role of Information Technology in Environmental Protectio....pptx
nallamillisriram
 
PDF
AI TECHNIQUES FOR IDENTIFYING ALTERATIONS IN THE HUMAN GUT MICROBIOME IN MULT...
vidyalalltv1
 
PPTX
Product Development & DevelopmentLecture02.pptx
zeeshanwazir2
 
PDF
PORTFOLIO Golam Kibria Khan — architect with a passion for thoughtful design...
MasumKhan59
 
PPTX
Mechanical Design of shell and tube heat exchangers as per ASME Sec VIII Divi...
shahveer210504
 
PPTX
Heart Bleed Bug - A case study (Course: Cryptography and Network Security)
Adri Jovin
 
PDF
International Journal of Information Technology Convergence and services (IJI...
ijitcsjournal4
 
PPTX
美国电子版毕业证南卡罗莱纳大学上州分校水印成绩单USC学费发票定做学位证书编号怎么查
Taqyea
 
PPT
Electrical Safety Presentation for Basics Learning
AliJaved79382
 
PDF
Introduction to Productivity and Quality
মোঃ ফুরকান উদ্দিন জুয়েল
 
PDF
Design Thinking basics for Engineers.pdf
CMR University
 
PPTX
Knowledge Representation : Semantic Networks
Amity University, Patna
 
DOCX
CS-802 (A) BDH Lab manual IPS Academy Indore
thegodhimself05
 
8th International Conference on Electrical Engineering (ELEN 2025)
elelijjournal653
 
GitOps_Without_K8s_Training_detailed git repository
DanialHabibi2
 
Halide Perovskites’ Multifunctional Properties: Coordination Engineering, Coo...
TaameBerhe2
 
Carmon_Remote Sensing GIS by Mahesh kumar
DhananjayM6
 
MRRS Strength and Durability of Concrete
CivilMythili
 
Worm gear strength and wear calculation as per standard VB Bhandari Databook.
shahveer210504
 
MAD Unit - 2 Activity and Fragment Management in Android (Diploma IT)
JappanMavani
 
The Role of Information Technology in Environmental Protectio....pptx
nallamillisriram
 
AI TECHNIQUES FOR IDENTIFYING ALTERATIONS IN THE HUMAN GUT MICROBIOME IN MULT...
vidyalalltv1
 
Product Development & DevelopmentLecture02.pptx
zeeshanwazir2
 
PORTFOLIO Golam Kibria Khan — architect with a passion for thoughtful design...
MasumKhan59
 
Mechanical Design of shell and tube heat exchangers as per ASME Sec VIII Divi...
shahveer210504
 
Heart Bleed Bug - A case study (Course: Cryptography and Network Security)
Adri Jovin
 
International Journal of Information Technology Convergence and services (IJI...
ijitcsjournal4
 
美国电子版毕业证南卡罗莱纳大学上州分校水印成绩单USC学费发票定做学位证书编号怎么查
Taqyea
 
Electrical Safety Presentation for Basics Learning
AliJaved79382
 
Introduction to Productivity and Quality
মোঃ ফুরকান উদ্দিন জুয়েল
 
Design Thinking basics for Engineers.pdf
CMR University
 
Knowledge Representation : Semantic Networks
Amity University, Patna
 
CS-802 (A) BDH Lab manual IPS Academy Indore
thegodhimself05
 

SpringCamp 2016 - Apache Geode 와 Spring Data Gemfire

  • 2. 2© 2015 Pivotal Software, Inc. All rights reserved. 2 Apache Geode 와 Spring 이창재 ([email protected])| Pivotal | Advanced Platform Architects April, 2016
  • 3. 3© 2015 Pivotal Software, Inc. All rights reserved. Agenda Ÿ Apache Geode 소개 Ÿ Spring Data Gemfire Ÿ Spring Session Ÿ Demo
  • 4. 4© 2015 Pivotal Software, Inc. All rights reserved.
  • 5. 5© 2015 Pivotal Software, Inc. All rights reserved.
  • 6. 6© 2015 Pivotal Software, Inc. All rights reserved. Apache Geode 는? open source distributed, in- memory database for scale-out applications
  • 7. 7© 2015 Pivotal Software, Inc. All rights reserved. Geode 는? Ÿ 온라인으로 수평 확장이 가능한 고가용성 및 Low latency in- memory Data Grid Ÿ Key/Value (Map) Store (+ ααααααααα) Ÿ Open Source – 2015년 4월 Pivotal Gemfire 를 Apache 재단에 기증 – Project Geode – 2016년 4월 현재 1.0.0-M2
  • 8. 8© 2015 Pivotal Software, Inc. All rights reserved. Geode - In Memory Ÿ Data 를 메모리에 분산해서 저장 – JVM Heap – Off Heap 사용 가능(defragmentation) Ÿ Disk 에도 저장 가능 – Persistent Ÿ Eviction 과 Expiration 지원 – Least Recently Used 기반 Eviction – Time To Live 기반 Expiration
  • 9. 9© 2015 Pivotal Software, Inc. All rights reserved. Geode In-Memory 데이타 분산 VM 1 VM 2 VM 3
  • 10. 10© 2015 Pivotal Software, Inc. All rights reserved. Server 3Server 2 Bucket 3 *primary* Bucket 1 secondary Bucket 3 secondary Bucket 2 *primary* Server 1 Bucket 2 secondary Bucket 1 *primary* Geode In-Memory 데이타 분산 (Redundant = 1)
  • 11. 11© 2015 Pivotal Software, Inc. All rights reserved. Server 3Server 2 Bucket 3 *primary* Bucket 1 secondary Bucket 3 secondary Bucket 2 *primary* Server 1 Bucket 2 secondary Bucket 1 *primary* Geode In-Memory 데이타 분산 (Redundant = 1) Server 가 죽으면?
  • 12. 12© 2015 Pivotal Software, Inc. All rights reserved. Server 1 Server 3Server 2 Bucket 2 secondary Bucket 1 *primary* Bucket 3 *primary* Bucket 1 *primary* Bucket 3 secondary Bucket 2 *primary* Bucket 2 secondary Primary Failover Restore Redundancy Bucket 1 secondary Geode In-Memory 데이타 분산 (Redundant = 1)
  • 13. 13© 2015 Pivotal Software, Inc. All rights reserved. Geode – PARTITION REGION Ÿ REGION – Database 의 Table – 메모리에 분산되서 저장되는 java.util.Map Ÿ REDUNDANT 를 가지는 것과 안가지는 것(PARTITION, PARTITION_REDUNDANT) – REDUNDANT 즉 Backup 의 갯수는 지정 가능 – 0~3개 Ÿ Consistent Hashing – 기본 113 개의 Bucket Ÿ Map API 뿐만 아니라 SQL Query 도 지원
  • 14. 14© 2015 Pivotal Software, Inc. All rights reserved. Geode – Key/Value (Map) Store (+ ααααααααα) Ÿ In Memory Data Grid Ÿ Data Colocation – Master / Detail 형태의 data graph Ÿ Data Serialization (PDX) Ÿ FuctionService Ÿ JTA 호환 Transaction 출처 : http://s.hswstatic.com/gif/grid-computing-1.gif
  • 15. 15© 2015 Pivotal Software, Inc. All rights reserved. Geode – Key/Value (Map) Store (+ ααααααααα)
  • 16. 16© 2015 Pivotal Software, Inc. All rights reserved. Geode – Key/Value (Map) Store (+ ααααααααα)
  • 17. 17© 2015 Pivotal Software, Inc. All rights reserved. Gemfire vs Geode Ÿ Open Source Ÿ 상용 Support Ÿ 기능상의 차이 – WAN 상의 클러스터 복제 (M2 에 이미 포함) – Continuous Query (M2 에 이미 포함) – C++, C# 지원
  • 18. 18© 2015 Pivotal Software, Inc. All rights reserved. Demo Repo https://github.com/eggboy/springcamp2016geode https://github.com/eggboy/gemfiredemo
  • 19. 19© 2015 Pivotal Software, Inc. All rights reserved. Spring Data Gemfire
  • 20. 20© 2015 Pivotal Software, Inc. All rights reserved. Spring Data GemFire (SDG) Spring Data 의 강력하고 단순한 프로그래밍 모델을 이용하여 Apache Geode 이용가능. Spring Ecosystem Integration… – Spring Cache Abstraction / Transaction Management – Spring Data Commons + REST – Spring Integration (Inbound/Outbound Channel Adapters) – Spring Data Flow (Input Source and Sinks)
  • 21. 21© 2015 Pivotal Software, Inc. All rights reserved. Apache Geode combined with Spring Data GemFire can be used as JSR-107 (JCache) caching provider + +
  • 22. 22© 2015 Pivotal Software, Inc. All rights reserved. GRAILS Full-stack, Web Data Flow Stream, Taps, Jobs BOOT Bootable, Minimal, Ops-Ready Big, Fast, Flexible Data Web, Integration, 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
  • 23. 23© 2015 Pivotal Software, Inc. All rights reserved. Server 설정 Spring XML 기반 설정
  • 24. 24© 2015 Pivotal Software, Inc. All rights reserved. Client 설정 Spring XML 기반 설정
  • 25. 25© 2015 Pivotal Software, Inc. All rights reserved. with Spring Geode 서버 시작 @SpringBootApplication @ImportResource("/spring-data-gemfire-cache.xml") @EnableGemfireRepositories @EnableTransactionManagement public class SampleDataGemFireApplication { public static void main(String[] args) { SpringApplication.run(SampleDataGemFireApplication.class, args); } } 혹은… gfsh>start server –name=Example … --spring-xml-location=“spring-data-gemfire-cache.xml”
  • 26. 26© 2015 Pivotal Software, Inc. All rights reserved. GemfireRepository Repository 를 이용한 data 접근 public interface CustomerRepository extends GemfireRepository<Customer, Long> { } // Spring context.xml <gfe-data:repositories base-package="io.pivotal.springcamp.geode.repository" />
  • 27. 27© 2015 Pivotal Software, Inc. All rights reserved. GemfireTemplate GemfireTemplate 을 이용한 data 접근 Ÿ 가장 단순한 data 접근 방법 Ÿ Gemfire/Geode API 변경으로 부터 자유로움 Ÿ Exception 이 Spring DAO Exception 으로 변경 Ÿ Transaction <bean id="customerTemplate" class="org.springframework.data.gemfire.GemfireTemplate" p:region-ref="Customer" />
  • 28. 28© 2015 Pivotal Software, Inc. All rights reserved. Implementation Annotation-based Function Implementation/Execution package org.example.app.functions; import … @Component public class ExampleFunctions { @GemfireFunction public Customer update(…) { … } … } Example… (Optional)… <bean class=“org.example….ExampleFunctions”/>
  • 29. 29© 2015 Pivotal Software, Inc. All rights reserved. Execution Annotation-based Function Implementation/Execution package org.example.app.function.executions; import … @OnRegion(“Example”) public interface ExampleFunctionExecution { Customer update(…); } And… <gfe:annotation-driven/> <gfe-data:function-executions base-package="org.example.app.function.executions">
  • 30. 30© 2015 Pivotal Software, Inc. All rights reserved. JSR-107 (JCache), Spring Cache Abstraction Geode Caching Provider Ÿ With @Cacheable Ÿ And @CachePut, @CacheEvict(allEntries=[true|false]), @CacheConfig – http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#cache-jsr-107 Ÿ Or with JSR-107 using… – @CacheResult, @CachePut, @CacheRemove, @CacheRemoveAll, @CacheDefaults
  • 31. 31© 2015 Pivotal Software, Inc. All rights reserved. Spring Session 과 Geode
  • 32. 32© 2015 Pivotal Software, Inc. All rights reserved. 32 12factor App Manifesto - VI. Processes Twelve-factor processes are stateless and share-nothing. Some web systems rely on “sticky sessions” – that is, caching user session data in memory of the app’s process and expectingfuture requests from the same visitor to be routed to the same process. Sticky sessions are a violation of twelve-factor and should never be used or relied upon.
  • 33. 33© 2015 Pivotal Software, Inc. All rights reserved. Spring Session Ÿ 일반적인 WAS 의 Clustering – SESSION Replication-> Overhead – 구성의 복잡 Ÿ HTTPSession 과 User 의 Object 들이 공존 – Session 이 차지하는 공간으로 인한 Heap 부족
  • 34. 34© 2015 Pivotal Software, Inc. All rights reserved. Spring Session Ÿ 플랫폼에 독립적인 세션 관리 Ÿ Annotation 기반에 쉬운 설정 Ÿ Persistence Ÿ WebSocket 지원 Ÿ 지원하는 기술 – Redis – Geode – Hazelcast
  • 35. 35© 2015 Pivotal Software, Inc. All rights reserved. Spring Session - @EnableGemFireHttpSession
  • 36. 36© 2015 Pivotal Software, Inc. All rights reserved. Spring Session – Servlet Filter 출처 : http://www.slideshare.net/dgomezg/managing-users-data-with-spring-session