오픈소스 성능 최적화 보고서 ch07. infinispan

16
오픈소스 소프트웨어 성능 최적화 보고서 Ch.7 Infinispan 아꿈사 cecil

Upload: hyeonseok-choi

Post on 20-May-2015

270 views

Category:

Technology


9 download

TRANSCRIPT

Page 1: 오픈소스 성능 최적화 보고서 ch07. Infinispan

!

오픈소스����������� ������������������  소프트웨어����������� ������������������  성능����������� ������������������  최적화����������� ������������������  보고서����������� ������������������  Ch.7����������� ������������������  Infinispan

아꿈사����������� ������������������  cecil

Page 2: 오픈소스 성능 최적화 보고서 ch07. Infinispan

Introduction

데이터����������� ������������������  그리드����������� ������������������  플랫폼����������� ������������������  ����������� ������������������  

분산����������� ������������������  메모리����������� ������������������  시스템으로����������� ������������������  Key-value����������� ������������������  저장����������� ������������������  기능����������� ������������������  제공����������� ������������������  

!

•주로����������� ������������������  비싸고����������� ������������������  느린����������� ������������������  저장소(RDB)와����������� ������������������  서버����������� ������������������  사이의����������� ������������������  캐시����������� ������������������  역활로����������� ������������������  사용����������� ������������������  

•일부에서는����������� ������������������  RDB를����������� ������������������  대체.����������� ������������������  

•분산����������� ������������������  메모리의����������� ������������������  존재����������� ������������������  이유!����������� ������������������  성능!����������� ������������������  오직����������� ������������������  성능!

Page 3: 오픈소스 성능 최적화 보고서 ch07. Infinispan

Overview

미들웨어����������� ������������������  범주에����������� ������������������  속하는����������� ������������������  소프트웨어로����������� ������������������  

응용����������� ������������������  프로그램의����������� ������������������  계층과����������� ������������������  저장����������� ������������������  계층����������� ������������������  사이에����������� ������������������  주로����������� ������������������  위치����������� ������������������  

!!

데이터����������� ������������������  베이스만����������� ������������������  사용할����������� ������������������  경우����������� ������������������  이슈����������� ������������������  •많은����������� ������������������  경우����������� ������������������  성능의����������� ������������������  가장����������� ������������������  큰����������� ������������������  병목����������� ������������������  지점은����������� ������������������  자료의����������� ������������������  저장/조회����������� ������������������  부분����������� ������������������  

✓ 데이터����������� ������������������  베이스����������� ������������������  앞에����������� ������������������  캐시����������� ������������������  계층을����������� ������������������  둘����������� ������������������  경우����������� ������������������  성능����������� ������������������  향상����������� ������������������  

•경합과����������� ������������������  잠재적����������� ������������������  실패가����������� ������������������  집중되는����������� ������������������  단일����������� ������������������  지점

Page 4: 오픈소스 성능 최적화 보고서 ch07. Infinispan

적용����������� ������������������  구조����������� ������������������  -����������� ������������������  라이브러리로����������� ������������������  사용

Java����������� ������������������  응용����������� ������������������  프로그램에����������� ������������������  내장하는����������� ������������������  방법����������� ������������������  

응용����������� ������������������  프로그램의����������� ������������������  힙����������� ������������������  메모리의����������� ������������������  일부를����������� ������������������  캐시����������� ������������������  메모리로����������� ������������������  사용

Page 5: 오픈소스 성능 최적화 보고서 ch07. Infinispan

적용����������� ������������������  구조����������� ������������������  -����������� ������������������  클러스터����������� ������������������  서버����������� ������������������  구조로����������� ������������������  사용분산����������� ������������������  캐시����������� ������������������  서버로����������� ������������������  사용����������� ������������������  

infinispan����������� ������������������  노드를����������� ������������������  여러개����������� ������������������  띄워서����������� ������������������  하나의����������� ������������������  클러스터를����������� ������������������  형성����������� ������������������  각����������� ������������������  노드는����������� ������������������  자신만의����������� ������������������  격리된����������� ������������������  JVM����������� ������������������  안에����������� ������������������  위치

