SlideShare uma empresa Scribd logo
1 de 69
Baixar para ler offline
제 13회 한국 스프링 사용자 모임 세미나

: 백기선

 13:00 ~ 13:40                Spring MVC를 손쉽게 테스트하기
: 윤성준

 13:50 ~ 14:30   RESTful API(including Mobile) with Spring 3.1

: 김흥래

 14:40 ~ 15:20                Spring 3.1에서 Ehcache 활용전략
: 석종일

 15:30 ~ 16:00                      SpringFramework in Scala
: 김영한

 16:10 ~ 16:50              Type-safe querying using Querydsl
SPRING 3.1에서
Ehcache 활용 전략

          김흥래
NHN INS 경영지원개발팀에서
             있습니다.
그룹웨어를 개발하고 있습니다.
                         발표자
자바카페(JAVACAFE)
자바카페(JAVACAFE) 커뮤니티에서
                 있습니다.
5년째 운영진으로 활동하고 있습니다      김흥래
AGENDA
  WARMING-UP
    Cache 개념잡기
    Ehcache 소개

  Ehcache 활용하기
    다양한 Architecture
    우리 서비스는?

  Ehcache 가이드
    기본사용법
    Spring 3.0
    Cache 동기화

        모니터링
  Cache 모니터링

  DEMO
WARMING-UP
WARMING-UP : CACHE 개념잡기

