Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

SpringCamp 2016 - Apache Geode 와 Spring Data Gemfire

542 views

Published on

Apache Geode 와 Spring Data Gemfire, Spring Session Gemfire

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

SpringCamp 2016 - Apache Geode 와 Spring Data Gemfire

  1. 1. 2© 2015 Pivotal Software, Inc. All rights reserved. 2 Apache Geode 와 Spring 이창재 (jaylee@pivotal.io)| Pivotal | Advanced Platform Architects April, 2016
  2. 2. 3© 2015 Pivotal Software, Inc. All rights reserved. Agenda Ÿ Apache Geode 소개 Ÿ Spring Data Gemfire Ÿ Spring Session Ÿ Demo
  3. 3. 4© 2015 Pivotal Software, Inc. All rights reserved.
  4. 4. 5© 2015 Pivotal Software, Inc. All rights reserved.
  5. 5. 6© 2015 Pivotal Software, Inc. All rights reserved. Apache Geode 는? open source distributed, in- memory database for scale-out applications
  6. 6. 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
  7. 7. 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
  8. 8. 9© 2015 Pivotal Software, Inc. All rights reserved. Geode In-Memory 데이타 분산 VM 1 VM 2 VM 3
  9. 9. 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)
  10. 10. 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 가 죽으면?
  11. 11. 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)
  12. 12. 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 도 지원
  13. 13. 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
  14. 14. 15© 2015 Pivotal Software, Inc. All rights reserved. Geode – Key/Value (Map) Store (+ ααααααααα)
  15. 15. 16© 2015 Pivotal Software, Inc. All rights reserved. Geode – Key/Value (Map) Store (+ ααααααααα)
  16. 16. 17© 2015 Pivotal Software, Inc. All rights reserved. Gemfire vs Geode Ÿ Open Source Ÿ 상용 Support Ÿ 기능상의 차이 – WAN 상의 클러스터 복제 (M2 에 이미 포함) – Continuous Query (M2 에 이미 포함) – C++, C# 지원
  17. 17. 18© 2015 Pivotal Software, Inc. All rights reserved. Demo Repo https://github.com/eggboy/springcamp2016geode https://github.com/eggboy/gemfiredemo
  18. 18. 19© 2015 Pivotal Software, Inc. All rights reserved. Spring Data Gemfire
  19. 19. 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)
  20. 20. 21© 2015 Pivotal Software, Inc. All rights reserved. Apache Geode combined with Spring Data GemFire can be used as JSR-107 (JCache) caching provider + +
  21. 21. 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
  22. 22. 23© 2015 Pivotal Software, Inc. All rights reserved. Server 설정 Spring XML 기반 설정
  23. 23. 24© 2015 Pivotal Software, Inc. All rights reserved. Client 설정 Spring XML 기반 설정
  24. 24. 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”
  25. 25. 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" />
  26. 26. 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" />
  27. 27. 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”/>
  28. 28. 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">
  29. 29. 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
  30. 30. 31© 2015 Pivotal Software, Inc. All rights reserved. Spring Session 과 Geode
  31. 31. 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.
  32. 32. 33© 2015 Pivotal Software, Inc. All rights reserved. Spring Session Ÿ 일반적인 WAS 의 Clustering – SESSION Replication-> Overhead – 구성의 복잡 Ÿ HTTPSession 과 User 의 Object 들이 공존 – Session 이 차지하는 공간으로 인한 Heap 부족
  33. 33. 34© 2015 Pivotal Software, Inc. All rights reserved. Spring Session Ÿ 플랫폼에 독립적인 세션 관리 Ÿ Annotation 기반에 쉬운 설정 Ÿ Persistence Ÿ WebSocket 지원 Ÿ 지원하는 기술 – Redis – Geode – Hazelcast
  34. 34. 35© 2015 Pivotal Software, Inc. All rights reserved. Spring Session - @EnableGemFireHttpSession
  35. 35. 36© 2015 Pivotal Software, Inc. All rights reserved. Spring Session – Servlet Filter 출처 : http://www.slideshare.net/dgomezg/managing-users-data-with-spring-session

×