Page 6: 오픈소스 성능 최적화 보고서 ch07. Infinispan

Features

•데이터는����������� ������������������  클러스터����������� ������������������  내의����������� ������������������  모든����������� ������������������  서버에����������� ������������������  투명하게����������� ������������������  분사되어����������� ������������������  저장됨����������� ������������������  

•SPOF(Single����������� ������������������  Point����������� ������������������  Of����������� ������������������  Failure)가����������� ������������������  존재하지����������� ������������������  않음.����������� ������������������  

•인스턴스����������� ������������������  추가를����������� ������������������  통한����������� ������������������  Scale-out����������� ������������������  기능����������� ������������������  제공����������� ������������������  

•인스턴스����������� ������������������  종료를����������� ������������������  통한����������� ������������������  Scale-in����������� ������������������  가능����������� ������������������  

•전반적인����������� ������������������  기능����������� ������������������  손실����������� ������������������  없이����������� ������������������  Scale-in/out����������� ������������������  기능����������� ������������������  제공

Page 7: 오픈소스 성능 최적화 보고서 ch07. Infinispan

Benchmarking

•Radar����������� ������������������  Gun����������� ������������������  

•경쟁/비교����������� ������������������  벤치마크����������� ������������������  수행하고����������� ������������������  보고서를����������� ������������������  생성하는����������� ������������������  오픈����������� ������������������  소스����������� ������������������  벤치마킹����������� ������������������  프레임워크����������� ������������������  

•Yahoo����������� ������������������  Cloud����������� ������������������  Serving����������� ������������������  Benchmark����������� ������������������  

•다양한����������� ������������������  크기의����������� ������������������  자료를����������� ������������������  읽거나����������� ������������������  쓰기����������� ������������������  위해����������� ������������������  원격����������� ������������������  저장소와����������� ������������������  통신할때����������� ������������������  잠복지연을����������� ������������������  검사����������� ������������������  

•Grinder,����������� ������������������  Apache����������� ������������������  JMeter����������� ������������������  

•오픈소스����������� ������������������  부하����������� ������������������  생성기

Page 8: 오픈소스 성능 최적화 보고서 ch07. Infinispan

Radar����������� ������������������  Gun

분산����������� ������������������  테스트:����������� ������������������  인스턴스를����������� ������������������  ����������� ������������������  서로����������� ������������������  다른����������� ������������������  서버에����������� ������������������  ����������� ������������������  

실행시켜,����������� ������������������  각����������� ������������������  분산����������� ������������������  서비스����������� ������������������  노드의����������� ������������������  성능을����������� ������������������  테스트

주요����������� ������������������  Features����������� ������������������  

•프로파일링����������� ������������������  

•메모리����������� ������������������  성능����������� ������������������  

•성능����������� ������������������  측정:����������� ������������������  tps����������� ������������������  

•확장성

Page 9: 오픈소스 성능 최적화 보고서 ch07. Infinispan

Prime����������� ������������������  Suspects

•Network����������� ������������������  

•Data����������� ������������������  serialization����������� ������������������  

•Writing����������� ������������������  to����������� ������������������  Disk����������� ������������������  

•Synchronization,����������� ������������������  Locking����������� ������������������  and����������� ������������������  Concurrency����������� ������������������  

•Threads����������� ������������������  and����������� ������������������  Context����������� ������������������  Switching����������� ������������������  

•Garbage����������� ������������������  Collection

Page 10: 오픈소스 성능 최적화 보고서 ch07. Infinispan

Network

•Infinispan에서����������� ������������������  네트워크����������� ������������������  통신은����������� ������������������  비용이����������� ������������������  가장����������� ������������������  큰����������� ������������������  부분����������� ������������������  