롱테일(LONG TAIL) 법칙




               (출처 http://www.longtail.com)

     의
  20%의 요구가 시스템의 80%의 리소스를 점유한다는 법칙
                   의

          데이터는                   향상시킬 있다.
  자주 사용되는 데이터는 Cache 사용으로 성능을 대폭 향상시킬 수 있다
WARMING-UP : CACHE 개념잡기

CACHE?
              데이터를
   평소 자주 사용되는 데이터를 저장해두는 임시 저장소
   생성에 많은 비용이 필요한 정보를 저장해두는 임시 저장소
                  정보를


      CPU L1, L2 Cache
      Disk Cache
      DNS Cache
      Query Cache
WARMING-UP : CACHE 개념잡기

웹서비스 관점의 CACHE
   웹 페이지 화면
      Browser Cache
      Apache Cache

   DB 조회 결과
      Ibatis Oscache

   공유 메모리
      Terracotta BigMemory

   Static 자원
      Ehcache

   비싼 비용의 연산 결과
WARMING-UP : CACHE 개념잡기

LOCAL CACHE vs GLOBAL CACHE
   Local Cache
    로컬 장비 내에서만 사용되는 캐시
    로컬 자원을 활용 (메모리, 디스크)
    빠른 결과
    다른 서버와 데이터 공유가 어려움


   Global Cache
    다수의 서버가 공유하는 캐시
    데이터 분산 저장 (확장성)
    로컬 캐시보다 느리다. (네트워크 트래픽)
    데이터 공유가 상대적으로 쉬움
WARMING-UP : CACHE 개념잡기

다양한 CACHE
WARMING-UP : CACHE 개념잡기

다양한 CACHE
WARMING-UP : Ehcache 소개

EHCACHE
   오픈소스 기반의 빠른 캐시 엔진
   JSR107 JCache 표준 지원
   경량의 간단한 Local Cache
              메모리,
              메모리 디스크)
   다양한 확장 지원 (메모리 디스크
                      복제)
   분산 캐시 지원 (동기 / 비동기 복제
             동기
WARMING-UP : Ehcache 소개

ENTERPRISE DATA CACHE




                (출처 http://www.ehcache.org)


                    가               를      있다.
  기업에서 사용하는 시스템의 70%가 직간접적으로 Ehcache를 사용하고 있다
WARMING-UP : Ehcache 소개

JSR107 JCACHE 완벽지원
   JCP (Java Community Process)
      자바 표준을 정의하는 표준화 과정
   JSR (Java Specification Requests)
      자바 Spec을 기술하는 공식 문서
   JSR107 JCACHE – Java Temporary Caching API
      자바 Cache Spec
                            지원한다.
   Ehcache는 JSR107 표준을 완벽하게 지원한다
          는
WARMING-UP : Ehcache 소개

EHCACHE BUNDLING




                (출처 http://www.ehcache.org)


     직접 사용하는 형태가 아니라 번들 형태로 사용되는 경우
                             크다.
     Hibernate에 의한 활용 비중이 가장 크다
              에
WARMING-UP : Ehcache 소개

TERRACOTTA 서버
   오픈소스 기반의 분산 객체 저장소
   JVM 클러스터링 프레임워크
   NAM (Natwork Attached Memory)
                     방지)
   BigMemory (FullGC 방지
                             복제)
   WAS 세션 클러스터링 (HttpSession 복제
   Session Grid, Data Grid
WARMING-UP : Ehcache 소개

EHCACHE ENTERPRISE 서버
   Ehcache 분산 캐시 기능 강화


   Replication Cache
    RMI Replicated Caching
    JGroups Replicated Caching
    JMS Replicated Caching


   Distributed Cache
    Terracotta Server Array
    CacheManager Sharing
WARMING-UP : Ehcache 소개

LICENCE
   Ehcache 배포판
      Commercial Version
      OpenSource Version

          를            로
   Ehcache를 Local Cache로
   사용 할 경우 기능상의 차이
       없음.
   점은 없음


   OpenSource 버전의 경우
   Apache 2.0 License
WARMING-UP : Ehcache 소개

EHCACHE VERSION 별 비중




                (출처 http://www.ehcache.org)


    다양한 버전이 아직 많이 사용되고 있다 있다.
                                   버전이다.
    현재 최신 버전은 2012년 11월에 배포된 2.6.2 버전이다
                  년 월에
WARMING-UP : Ehcache 소개

RELEASE NOTE
 2012. 11 : Ehcache 2.6.2 Released
 2012. 04 : Ehcache 2.5.2 Released
 2011. 11 : Ehcache 2.5 Released
 2011. 05 : Terracotta Joins Software AG
 2011. 04 : Ehcache 2.4.2 Released
 2010. 11 : BigMemory for Ehcache GA
 2009. 08 : Terracotta acquires Ehcache
EHCACHE 활용하기
Ehcache 활용하기 : 다양한 Architecture

서비스를 만들어 볼까요?
Ehcache 활용하기 : 다양한 Architecture

STAND ALONE



                                        Local
                              Session
                                        Cache


                              서버 (www.test.com)
Ehcache 활용하기 : 다양한 Architecture

STAND ALONE
Ehcache 활용하기 : 다양한 Architecture

STAND ALONE


        몰린다.
   사용자가 몰린다
        대로 늘려야겠다.
   서버를 2대로 늘려야겠다

          은     처리하지?
   Session은 어떻게 처리하지
Ehcache 활용하기 : 다양한 Architecture

STICKY SESSION


                                             Local
                                  Session
                                             Cache


                                  서버(www1.test.com)




                                             Local
                                  Session
                                             Cache
                       L4
                   www.test.com   서버 (www2.test.com)
Ehcache 활용하기 : 다양한 Architecture

STAND ALONE
Ehcache 활용하기 : 다양한 Architecture

STICKY SESSION


   서버가 2대라 좋긴 한데
        대라
   하나의 서버에 장애가 발생하면
   장애 서버의 Session 정보가
          버리네?
   전부 날라가 버리네

   서버간에 Session 정보를
         없을까?
   공유할 수 없을까
Ehcache 활용하기 : 다양한 Architecture

SESSION CLUSTERING


                                     Local
                          Session
                                     Cache


                           서버(www1.test.com)
                                               Session Clustering
                                               (Replication)


                                     Local
                          Session
                                     Cache
               L4
           www.test.com   서버 (www2.test.com)
Ehcache 활용하기 : 다양한 Architecture

SESSION CLUSTERING
Ehcache 활용하기 : 다양한 Architecture

SESSION CLUSTERING

           가    잘되네.
   Business가 너무 잘되네
   증가하는 사용자를 감당하기
   힘들다.           늘리자.
   힘들다 장비를 두 배로 늘리자

   어라????
   어라

   장비를 두 배로 늘렸는데
   성능은 더 떨어진 거 같아
               같아.
          문제지?
   도대체 뭐가 문제지
Ehcache 활용하기 : 다양한 Architecture

WEB SESSION


                                     Local
                          Session
                                     Cache


                           서버(www1.test.com)    Terracotta
                                               Web Session
                                                 Server


                                     Local
                          Session
                                     Cache
               L4
           www.test.com   서버 (www2.test.com)
Ehcache 활용하기 : 다양한 Architecture

WEB SESSION


           증가하네.
   사용자가 계속 증가하네
         늘리자.
   장비를 더 늘리자

   가만....
   가만

          이       걸까?
   Session이 꼭 필요한 걸까
Ehcache 활용하기 : 다양한 Architecture

AUTHENTICATION COOKIE


                                             Local
                                             Cache
     Cookie

                                  서버(www1.test.com)
     Cookie


                                             Local
     Cookie                                  Cache
                       L4
                   www.test.com   서버 (www2.test.com)
Ehcache 활용하기 : 다양한 Architecture

AUTHENTICATION COOKIE

          을
   Session을 사용하지 않으니까
   서버의 확장성은 좋은데
   정보를 사용자 Cookie에
                 에
          불안하네.
   저장하니 불안하네

          없을까?
   다른 방법은 없을까

   사용자 Unique한 정보는
             한
   어디에 저장해야 할까할까?
Ehcache 활용하기 : 다양한 Architecture

SSO + CACHE REPLICATION

                                                Local
                                                Cache


                                     서버(www1.test.com)
                                                          Cache Replication


                                                Local
                                                Cache

                          L4
                                     서버 (www2.test.com)
                      www.test.com
     Single Sign On
     Authentication
Ehcache 활용하기 : 다양한 Architecture

SSO + CACHE REPLICATION


         를
   Cookie를
   사용하지 않아서 좋긴 한데
   사용자 Unique한 정보를
             한
   실시간으로 복제하려니
                엄청나네..
   서버간의 트래픽이 엄청나네

               를 도입해볼까?
   Global Cache를 도입해볼까
Ehcache 활용하기 : 다양한 Architecture

GLOBAL CACHE

                                                Local
                                                Cache


                                     서버(www1.test.com)    Global
                                                          Cache


                                                Local
                                                Cache
                          L4
                      www.test.com   서버 (www2.test.com)
     Single Sign On
     Authentication
Ehcache 활용하기 : 다양한 Architecture

GLOBAL CACHE

   사용자 인증은
   Session대신에 SSO를 이용하고
          대신에    를

   사용자 Unique한 정보는
               한
   Global Cache에 저장하고
               에

   Static한 정보들은
         한
   Local Cache를 활용하니
              를

         좋아요.
   너무 너무 좋아요 ^^
Ehcache 활용하기 : 다양한 Architecture

우리서비스는?


                             Ehcache


                             Ehcache

          SSO                          Memcached




                             ...
                                         Cloud


                             Ehcache
                  L4
EHCACHE 가이드
Ehcache 가이드 : 기본사용법

개요
   라이브러리
      ehcache-core-2.5.2.jar

   환경설정 (ehcache.xml)
      Cache 객체명, Data Size, 유효기간, 동기화 정책

   CacheManager 생성
      모든 Cache 객체를 관리한다.

   Cache Operation
      Cache 객체 로드
      add(), get(), remove()


   캐시                                한다.”
  “캐시 대상이 되는 모든 객체는 Serializable 되어야 한다
Ehcache 가이드 : 기본사용법

MAVEN 설정
 <dependency>
       <groupId>net.sf.ehcache</groupId>
       <artifactId>ehcache-core</artifactId>
       <version>2.5.2</version>
 </dependency>




 Local Cache 용도로만 사용 할 경우
                             등록하면 된다.
 설정시 ehcache-core.jar 라이브러리만 등록하면 된다
Ehcache 가이드 : 기본사용법

환경설정 : 캐시 정책
Ehcache 가이드 : 기본사용법

환경설정 : 캐시 정책
 maxElementsInMemory = “20000” // 저장될 객체의 최대수
 eternal = “false” // 시간 설정 무시 옵션
 timeToIdleSeconds = “600” // 설정된 시간 동안 Idle 상태시 갱신 (10분)
                                                       분
                                                   시간)
 timeToLiveSeconds = “3600” // 설정된 시간 동안 유지 후 갱신 (1시간
                                                   시간
 overflowToDisk = “false” // 메모리 부족시 디스크 저장 옵션
 diskPersistent = “false” // 디스크 저장 사용 옵션
 memoryStoreEvictionPolicy = “LRU” // 데이터 제거 알고리즘 옵션
 statistics = “true” // JMX 통계정보 갱신 옵션
Ehcache 가이드 : 기본사용법

CacheManager 생성
   모든 Cache 객체는 CacheManager에 의해서 관리
                            에
                생성시에
   CacheManager 생성시에 Singleton Mode와 Instance Mode
                                   와
   2가지 Mode를 지원
    가지      를

   // Singleton Mode
   CacheManager.newInstance();
   String[] cacheNames = manager.getCacheNames();


   // Instance Mode
   CacheManager manager1 =
         CacheManager.newInstance("src/config/ehcache1.xml");
   CacheManager manager2 =
         CacheManager.newInstance("src/config/ehcache2.xml");
   String[] cacheNamesForManager1 = manager1.getCacheNames();
   String[] cacheNamesForManager2 = manager2.getCacheNames();
Ehcache 가이드 : 기본사용법

CACHE OPERATION
                                 한다.
   모든 Cache 객체는 Serializable 되어야 한다
   만약 Serializable 되지 않은 객체가 디스크에 저장되면 정상적
   으로 저장되지 않는다 않는다.


   // Add, Get
   CacheManager singletonManager = CacheManager.create();
   singletonManager.addCache("testCache");
   Cache test = singletonManager.getCache("testCache");


   // Remove
   CacheManager singletonManager = CacheManager.create();
   singletonManager.removeCache("sampleCache1");
Ehcache 가이드 : 기본사용법

CACHE 관리정보 조회
                                있다.
   사용중인 Cache 객체의 리소스 사용량을 구할 수 있다
              제공한다.
   다양한 통계 정보도 제공한다

   Cache cache = manager.getCache("sampleCache1");

   // 리소스 사용량
   int elementsInMemory = cache.getSize();
   long elementsInMemory = cache.getMemoryStoreSize();
   long elementsInMemory = cache.getDiskStoreSize();

   // 통계 정보
   int hits = cache.getHitCount();
   int hits = cache.getMemoryStoreHitCount();
   int hits = cache.getDiskStoreCount();
   int hits = cache.getMissCountNotFound();
   int hits = cache.getMissCountExpired();
Ehcache 가이드 : SPRING 3.0

SPRING 3.0
    Spring Framework 기반의 캐시 추상화 제공 (CacheManager)
    Ehcache-Spring Integration을 이용한 Annotation 제공
                              을
    (Google Project)
    http://code.google.com/p/ehcache-spring-annotations/




   이제 그만!
  “이제 그만
                             을 사용합시다.”
     고민하지 말고 이제부터는 Spring 3.1을 사용합시다
Ehcache 가이드 : SPRING 3.1

SPRING 3.1
    기본적인 캐시 구현체 제공
       JDK ConcurrentMap-based Cache
       Ehcache-based Cache

    Spring Framework 차원의 Annotation 제공
Ehcache 가이드 : SPRING 3.1

CONCURRENTMAP-BASED CACHE
       에
    JDK에 기본 포함된 ConcurrentMap을 이용하여 캐시
                             을
    java.util.concurrent.ConcurrentMap
    설정이 비교적 간단
    기능이 단순
    동기화가 필요없는 간단한 Cache 모델에 적합
Ehcache 가이드 : SPRING 3.1

EHCACHE-BASED CACHE
          를
    Ehache를 이용하여 캐시
    StandAlone 캐시서버
    Hibernate L2 Cache
       나
    JMX나 패킷을 이용한 데이터 동기화
    Terracotta Server Array를 이용한 Distributed Cache 제공
                           를
    RMI를 이용한 Replication 제공
       를
Ehcache 가이드 : SPRING 3.1

CACHE ANNOTATION
    @Cacheable
    @CacheEvict
    캐시 설정을 위한 SpEL 제공
    Custom Annotation 사용가능
Ehcache 가이드 : SPRING 3.1

CACHE ANNOTATION
 @Cacheable(value="sampleCache", key="#boardId")
 public List<Board> findBoardList(String boardId) {
     return boardRepository.selectBoardList(boardId);
 }


 @CacheEvict(value="sampleCache", key="#boardId")
 public void editBoard(Board board) {
     boardRepository.updateBoard(board);
 }
Ehcache 가이드 : Cache 동기화

CACHE REPLICATION
Ehcache 가이드 : Cache 동기화

캐시 동기화 방식
          의
   Ehcache의 경우 데이터 복제를 위한 3가지 방식을 지원
                           가지


   RMI 방식
      자바에서 기본적으로 제공하는 RMI를 사용
      검증된 안전한 기술
   JGroups 방식
      UDP 기반의 라이브러리
      JBoss Session Clustering
   JMS 방식
      JMS 메시지를 이용하여 데이터 동기화
Ehcache 가이드 : Cache 동기화

캐시 동기화 방식 (RMI 방식)
Ehcache 가이드 : Cache 동기화

환경설정 : NODE 식별 정책 (RMI 방식)
Ehcache 가이드 : Cache 동기화

환경설정 : NODE 식별 정책 (RMI 방식)
   CacheManagerPeerProvider
      Node 식별을 위해 필요한 설정
      RMICacheManagerPeerProviderFactory 제공

   CacheManagerPeerListener
      데이터 수신을 위해 필요한 설정
      RMICacheManagerPeerListenerFactory 제공


   CacheEventLisenver
      각 Cache 별로 동기화 방식 설정
Ehcache 가이드 : Cache 동기화

환경설정 : NODE 식별 정책 (RMI 방식)
                                      있다.
   Node 식별을 위해 UDP 방식이나 TCP 방식을 선택할 수 있다


   UDP 방식
      peerDiscovery = automatic
      Node 추가시 설정파일의 변경이 필요없다.
      네트워크에서 멀티캐스트를 허용해야 한다.

   TCP 방식
      peerDiscovery = manual
      Node 추가시 설정파일의 변경이 필요하다.
Ehcache 가이드 : Cache 동기화

환경설정 : 캐시 동기화 정책 (RMI 방식)
Ehcache 가이드 : Cache 동기화

환경설정 : 캐시 동기화 정책 (RMI 방식)
 replicatePuts = “false” // 정보가 추가되었을 때 동기화 여부
 replicateUpdates = “false” // 정보가 수정되었을 때 동기화 여부
 replicateRemovals = “true” // 정보가 삭제되었을 때 동기화 여부
 replicateAsynchronously = “false” // 동기화 작업의 Async 여부
 replicateUpdatesViaCapy = “false” // 복제 데이터를 보낼지 삭제
 메시지를 보낼지 여부
CACHE 모니터링
CACHE 모니터링

TOMCAT JMX 옵션
 -Dcom.sun.management.jmxremote
 -Dcom.sun.management.jmxremote.port = 18001
 -Dcom.sun.management.jmxremote.ssl = false
 -Dcom.sun.management.jmxremote.authenticate = true
 -Dcom.sun.management.jmxremote.password.file =
       /home1/irteam/apps/tomcat/conf/jmxremote.password
 -Dcom.sun.management.jmxremote.access.file =
       /home1/irteam/apps/tomcat/conf/jmxremote.access
CACHE 모니터링

MBean 설정
 <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" >
    <property name="configLocation" value="classpath:ehcache.xml"></property>
    <property name="shared" value="true"/>
 </bean>


 <bean id="mbeanServer“
      class="org.springframework.jmx.support.MBeanServerFactoryBean">
    <property name="locateExistingServerIfPossible" value="true"/>
 </bean>


 <bean id="managementService" class="net.sf.ehcache.management.ManagementService" init-method="init">
    <constructor-arg ref="ehcache"/>
    <constructor-arg ref="mbeanServer"/>
    <constructor-arg index="2" value="true"/>
    <constructor-arg index="3" value="true"/>
    <constructor-arg index="4" value="true"/>
    <constructor-arg index="5" value="true"/>
 </bean>
CACHE 모니터링

Statistics 옵션
 <cache name="sampleCache"
            maxElementsInMemory="20000"
            eternal="false"
            timeToIdleSeconds="300"
            timeToLiveSeconds="600"
            overflowToDisk="false"
            diskPersistent="false"
            diskExpiryThreadIntervalSeconds="120"
            memoryStoreEvictionPolicy="LRU"
            statistics="true">
 </cache>
DEMO
QUIZ

오늘의 Quiz



Spring 3.1에서 캐쉬 생성을 위한
          에서
          은
Annotation은 (     이다.
                ) 이다
DEMO

Special Thanks.




                다운받으세요.
소스는 아래 SVN 서버에서 다운받으세요
https://javacafe-demo.googlecode.com/svn

Mais conteúdo relacionado

Mais procurados

Content Management With Apache Jackrabbit
Content Management With Apache JackrabbitContent Management With Apache Jackrabbit
Content Management With Apache JackrabbitJukka Zitting
 
초보자를 위한 분산 캐시 이야기
초보자를 위한 분산 캐시 이야기초보자를 위한 분산 캐시 이야기
초보자를 위한 분산 캐시 이야기OnGameServer
 
Quick flask an intro to flask
Quick flask   an intro to flaskQuick flask   an intro to flask
Quick flask an intro to flaskjuzten
 
Cours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partieCours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partiekadzaki
 
소프트웨어 아키텍처 문서화
소프트웨어 아키텍처 문서화소프트웨어 아키텍처 문서화
소프트웨어 아키텍처 문서화영기 김
 
Ibm power ha v7 technical deep dive workshop
Ibm power ha v7 technical deep dive workshopIbm power ha v7 technical deep dive workshop
Ibm power ha v7 technical deep dive workshopsolarisyougood
 
Virtualization in cloud
Virtualization in cloudVirtualization in cloud
Virtualization in cloudAshok Kumar
 
Automated Deployments with Ansible
Automated Deployments with AnsibleAutomated Deployments with Ansible
Automated Deployments with AnsibleMartin Etmajer
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해Terry Cho
 
Arcsight ESM Support Matrix
Arcsight ESM Support MatrixArcsight ESM Support Matrix
Arcsight ESM Support MatrixProtect724
 
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항Ji-Woong Choi
 
[B25] 【詳解】インメモリーデータベース SAP HANA:永続化の仕組みと障害/災害対応を踏まえた運用を理解しよう!by Toshihisa Hanaki
[B25] 【詳解】インメモリーデータベース SAP HANA:永続化の仕組みと障害/災害対応を踏まえた運用を理解しよう!by Toshihisa Hanaki[B25] 【詳解】インメモリーデータベース SAP HANA:永続化の仕組みと障害/災害対応を踏まえた運用を理解しよう!by Toshihisa Hanaki
[B25] 【詳解】インメモリーデータベース SAP HANA:永続化の仕組みと障害/災害対応を踏まえた運用を理解しよう!by Toshihisa HanakiInsight Technology, Inc.
 
High Availability Infrastructure for Cloud Computing
High Availability Infrastructure for Cloud ComputingHigh Availability Infrastructure for Cloud Computing
High Availability Infrastructure for Cloud ComputingBob Rhubart
 
MongoDB at eBay
MongoDB at eBayMongoDB at eBay
MongoDB at eBayMongoDB
 
VMware vSphere Vs. Microsoft Hyper-V: A Technical Analysis
VMware vSphere Vs. Microsoft Hyper-V: A Technical AnalysisVMware vSphere Vs. Microsoft Hyper-V: A Technical Analysis
VMware vSphere Vs. Microsoft Hyper-V: A Technical AnalysisCorporate Technologies
 
tow nodes Oracle 12c RAC on virtualbox
tow nodes Oracle 12c RAC on virtualboxtow nodes Oracle 12c RAC on virtualbox
tow nodes Oracle 12c RAC on virtualboxjustinit
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03Changyol BAEK
 

Mais procurados (20)

Content Management With Apache Jackrabbit
Content Management With Apache JackrabbitContent Management With Apache Jackrabbit
Content Management With Apache Jackrabbit
 
초보자를 위한 분산 캐시 이야기
초보자를 위한 분산 캐시 이야기초보자를 위한 분산 캐시 이야기
초보자를 위한 분산 캐시 이야기
 
Quick flask an intro to flask
Quick flask   an intro to flaskQuick flask   an intro to flask
Quick flask an intro to flask
 
03.Ansible 소개
03.Ansible 소개03.Ansible 소개
03.Ansible 소개
 
Cours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partieCours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partie
 
소프트웨어 아키텍처 문서화
소프트웨어 아키텍처 문서화소프트웨어 아키텍처 문서화
소프트웨어 아키텍처 문서화
 
Ibm power ha v7 technical deep dive workshop
Ibm power ha v7 technical deep dive workshopIbm power ha v7 technical deep dive workshop
Ibm power ha v7 technical deep dive workshop
 
Virtualization in cloud
Virtualization in cloudVirtualization in cloud
Virtualization in cloud
 
Automated Deployments with Ansible
Automated Deployments with AnsibleAutomated Deployments with Ansible
Automated Deployments with Ansible
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
 
Arcsight ESM Support Matrix
Arcsight ESM Support MatrixArcsight ESM Support Matrix
Arcsight ESM Support Matrix
 
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
 
[B25] 【詳解】インメモリーデータベース SAP HANA:永続化の仕組みと障害/災害対応を踏まえた運用を理解しよう!by Toshihisa Hanaki
[B25] 【詳解】インメモリーデータベース SAP HANA:永続化の仕組みと障害/災害対応を踏まえた運用を理解しよう!by Toshihisa Hanaki[B25] 【詳解】インメモリーデータベース SAP HANA:永続化の仕組みと障害/災害対応を踏まえた運用を理解しよう!by Toshihisa Hanaki
[B25] 【詳解】インメモリーデータベース SAP HANA:永続化の仕組みと障害/災害対応を踏まえた運用を理解しよう!by Toshihisa Hanaki
 
SQL Server 入門
SQL Server 入門SQL Server 入門
SQL Server 入門
 
Maven
MavenMaven
Maven
 
High Availability Infrastructure for Cloud Computing
High Availability Infrastructure for Cloud ComputingHigh Availability Infrastructure for Cloud Computing
High Availability Infrastructure for Cloud Computing
 
MongoDB at eBay
MongoDB at eBayMongoDB at eBay
MongoDB at eBay
 
VMware vSphere Vs. Microsoft Hyper-V: A Technical Analysis
VMware vSphere Vs. Microsoft Hyper-V: A Technical AnalysisVMware vSphere Vs. Microsoft Hyper-V: A Technical Analysis
VMware vSphere Vs. Microsoft Hyper-V: A Technical Analysis
 
tow nodes Oracle 12c RAC on virtualbox
tow nodes Oracle 12c RAC on virtualboxtow nodes Oracle 12c RAC on virtualbox
tow nodes Oracle 12c RAC on virtualbox
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03
 

Semelhante a Spring 3.1에서 ehcache 활용 전략

Backend Master | 2.2 Cache - Ehcache
Backend Master | 2.2 Cache - EhcacheBackend Master | 2.2 Cache - Ehcache
Backend Master | 2.2 Cache - EhcacheKyunghun Jeon
 
오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석Jennifer Noh
 
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인VMware Tanzu Korea
 
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경NAVER Engineering
 
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)용호 최
 
Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1Jinkyoung Kim
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호용호 최
 
아마존 Aws 서비스_연구
아마존 Aws 서비스_연구아마존 Aws 서비스_연구
아마존 Aws 서비스_연구knight1128
 
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XpressEngine
 
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)Amazon Web Services Korea
 
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)Amazon Web Services Korea
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack CommunityOpen Source Consulting
 
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning Ji-Woong Choi
 
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기Ian Choi
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스NAVER D2
 
Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현병태 정
 
Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017
Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017
Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017Amazon Web Services Korea
 
PHPStorm - tool for php
PHPStorm - tool for phpPHPStorm - tool for php
PHPStorm - tool for phpSungbum Hong
 

Semelhante a Spring 3.1에서 ehcache 활용 전략 (20)

Backend Master | 2.2 Cache - Ehcache
Backend Master | 2.2 Cache - EhcacheBackend Master | 2.2 Cache - Ehcache
Backend Master | 2.2 Cache - Ehcache
 
오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석
 
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
 
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
 
OPENMARU APM 브로셔
OPENMARU APM 브로셔OPENMARU APM 브로셔
OPENMARU APM 브로셔
 
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
 
Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호
 
아마존 Aws 서비스_연구
아마존 Aws 서비스_연구아마존 Aws 서비스_연구
아마존 Aws 서비스_연구
 
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
 
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
 
steeleye Replication
steeleye Replication steeleye Replication
steeleye Replication
 
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community
 
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
 
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
 
Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현
 
Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017
Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017
Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017
 
PHPStorm - tool for php
PHPStorm - tool for phpPHPStorm - tool for php
PHPStorm - tool for php
 

Mais de 흥래 김

생초보를 위한 한글 형태소 분석하기
생초보를 위한 한글 형태소 분석하기생초보를 위한 한글 형태소 분석하기
생초보를 위한 한글 형태소 분석하기흥래 김
 