•노드����������� ������������������  -����������� ������������������  노드����������� ������������������  •노드간����������� ������������������  통신에서����������� ������������������  JGroups을����������� ������������������  사용����������� ������������������  

•JGroup:����������� ������������������  TCP/UDP를����������� ������������������  지원하는����������� ������������������  클러스터����������� ������������������  구성을����������� ������������������  위한����������� ������������������  신뢰성����������� ������������������  있는����������� ������������������  메시징����������� ������������������  라이브러리����������� ������������������  

•JGroup을����������� ������������������  네트워크와����������� ������������������  응용����������� ������������������  프로그램의����������� ������������������  특성에����������� ������������������  맞게����������� ������������������  조율(스레드����������� ������������������  풀,����������� ������������������  버퍼����������� ������������������  크기����������� ������������������  등..)����������� ������������������  

•JGroups����������� ������������������  번들링,����������� ������������������  단편화����������� ������������������  방식에����������� ������������������  맞게����������� ������������������  응용����������� ������������������  프로그램의����������� ������������������  특성을����������� ������������������  조율����������� ������������������  

•서버����������� ������������������  소켓����������� ������������������  •TCP����������� ������������������  전송/수신����������� ������������������  버퍼����������� ������������������  크기,����������� ������������������  프레임����������� ������������������  크기,����������� ������������������  점보����������� ������������������  프레임����������� ������������������  크기를����������� ������������������  조욜����������� ������������������  

•Netty����������� ������������������  사용:����������� ������������������  최적의����������� ������������������  성능����������� ������������������  보장하기����������� ������������������  위한����������� ������������������  여러����������� ������������������  수준의����������� ������������������  조율����������� ������������������  수단����������� ������������������  제공

Page 11: 오픈소스 성능 최적화 보고서 ch07. Infinispan

Data����������� ������������������  serialization

•하나의����������� ������������������  요청을����������� ������������������  처리하는데����������� ������������������  걸리는����������� ������������������  시간의����������� ������������������  20%를����������� ������������������  소요����������� ������������������  

•Java의����������� ������������������  기본����������� ������������������  직렬화는����������� ������������������  성능이����������� ������������������  좋지����������� ������������������  못함.����������� ������������������  

•메타����������� ������������������  데이터가����������� ������������������  포함됨:����������� ������������������  클래스����������� ������������������  정의����������� ������������������  등..����������� ������������������  

•Externalizer를����������� ������������������  통하여����������� ������������������  직접����������� ������������������  구현����������� ������������������  

•불필요한����������� ������������������  메타����������� ������������������  데이터를����������� ������������������  줄임����������� ������������������  

•개발적으로����������� ������������������  재사용����������� ������������������  가능����������� ������������������  라이브러리:����������� ������������������  JBoss����������� ������������������  Marshalling

Page 12: 오픈소스 성능 최적화 보고서 ch07. Infinispan

Writing����������� ������������������  to����������� ������������������  Disk

•기본적으로����������� ������������������  내부����������� ������������������  자료����������� ������������������  구조이지만,����������� ������������������  영구����������� ������������������  기록����������� ������������������  기능도����������� ������������������  제공����������� ������������������  

•내구성을����������� ������������������  위해����������� ������������������  (노드의����������� ������������������  재시작,����������� ������������������  고장)����������� ������������������  

•메모리����������� ������������������  부족����������� ������������������  이슈를����������� ������������������  해결����������� ������������������  

•파일����������� ������������������  시스템����������� ������������������  기반의����������� ������������������  고성능����������� ������������������  네이티브����������� ������������������  저장소����������� ������������������  준비중����������� ������������������  

•메모리����������� ������������������  부족����������� ������������������  이슈를����������� ������������������  해결을����������� ������������������  위한����������� ������������������  페이징����������� ������������������  용도의����������� ������������������  최적화된����������� ������������������  B����������� ������������������  트리구조����������� ������������������  