검색엔진과 DB Like 검색의 결과가 다른 이유
검색엔진과 DB Like 검색의 결과가 다른 이유검색엔진과 DB Like 검색의 결과가 다른 이유
검색엔진과 DB Like 검색의 결과가 다른 이유흥래 김
 
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기흥래 김
 
한글 자동완성 구현하기
한글 자동완성 구현하기한글 자동완성 구현하기
한글 자동완성 구현하기흥래 김
 
한글 자모 분석 원리
한글 자모 분석 원리한글 자모 분석 원리
한글 자모 분석 원리흥래 김
 
한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기흥래 김
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기흥래 김
 
Spring di chapter2
Spring di chapter2Spring di chapter2
Spring di chapter2흥래 김
 
Spring di chapter1
Spring di chapter1Spring di chapter1
Spring di chapter1흥래 김
 
5강 코드효율성
5강 코드효율성5강 코드효율성
5강 코드효율성흥래 김
 
2. lambda expression
2. lambda expression2. lambda expression
2. lambda expression흥래 김
 
1. introduction to java8
1. introduction to java81. introduction to java8
1. introduction to java8흥래 김
 
Spring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msaSpring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msa흥래 김
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE 흥래 김
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy흥래 김
 
Apache http component
Apache http componentApache http component
Apache http component흥래 김
 
플랫폼 통합을 위한 Client Module 개발 & 배포
플랫폼 통합을 위한 Client Module 개발 & 배포플랫폼 통합을 위한 Client Module 개발 & 배포
플랫폼 통합을 위한 Client Module 개발 & 배포흥래 김
 
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화흥래 김
 
[2012 자바카페 OPEN 세미나] Introduction to google guava
[2012 자바카페 OPEN 세미나] Introduction to google guava[2012 자바카페 OPEN 세미나] Introduction to google guava
[2012 자바카페 OPEN 세미나] Introduction to google guava흥래 김
 

Mais de 흥래 김 (20)

생초보를 위한 한글 형태소 분석하기
생초보를 위한 한글 형태소 분석하기생초보를 위한 한글 형태소 분석하기
생초보를 위한 한글 형태소 분석하기
 
검색엔진과 DB Like 검색의 결과가 다른 이유
검색엔진과 DB Like 검색의 결과가 다른 이유검색엔진과 DB Like 검색의 결과가 다른 이유
검색엔진과 DB Like 검색의 결과가 다른 이유
 
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
 
한글 자동완성 구현하기
한글 자동완성 구현하기한글 자동완성 구현하기
한글 자동완성 구현하기
 
한글 자모 분석 원리
한글 자모 분석 원리한글 자모 분석 원리
한글 자모 분석 원리
 
한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
 
Spring di chapter2
Spring di chapter2Spring di chapter2
Spring di chapter2
 
Spring di chapter1
Spring di chapter1Spring di chapter1
Spring di chapter1
 
5강 코드효율성
5강 코드효율성5강 코드효율성
5강 코드효율성
 
3. stream api
3. stream api3. stream api
3. stream api
 
2. lambda expression
2. lambda expression2. lambda expression
2. lambda expression
 
1. introduction to java8
1. introduction to java81. introduction to java8
1. introduction to java8
 
Spring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msaSpring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msa
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy
 
Apache http component
Apache http componentApache http component
Apache http component
 