•내구성을����������� ������������������  위해����������� ������������������  쓰기는����������� ������������������  빠르지만,����������� ������������������  읽기/탐색은����������� ������������������  빠를����������� ������������������  필요가����������� ������������������  없는����������� ������������������  추가����������� ������������������  전용����������� ������������������  구조

Page 13: 오픈소스 성능 최적화 보고서 ch07. Infinispan

Synchronization,����������� ������������������  Locking����������� ������������������  and����������� ������������������  Concurrency

•핵심����������� ������������������  자료����������� ������������������  구조는����������� ������������������  동시����������� ������������������  접근����������� ������������������  시����������� ������������������  소프트웨어����������� ������������������  트랜잭션����������� ������������������  메모리����������� ������������������  사용����������� ������������������  

•향후����������� ������������������  하드웨어����������� ������������������  지원����������� ������������������  시����������� ������������������  많은����������� ������������������  수정이����������� ������������������  필요����������� ������������������  없음.����������� ������������������  

•Lock,����������� ������������������  Mutex등의����������� ������������������  동기화����������� ������������������  수단의����������� ������������������  필요성을����������� ������������������  최소화����������� ������������������  

•또한����������� ������������������  학술����������� ������������������  논문을����������� ������������������  참고하여,����������� ������������������  lock-free����������� ������������������  구현����������� ������������������  기법을����������� ������������������  최대한����������� ������������������  적용

Page 14: 오픈소스 성능 최적화 보고서 ch07. Infinispan

Threads����������� ������������������  and����������� ������������������  Context����������� ������������������  Switching

Infinispan의����������� ������������������  서브����������� ������������������  시스템들은����������� ������������������  별도의����������� ������������������  ����������� ������������������  

스레드풀을����������� ������������������  사용하여����������� ������������������  비동기����������� ������������������  연산을����������� ������������������  지원����������� ������������������  !

스레드����������� ������������������  자체는����������� ������������������  값싼����������� ������������������  자원이����������� ������������������  아님.����������� ������������������  

조율이����������� ������������������  필요

Ex)����������� ������������������  비동기����������� ������������������  전송����������� ������������������  스레드����������� ������������������  풀의����������� ������������������  스레드의����������� ������������������  수����������� ������������������  

•노드의����������� ������������������  평균����������� ������������������  동시����������� ������������������  갱신����������� ������������������  횟수����������� ������������������  이상

Page 15: 오픈소스 성능 최적화 보고서 ch07. Infinispan

Garbage����������� ������������������  Collection

•JVM의����������� ������������������  Garbage����������� ������������������  Collection의����������� ������������������  일반적인����������� ������������������  관행을����������� ������������������  따름����������� ������������������  

•만약,����������� ������������������  GC����������� ������������������  중����������� ������������������  응답이����������� ������������������  없다면����������� ������������������  노드가����������� ������������������  고장난����������� ������������������  것으로����������� ������������������  판단����������� ������������������  우려가����������� ������������������  있음.����������� ������������������  

•Open����������� ������������������  JDK����������� ������������������  or����������� ������������������  Oracle����������� ������������������  HostSpot����������� ������������������  JVM에서는����������� ������������������  CMS����������� ������������������  

(Concurrent����������� ������������������  Mark����������� ������������������  and����������� ������������������  Sweep)가����������� ������������������  최적의����������� ������������������  설정����������� ������������������  

•응답성이����������� ������������������  문제가����������� ������������������  될경우����������� ������������������  C4(Azul의����������� ������������������  Zing����������� ������������������  JVM)을����������� ������������������  고려

Page 16: 오픈소스 성능 최적화 보고서 ch07. Infinispan

Reference• 테이비시����������� ������������������  암스트롱����������� ������������������  엮음.����������� ������������������  오픈소스����������� ������������������  소프트웨어����������� ������������������  성능����������� ������������������  최적화����������� ������������������  보고서.����������� ������������������  (류광����������� ������������������  옮김).����������� ������������������  경기도����������� ������������������  파주:����������� ������������������  제이펍,����������� ������������������  2014