플랫폼 통합을 위한 Client Module 개발 & 배포
플랫폼 통합을 위한 Client Module 개발 & 배포플랫폼 통합을 위한 Client Module 개발 & 배포
플랫폼 통합을 위한 Client Module 개발 & 배포
 
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
 
[2012 자바카페 OPEN 세미나] Introduction to google guava
[2012 자바카페 OPEN 세미나] Introduction to google guava[2012 자바카페 OPEN 세미나] Introduction to google guava
[2012 자바카페 OPEN 세미나] Introduction to google guava
 

Spring 3.1에서 ehcache 활용 전략

  • 1. 제 13회 한국 스프링 사용자 모임 세미나 : 백기선 13:00 ~ 13:40 Spring MVC를 손쉽게 테스트하기 : 윤성준 13:50 ~ 14:30 RESTful API(including Mobile) with Spring 3.1 : 김흥래 14:40 ~ 15:20 Spring 3.1에서 Ehcache 활용전략 : 석종일 15:30 ~ 16:00 SpringFramework in Scala : 김영한 16:10 ~ 16:50 Type-safe querying using Querydsl
  • 3. NHN INS 경영지원개발팀에서 있습니다. 그룹웨어를 개발하고 있습니다. 발표자 자바카페(JAVACAFE) 자바카페(JAVACAFE) 커뮤니티에서 있습니다. 5년째 운영진으로 활동하고 있습니다 김흥래
  • 4. AGENDA WARMING-UP Cache 개념잡기 Ehcache 소개 Ehcache 활용하기 다양한 Architecture 우리 서비스는? Ehcache 가이드 기본사용법 Spring 3.0 Cache 동기화 모니터링 Cache 모니터링 DEMO
  • 6. WARMING-UP : CACHE 개념잡기 롱테일(LONG TAIL) 법칙 (출처 http://www.longtail.com) 의 20%의 요구가 시스템의 80%의 리소스를 점유한다는 법칙 의 데이터는 향상시킬 있다. 자주 사용되는 데이터는 Cache 사용으로 성능을 대폭 향상시킬 수 있다
  • 7. WARMING-UP : CACHE 개념잡기 CACHE? 데이터를 평소 자주 사용되는 데이터를 저장해두는 임시 저장소 생성에 많은 비용이 필요한 정보를 저장해두는 임시 저장소 정보를 CPU L1, L2 Cache Disk Cache DNS Cache Query Cache
  • 8. WARMING-UP : CACHE 개념잡기 웹서비스 관점의 CACHE 웹 페이지 화면 Browser Cache Apache Cache DB 조회 결과 Ibatis Oscache 공유 메모리 Terracotta BigMemory Static 자원 Ehcache 비싼 비용의 연산 결과
  • 9. WARMING-UP : CACHE 개념잡기 LOCAL CACHE vs GLOBAL CACHE Local Cache 로컬 장비 내에서만 사용되는 캐시 로컬 자원을 활용 (메모리, 디스크) 빠른 결과 다른 서버와 데이터 공유가 어려움 Global Cache 다수의 서버가 공유하는 캐시 데이터 분산 저장 (확장성) 로컬 캐시보다 느리다. (네트워크 트래픽) 데이터 공유가 상대적으로 쉬움
  • 10. WARMING-UP : CACHE 개념잡기 다양한 CACHE
  • 11. WARMING-UP : CACHE 개념잡기 다양한 CACHE
  • 12. WARMING-UP : Ehcache 소개 EHCACHE 오픈소스 기반의 빠른 캐시 엔진 JSR107 JCache 표준 지원 경량의 간단한 Local Cache 메모리, 메모리 디스크) 다양한 확장 지원 (메모리 디스크 복제) 분산 캐시 지원 (동기 / 비동기 복제 동기
  • 13. WARMING-UP : Ehcache 소개 ENTERPRISE DATA CACHE (출처 http://www.ehcache.org) 가 를 있다. 기업에서 사용하는 시스템의 70%가 직간접적으로 Ehcache를 사용하고 있다
  • 14. WARMING-UP : Ehcache 소개 JSR107 JCACHE 완벽지원 JCP (Java Community Process) 자바 표준을 정의하는 표준화 과정 JSR (Java Specification Requests) 자바 Spec을 기술하는 공식 문서 JSR107 JCACHE – Java Temporary Caching API 자바 Cache Spec 지원한다. Ehcache는 JSR107 표준을 완벽하게 지원한다 는
  • 15. WARMING-UP : Ehcache 소개 EHCACHE BUNDLING (출처 http://www.ehcache.org) 직접 사용하는 형태가 아니라 번들 형태로 사용되는 경우 크다. Hibernate에 의한 활용 비중이 가장 크다 에
  • 16. WARMING-UP : Ehcache 소개 TERRACOTTA 서버 오픈소스 기반의 분산 객체 저장소 JVM 클러스터링 프레임워크 NAM (Natwork Attached Memory) 방지) BigMemory (FullGC 방지 복제) WAS 세션 클러스터링 (HttpSession 복제 Session Grid, Data Grid
  • 17. WARMING-UP : Ehcache 소개 EHCACHE ENTERPRISE 서버 Ehcache 분산 캐시 기능 강화 Replication Cache RMI Replicated Caching JGroups Replicated Caching JMS Replicated Caching Distributed Cache Terracotta Server Array CacheManager Sharing
  • 18. WARMING-UP : Ehcache 소개 LICENCE Ehcache 배포판 Commercial Version OpenSource Version 를 로 Ehcache를 Local Cache로 사용 할 경우 기능상의 차이 없음. 점은 없음 OpenSource 버전의 경우 Apache 2.0 License
  • 19. WARMING-UP : Ehcache 소개 EHCACHE VERSION 별 비중 (출처 http://www.ehcache.org) 다양한 버전이 아직 많이 사용되고 있다 있다. 버전이다. 현재 최신 버전은 2012년 11월에 배포된 2.6.2 버전이다 년 월에
  • 20. WARMING-UP : Ehcache 소개 RELEASE NOTE 2012. 11 : Ehcache 2.6.2 Released 2012. 04 : Ehcache 2.5.2 Released 2011. 11 : Ehcache 2.5 Released 2011. 05 : Terracotta Joins Software AG 2011. 04 : Ehcache 2.4.2 Released 2010. 11 : BigMemory for Ehcache GA 2009. 08 : Terracotta acquires Ehcache
  • 22. Ehcache 활용하기 : 다양한 Architecture 서비스를 만들어 볼까요?
  • 23. Ehcache 활용하기 : 다양한 Architecture STAND ALONE Local Session Cache 서버 (www.test.com)
  • 24. Ehcache 활용하기 : 다양한 Architecture STAND ALONE
  • 25. Ehcache 활용하기 : 다양한 Architecture STAND ALONE 몰린다. 사용자가 몰린다 대로 늘려야겠다. 서버를 2대로 늘려야겠다 은 처리하지? Session은 어떻게 처리하지
  • 26. Ehcache 활용하기 : 다양한 Architecture STICKY SESSION Local Session Cache 서버(www1.test.com) Local Session Cache L4 www.test.com 서버 (www2.test.com)
  • 27. Ehcache 활용하기 : 다양한 Architecture STAND ALONE
  • 28. Ehcache 활용하기 : 다양한 Architecture STICKY SESSION 서버가 2대라 좋긴 한데 대라 하나의 서버에 장애가 발생하면 장애 서버의 Session 정보가 버리네? 전부 날라가 버리네 서버간에 Session 정보를 없을까? 공유할 수 없을까
  • 29. Ehcache 활용하기 : 다양한 Architecture SESSION CLUSTERING Local Session Cache 서버(www1.test.com) Session Clustering (Replication) Local Session Cache L4 www.test.com 서버 (www2.test.com)
  • 30. Ehcache 활용하기 : 다양한 Architecture SESSION CLUSTERING
  • 31. Ehcache 활용하기 : 다양한 Architecture SESSION CLUSTERING 가 잘되네. Business가 너무 잘되네 증가하는 사용자를 감당하기 힘들다. 늘리자. 힘들다 장비를 두 배로 늘리자 어라???? 어라 장비를 두 배로 늘렸는데 성능은 더 떨어진 거 같아 같아. 문제지? 도대체 뭐가 문제지
  • 32. Ehcache 활용하기 : 다양한 Architecture WEB SESSION Local Session Cache 서버(www1.test.com) Terracotta Web Session Server Local Session Cache L4 www.test.com 서버 (www2.test.com)
  • 33. Ehcache 활용하기 : 다양한 Architecture WEB SESSION 증가하네. 사용자가 계속 증가하네 늘리자. 장비를 더 늘리자 가만.... 가만 이 걸까? Session이 꼭 필요한 걸까
  • 34. Ehcache 활용하기 : 다양한 Architecture AUTHENTICATION COOKIE Local Cache Cookie 서버(www1.test.com) Cookie Local Cookie Cache L4 www.test.com 서버 (www2.test.com)
  • 35. Ehcache 활용하기 : 다양한 Architecture AUTHENTICATION COOKIE 을 Session을 사용하지 않으니까 서버의 확장성은 좋은데 정보를 사용자 Cookie에 에 불안하네. 저장하니 불안하네 없을까? 다른 방법은 없을까 사용자 Unique한 정보는 한 어디에 저장해야 할까할까?
  • 36. Ehcache 활용하기 : 다양한 Architecture SSO + CACHE REPLICATION Local Cache 서버(www1.test.com) Cache Replication Local Cache L4 서버 (www2.test.com) www.test.com Single Sign On Authentication
  • 37. Ehcache 활용하기 : 다양한 Architecture SSO + CACHE REPLICATION 를 Cookie를 사용하지 않아서 좋긴 한데 사용자 Unique한 정보를 한 실시간으로 복제하려니 엄청나네.. 서버간의 트래픽이 엄청나네 를 도입해볼까? Global Cache를 도입해볼까
  • 38. Ehcache 활용하기 : 다양한 Architecture GLOBAL CACHE Local Cache 서버(www1.test.com) Global Cache Local Cache L4 www.test.com 서버 (www2.test.com) Single Sign On Authentication
  • 39. Ehcache 활용하기 : 다양한 Architecture GLOBAL CACHE 사용자 인증은 Session대신에 SSO를 이용하고 대신에 를 사용자 Unique한 정보는 한 Global Cache에 저장하고 에 Static한 정보들은 한 Local Cache를 활용하니 를 좋아요. 너무 너무 좋아요 ^^
  • 40. Ehcache 활용하기 : 다양한 Architecture 우리서비스는? Ehcache Ehcache SSO Memcached ... Cloud Ehcache L4
  • 42. Ehcache 가이드 : 기본사용법 개요 라이브러리 ehcache-core-2.5.2.jar 환경설정 (ehcache.xml) Cache 객체명, Data Size, 유효기간, 동기화 정책 CacheManager 생성 모든 Cache 객체를 관리한다. Cache Operation Cache 객체 로드 add(), get(), remove() 캐시 한다.” “캐시 대상이 되는 모든 객체는 Serializable 되어야 한다
  • 43. Ehcache 가이드 : 기본사용법 MAVEN 설정 <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>2.5.2</version> </dependency> Local Cache 용도로만 사용 할 경우 등록하면 된다. 설정시 ehcache-core.jar 라이브러리만 등록하면 된다
  • 44. Ehcache 가이드 : 기본사용법 환경설정 : 캐시 정책
  • 45. Ehcache 가이드 : 기본사용법 환경설정 : 캐시 정책 maxElementsInMemory = “20000” // 저장될 객체의 최대수 eternal = “false” // 시간 설정 무시 옵션 timeToIdleSeconds = “600” // 설정된 시간 동안 Idle 상태시 갱신 (10분) 분 시간) timeToLiveSeconds = “3600” // 설정된 시간 동안 유지 후 갱신 (1시간 시간 overflowToDisk = “false” // 메모리 부족시 디스크 저장 옵션 diskPersistent = “false” // 디스크 저장 사용 옵션 memoryStoreEvictionPolicy = “LRU” // 데이터 제거 알고리즘 옵션 statistics = “true” // JMX 통계정보 갱신 옵션
  • 46. Ehcache 가이드 : 기본사용법 CacheManager 생성 모든 Cache 객체는 CacheManager에 의해서 관리 에 생성시에 CacheManager 생성시에 Singleton Mode와 Instance Mode 와 2가지 Mode를 지원 가지 를 // Singleton Mode CacheManager.newInstance(); String[] cacheNames = manager.getCacheNames(); // Instance Mode CacheManager manager1 = CacheManager.newInstance("src/config/ehcache1.xml"); CacheManager manager2 = CacheManager.newInstance("src/config/ehcache2.xml"); String[] cacheNamesForManager1 = manager1.getCacheNames(); String[] cacheNamesForManager2 = manager2.getCacheNames();
  • 47. Ehcache 가이드 : 기본사용법 CACHE OPERATION 한다. 모든 Cache 객체는 Serializable 되어야 한다 만약 Serializable 되지 않은 객체가 디스크에 저장되면 정상적 으로 저장되지 않는다 않는다. // Add, Get CacheManager singletonManager = CacheManager.create(); singletonManager.addCache("testCache"); Cache test = singletonManager.getCache("testCache"); // Remove CacheManager singletonManager = CacheManager.create(); singletonManager.removeCache("sampleCache1");
  • 48. Ehcache 가이드 : 기본사용법 CACHE 관리정보 조회 있다. 사용중인 Cache 객체의 리소스 사용량을 구할 수 있다 제공한다. 다양한 통계 정보도 제공한다 Cache cache = manager.getCache("sampleCache1"); // 리소스 사용량 int elementsInMemory = cache.getSize(); long elementsInMemory = cache.getMemoryStoreSize(); long elementsInMemory = cache.getDiskStoreSize(); // 통계 정보 int hits = cache.getHitCount(); int hits = cache.getMemoryStoreHitCount(); int hits = cache.getDiskStoreCount(); int hits = cache.getMissCountNotFound(); int hits = cache.getMissCountExpired();
  • 49. Ehcache 가이드 : SPRING 3.0 SPRING 3.0 Spring Framework 기반의 캐시 추상화 제공 (CacheManager) Ehcache-Spring Integration을 이용한 Annotation 제공 을 (Google Project) http://code.google.com/p/ehcache-spring-annotations/ 이제 그만! “이제 그만 을 사용합시다.” 고민하지 말고 이제부터는 Spring 3.1을 사용합시다
  • 50. Ehcache 가이드 : SPRING 3.1 SPRING 3.1 기본적인 캐시 구현체 제공 JDK ConcurrentMap-based Cache Ehcache-based Cache Spring Framework 차원의 Annotation 제공
  • 51. Ehcache 가이드 : SPRING 3.1 CONCURRENTMAP-BASED CACHE 에 JDK에 기본 포함된 ConcurrentMap을 이용하여 캐시 을 java.util.concurrent.ConcurrentMap 설정이 비교적 간단 기능이 단순 동기화가 필요없는 간단한 Cache 모델에 적합
  • 52. Ehcache 가이드 : SPRING 3.1 EHCACHE-BASED CACHE 를 Ehache를 이용하여 캐시 StandAlone 캐시서버 Hibernate L2 Cache 나 JMX나 패킷을 이용한 데이터 동기화 Terracotta Server Array를 이용한 Distributed Cache 제공 를 RMI를 이용한 Replication 제공 를
  • 53. Ehcache 가이드 : SPRING 3.1 CACHE ANNOTATION @Cacheable @CacheEvict 캐시 설정을 위한 SpEL 제공 Custom Annotation 사용가능
  • 54. Ehcache 가이드 : SPRING 3.1 CACHE ANNOTATION @Cacheable(value="sampleCache", key="#boardId") public List<Board> findBoardList(String boardId) { return boardRepository.selectBoardList(boardId); } @CacheEvict(value="sampleCache", key="#boardId") public void editBoard(Board board) { boardRepository.updateBoard(board); }
  • 55. Ehcache 가이드 : Cache 동기화 CACHE REPLICATION
  • 56. Ehcache 가이드 : Cache 동기화 캐시 동기화 방식 의 Ehcache의 경우 데이터 복제를 위한 3가지 방식을 지원 가지 RMI 방식 자바에서 기본적으로 제공하는 RMI를 사용 검증된 안전한 기술 JGroups 방식 UDP 기반의 라이브러리 JBoss Session Clustering JMS 방식 JMS 메시지를 이용하여 데이터 동기화
  • 57. Ehcache 가이드 : Cache 동기화 캐시 동기화 방식 (RMI 방식)
  • 58. Ehcache 가이드 : Cache 동기화 환경설정 : NODE 식별 정책 (RMI 방식)
  • 59. Ehcache 가이드 : Cache 동기화 환경설정 : NODE 식별 정책 (RMI 방식) CacheManagerPeerProvider Node 식별을 위해 필요한 설정 RMICacheManagerPeerProviderFactory 제공 CacheManagerPeerListener 데이터 수신을 위해 필요한 설정 RMICacheManagerPeerListenerFactory 제공 CacheEventLisenver 각 Cache 별로 동기화 방식 설정
  • 60. Ehcache 가이드 : Cache 동기화 환경설정 : NODE 식별 정책 (RMI 방식) 있다. Node 식별을 위해 UDP 방식이나 TCP 방식을 선택할 수 있다 UDP 방식 peerDiscovery = automatic Node 추가시 설정파일의 변경이 필요없다. 네트워크에서 멀티캐스트를 허용해야 한다. TCP 방식 peerDiscovery = manual Node 추가시 설정파일의 변경이 필요하다.
  • 61. Ehcache 가이드 : Cache 동기화 환경설정 : 캐시 동기화 정책 (RMI 방식)
  • 62. Ehcache 가이드 : Cache 동기화 환경설정 : 캐시 동기화 정책 (RMI 방식) replicatePuts = “false” // 정보가 추가되었을 때 동기화 여부 replicateUpdates = “false” // 정보가 수정되었을 때 동기화 여부 replicateRemovals = “true” // 정보가 삭제되었을 때 동기화 여부 replicateAsynchronously = “false” // 동기화 작업의 Async 여부 replicateUpdatesViaCapy = “false” // 복제 데이터를 보낼지 삭제 메시지를 보낼지 여부
  • 64. CACHE 모니터링 TOMCAT JMX 옵션 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port = 18001 -Dcom.sun.management.jmxremote.ssl = false -Dcom.sun.management.jmxremote.authenticate = true -Dcom.sun.management.jmxremote.password.file = /home1/irteam/apps/tomcat/conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file = /home1/irteam/apps/tomcat/conf/jmxremote.access
  • 65. CACHE 모니터링 MBean 설정 <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" > <property name="configLocation" value="classpath:ehcache.xml"></property> <property name="shared" value="true"/> </bean> <bean id="mbeanServer“ class="org.springframework.jmx.support.MBeanServerFactoryBean"> <property name="locateExistingServerIfPossible" value="true"/> </bean> <bean id="managementService" class="net.sf.ehcache.management.ManagementService" init-method="init"> <constructor-arg ref="ehcache"/> <constructor-arg ref="mbeanServer"/> <constructor-arg index="2" value="true"/> <constructor-arg index="3" value="true"/> <constructor-arg index="4" value="true"/> <constructor-arg index="5" value="true"/> </bean>
  • 66. CACHE 모니터링 Statistics 옵션 <cache name="sampleCache" maxElementsInMemory="20000" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="false" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" statistics="true"> </cache>
  • 67. DEMO
  • 68. QUIZ 오늘의 Quiz Spring 3.1에서 캐쉬 생성을 위한 에서 은 Annotation은 ( 이다. ) 이다
  • 69. DEMO Special Thanks. 다운받으세요. 소스는 아래 SVN 서버에서 다운받으세요 https://javacafe-demo.googlecode.com/svn