SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
웹서비스 성능 향상을 위한
오픈소스 Arcus 주요기능 및 활용사례
박준현 (junhyun.park@navercorp.com)
시스템스컴퓨팅G / NAVER LABS
2014-06-27
2
 NAVER에서 개발한 Memory Cache Cloud
 Memcached 기반의 extended key-value 모델 (collection 지원)
 ZooKeeper 기반의 elastic cache cloud 구현
 NAVER 서비스들의 여러 요구 사항들 반영
 Open Source SW – Apache License 2.0
 ARCUS [ɑ́ :rkəs] : 아커스
 아치형 구름
 http://en.wikipedia.org/wiki/Arcus_cloud
ARCUS
3
ARCUS 개발 배경
Service Applications
Write
Database
Read
 Large-scale 웹 서비스
 데이터 및 요청 양 증가
 성능 이슈
 Throughput
 Response Time
 DB Scalability 이슈
4
ARCUS 개발 배경 – Memory Cache Cloud
Service Applications
1) DB Write
Database
Arcus Cache Cloud
2) DB Read
1) Arcus
Get
3) Arcus
Set
2) Arcus Delete
 성능 해결
 Low Latency
 High Throughput
 DB 부하 경감
5
ARCUS 기반 기술 - memcached
 http://www.memcached.org/
 In-memory key-value store
 get, set, add, incr/decr, CAS, delete, …
 operation cost - O(1)
 High-performance (single cache node)
 100K ~ 200K requests / second
 Avg. 400 ~ 500 micro second
6
ARCUS 기반 기술 - ZooKeeper
 http://zookeeper.apache.org/
 Coordination service for distributed applications.
 Service discovery
 Dynamic configuration management
 Distributed locking
 For managing Arcus cache clouds
 Cache node list management
 Cache node failure detection & notification
7
ARCUS Architecture
Applications
Java/C Client
(consistent hashing)
Unified Cloud Admin
(Zookeeper ensemble)
Monitoring
(Hubble)
Cache Cloud
Memcached
with Collection
8
 Service Code (or Cloud Name)
 Arcus Cloud(or Cluster)를 유일하게 구분하는 식별자
 Arcus 클라이언트는 service code로 특정 cloud를 접근
ARCUS Cloud 관리 – Service Code
Arcus
Cloud A
Arcus
Cloud B
Arcus
Cloud C
Servicecode = “ServiceA”
Servicecode = “ServiceB”
9
ARCUS Cloud 관리 – Server의 ZK Node 등록
/cache_server_mapping
/cache_list
/arcus
/10.0.0.1:11211
/10.0.0.2:11211
/blog
/naverme
/blog
/naverme
/10.0.0.1:11211
/10.0.0.3:11211
1. Arcus 서버의 IP:PORT를 사용하여 자
싞이 서비스되어야 하는 코드를 조회한다.
예) “10.0.0.1:11211”
2. 서비스 코드아래 자싞의 IP:PORT를
ephemeral node로 생성
Arcus server
Cloud에 참여하는 서버 정보 관리를 위한 ZooKeeper의 znode구조
 ephemeral node : zookeeper 와의 세션이 유효한 동안에만 존재하는 node
10
ARCUS Cloud 관리 – Client의 ZK Node 조회
/cache_list
/arcus
/blog
/10.0.0.1:11211
ZooKeeper 서버에 저장된 znode의 구조
3. 자싞의 서비스 코드의 변경사
항을 감시 한다. 자식 znode에
변경사항이 생기면 변경사항을
통지 받아 서버 목록을 갱싞한다.
2. Arcus server로 접속을 시도한다.
1. 서비스코드에 등록된 Arcus
서버 목록을 조회한다.
/10.0.0.2:11211
Arcus client가 cache cloud에서 사용 가능한 server를 찾는 방법
사용자, 서비스
(Arcus client)
11
ARCUS 데이터 분산
 Key-value item을 cloud의 어떤 cache node로 분산할 것인지
 Key-to-Node Mapping
Arcus client
key1=AA
key2=BB
key3=CC
12
ARCUS 데이터 분산 – consistent hashing
Hash Ring (2^32)
(Hash결과 값으로 정렬된 구조로
Arcus Client 내부에서 관리된다.)
1000
…
1010
…
1011
…
key hash
1110…
1. Arcus cache node들의 hash값을 모두
구한다.
2. key의 hash값을 구한다.
3. Key hash값을 기준으로 시계 방향으로
가장 처음 만나는 node hash값이 가리
키는 Arcus cache node를 선택한다.
13
ARCUS 데이터 분산 – cache node 분산
Hash 값에 따라서 Arcus cache
node 별로 담당해야 하는
key 개수의 차이가 크다.
요청이 서버에 골고루
분산되지 않는다.
1000
…
1010
…
1011
…
 Cache node 분산 이슈 (1 hash point / cache node)
14
ARCUS 데이터 분산 – cache node 분산
 Cache node 분산 – 약 160개 hash points / 1 cache node
동일한 Arcus cache node를 가리
키는 hash point를 여러 개 만들어
요청이 골고루 분산될 수 있도록
한다.
요청이 골고루 분산되면 데이터 또
한 고르게 분산되어 저장된다.
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
15
 Key – key-value item 식별자
 Format: <prefix>:<subkey> (max 250 characters)
 <prefix> 단위로 key들을 그룹화하여 관리 (ex, delete, stats)
 <subkey>로 prefix 내의 특정 item을 식별
 Value – key-value item에서 value 부분
 Single value (max 1MB)
 A collection of values : List, Set, B+Tree
 max 50000 elements
 max 4KB value in each element
ARCUS Key-Value 모델
16
ARCUS Collections
유형 구조 및 특징
List  Double linked list 구조
Set  An unordered set of unique data
 Membership checking (예, 친구 정보, 구독 정보, …)
B+Tree  An ordered data set based on b+tree key
 Element 구조: < bkey, [eflag,] value >
 bkey(b+tree key): 8 bytes integer or 1~31 bytes array
 eflag(element flag): 1~31 bytes array
 주요 연산
 Bkey 기반 range scan & eflag filter & offset, count
 여러 b+tree들에 대한 smget(sort-merge get)
 B+tree position 조회 / position 기반 element 조회
17
 대표 성능 이슈 – 친구 글 또는 구독 글 모아보기
 IN 리스트 커질수록, 질의 응답이 급격히 느림.
 SNS 사용자 증가 및 활성화 => DB 성능 튜닝만으롞 해결이 어려움
 관계(relationship) 증가
 데이터 규모와 조회 요청 량 증가
ARCUS Collection - SNS
SELECT *
FROM posts
WHERE user IN (friend-1, friend-2, … friend-N)
AND create_time < sysdate()
ORDER BY create_time DESC
LIMIT 20;
18
 Arcus B+Tree - <bkey: create_time, value: postid>
ARCUS Collection - SNS
Push 방식 Pull 방식
Cache • 사용자 별 inbox cache 유지 • 사용자 별 outbox cache 유지
Post
작성
• 모든 친구의 inbox cache에
post 정보를 push delivery
• 친구 수만큼 write 발생
• 작성자의 outbox cache에만
post 정보를 보관
• 1회 write 발생
Post
모아보기
• 자싞의 inbox cache만 조회
• B+tree get 연산 사용
• 모든 친구의 outbox cache를
조회하여 sort-merge 수행
• B+tree smget 연산 사용
19
 B+tree smget(sort-merge get) 연산
ARCUS Collection - SNS
0 7 14 21 28
A
1 5 10 15 20
B
3 6 9 12 16
C
A, B, C로 부터 bkey가 30 ~ 10인 element 조회
[ 28, 21, 20, 16, 15, 14, 12, 10 ]
10 1214 15 1620
20
 대표 조회 요청
 사용자의 score에 대한 순위 조회하고,
 그 score 보다 앞뒤에 있는 N개 score 및 user 조회
 B+tree – top game scores 저장
 <bkey: score, value: userinfo>
 B+tree position 관련 연산들
 Find position: <key, bkey, order> => position
 Get by position: <key, position_range, order> => elements
 Find position with get: <key, bkey, order, count> => <position, elements>
 주어진 bkey의 position 조회하고, 그 position의 element 포함하여 양방
향(forward & backward)으로 count개 element 조회 (release 예정 기능)
ARCUS Collection– Game Ranking
21
ARCUS Collection– Game Ranking
 B+tree find position with get 연산
69 70 10 15 20
B
B에서 bkey 78에 대해 descending 순서의 position과 양방향 3개씩 element 조회
[ 6, < 89, 84, 83, 78, 76, 70, 69 > ]
76 78 83 84 89 10 15 2090 93 9560 61 10 15 2062 63 68bkey:
position:
(desc)
14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
22
ARCUS – Small Memory Allocator
Slab allocator
Small memory allocator
Chunk
alloc/dealloc
Slab allocator interface
size
Collection items
Small-sized K/V items Large-sized K/V items
Variable-length slot management
- Enhance memory space reuse
- Reduce fragmentation
23
ARCUS – Eager Item Expiration
 기존 Item Expiration
 Search 범위
 각 LRU 리스트의 tail에 위치한 N개 items만 검사
 이슈
 LRU 상위에 expired items이 존재하더라도 reclaim 되지 않고, LRU tail에
있는 valid item이 먼저 evict 됨.
 Valid items의 memory 사용량 확인이 어려움
 Eager Item Expiration
 Search 범위
 각 LRU 리스트의 tail에 위치한 N개 items 검사 외에도
 LRU 리스트를 점진적 traverse하면서 N개 items 검사
 효과 - Memory 효율성 증가
24
 Dynamic configuration 변경
 memlimit, maxconns, …
 다양한 Item attributes 제공
 Item attributes 조회 및 변경
 Delete by prefix
 Command pipelining for bulk operations
 Sticky Items
 stats 정보 확장
 …
ARCUS – 그 외 특징들
25
ARCUS Client 초기화
SERVICE_CODE의
Server list 조회
Arcus Java Client
Arcus admin
ZK watcher를 통해서
Server list 변경 감지
Arcus server
Arcus server
Arcus server
Locator, Connector
ZooKeeper Client
ConnectionFactoryBuilder cfb = new ConnectionFactoryBuilder();
ArcusClient client = ArcusClient.createArcusClient(ADMIN_ADDR, SERVICE_CODE, cfb);
26
ARCUS Client Pool 초기화
ArcusClientPool
Arcus admin
Arcus server
Arcus server
Arcus server
Arcus Java Client
ZooKeeper Client
Arcus Java Client
internal pool
ConnectionFactoryBuilder cfb = new ConnectionFactoryBuilder();
ArcusClientPool pool = ArcusClient.createArcusClientPool(ADMIN_ADDR, SERVICE_CODE, cfb, 2);
적당 pool size ?? (응용 서버의 peak 요구 성능(rps) – 1) / single client 처리량(rps) + 1
27
ARCUS Client Pool 사용
Arcus Java Client Pool
Arcus Java Client
Arcus Java Client
ConnectionFactoryBuilder cfb = new ConnectionFactoryBuilder();
ArcusClientPool pool = ArcusClient.createArcusClientPool(ADMIN_ADDR, SERVICE_CODE, cfb, 2);
// pool의 API를 직접 호출함, Pool로부터 client를 얻은 다음 API를 호출하는 방식이 아님.
pool.set(KEY, EXPIRE_TIME, VALUE);
사용자
(서비스)
Set
API
client pool의 API는 pool이 가지고 있는 임의의 client로 명령을 젂달한다.
28
Arcus Client 설정
 Connection Factory Builder 설정들
 Transcoder, Key-Value 압축, Key-Value Local Cache (ehcache) 사용, …
 Key-Value Local Cache 사용 설정
ConnectionFactoryBuilder cfb = new ConnectionFactoryBuilder();
// local cache의 expire time을 1초로 지정
cfb.setFrontCacheExpireTime(1000L);
// local cache에 저장 가능한 key의 개수를 1만개로 지정
cfb.setMaxFrontCacheElements(10000);
// 이제 client를 사용해서 저장/조회되는 key/value는 local cache를 거치게 된다.
ArcusClient client = ArcusClient.createArcusClient(ADMIN_ADDR, SERVICE_CODE, cfb);
// Key/Value local cache는 Arcus client / Arcus client pool별로 생성된다.
29
Arcus Client Local Cache
Request
Arcus get
DB query
Arcus set
(DB query result)
Response
cache hit
cache miss
ehcache Get
ehcache miss or expired
ehcache
set /extend
ehcache hit
optional
skip ehcache set
Key-value item을 local cache(ehcache)에 저장하여 응답속도를 높일 수 있다.
(Local caching은 Key-Value 유형만 지원하며, collection 유형은 불가)
30
 Arcus Open – 2014/05/15
 http://naver.github.io/arcus/ (Apache License 2.0)
 Linux : CentOS 6.x 64bit, Ubuntu 12.04 LTS 64bit
 Arcus Code Repositories
 arcus : arcus super project including setup tools
 arcus-memcached : arcus memory cache server
 arcus-java-client : arcus java client
 arcus-c-client : arcus c client
 arcus-zookeeper : zookeeper with arcus modifications
 arcus-hubble : dashboard service to monitor arcus clusters
 …
ARCUS Open Source
31
ARCUS Open Source – arcus repo
32
ARCUS Open Source - hubble
33
 문의/질문 - openarcus 구글 그룹스
 https://groups.google.com/d/forum/openarcus
 openarcus@googlegroups.com
 공지 – openarcus 구글 그룹스 (회원가입 필요)
 버그/이슈
 개별 code repository issues에 등록
 Contribution
 Github pull request 방식 선호
 아주 갂단하면, patch 젂달 방식도 가능
ARCUS Open Source - Communication
34
 Replication
 2 Copy & Semi-Synchronous
 Others
 지원하는 Linux 플랫폼 확장
 지원하는 Client 언어 확장
 Slow Request Logging => 응용 Request 검증에 활용
 Prefix 기능 확장
 Arcus Monitoring 기능 확장
 …
ARCUS Open Source – Future Dev
35
Thank You

Contenu connexe

Tendances

Vitrine virtual 3 2018 Tupperware
Vitrine virtual 3 2018 TupperwareVitrine virtual 3 2018 Tupperware
Vitrine virtual 3 2018 TupperwareJean Lucas Alves
 
一人でもNFC開発
一人でもNFC開発一人でもNFC開発
一人でもNFC開発Hirokuma Ueno
 
Vitrine Tupperware 11/2019
Vitrine Tupperware 11/2019Vitrine Tupperware 11/2019
Vitrine Tupperware 11/2019Thamires Messore
 
コードで学ぶドメイン駆動設計入門
コードで学ぶドメイン駆動設計入門コードで学ぶドメイン駆動設計入門
コードで学ぶドメイン駆動設計入門潤一 加藤
 
OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事uchan_nos
 
#mailerstudy 02 暗号入門 (2012-02-22更新)
#mailerstudy 02 暗号入門 (2012-02-22更新)#mailerstudy 02 暗号入門 (2012-02-22更新)
#mailerstudy 02 暗号入門 (2012-02-22更新)Takashi Takizawa
 
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...Google Cloud Platform - Japan
 
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!shinjiigarashi
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
GroongaでRedmineを高速全文検索
GroongaでRedmineを高速全文検索GroongaでRedmineを高速全文検索
GroongaでRedmineを高速全文検索Kouhei Sutou
 
Vitrine Tupperware 10/2019
Vitrine Tupperware 10/2019 Vitrine Tupperware 10/2019
Vitrine Tupperware 10/2019 Thamires Messore
 
【ことはじめ】 今さら聞けない!? ゼロトラストのきほん (Oracle Cloudウェビナーシリーズ: 2021年2月9日)
【ことはじめ】 今さら聞けない!? ゼロトラストのきほん (Oracle Cloudウェビナーシリーズ: 2021年2月9日)【ことはじめ】 今さら聞けない!? ゼロトラストのきほん (Oracle Cloudウェビナーシリーズ: 2021年2月9日)
【ことはじめ】 今さら聞けない!? ゼロトラストのきほん (Oracle Cloudウェビナーシリーズ: 2021年2月9日)オラクルエンジニア通信
 
HadoopをBQにマイグレしようとしてる話
HadoopをBQにマイグレしようとしてる話HadoopをBQにマイグレしようとしてる話
HadoopをBQにマイグレしようとしてる話Recruit Technologies
 
転置インデックスとTop k-query
転置インデックスとTop k-query転置インデックスとTop k-query
転置インデックスとTop k-query正志 坪坂
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについてmoai kids
 

Tendances (20)

Vitrine virtual 3 2018 Tupperware
Vitrine virtual 3 2018 TupperwareVitrine virtual 3 2018 Tupperware
Vitrine virtual 3 2018 Tupperware
 
一人でもNFC開発
一人でもNFC開発一人でもNFC開発
一人でもNFC開発
 
大規模発話ログデータを活用した音声対話処理
大規模発話ログデータを活用した音声対話処理大規模発話ログデータを活用した音声対話処理
大規模発話ログデータを活用した音声対話処理
 
Vitrine Tupperware 11/2019
Vitrine Tupperware 11/2019Vitrine Tupperware 11/2019
Vitrine Tupperware 11/2019
 
コードで学ぶドメイン駆動設計入門
コードで学ぶドメイン駆動設計入門コードで学ぶドメイン駆動設計入門
コードで学ぶドメイン駆動設計入門
 
OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事
 
#mailerstudy 02 暗号入門 (2012-02-22更新)
#mailerstudy 02 暗号入門 (2012-02-22更新)#mailerstudy 02 暗号入門 (2012-02-22更新)
#mailerstudy 02 暗号入門 (2012-02-22更新)
 
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...
 
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
 
Hadoop入門
Hadoop入門Hadoop入門
Hadoop入門
 
CData Sync 概要
CData Sync 概要CData Sync 概要
CData Sync 概要
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
GroongaでRedmineを高速全文検索
GroongaでRedmineを高速全文検索GroongaでRedmineを高速全文検索
GroongaでRedmineを高速全文検索
 
Vitrine Tupperware 10/2019
Vitrine Tupperware 10/2019 Vitrine Tupperware 10/2019
Vitrine Tupperware 10/2019
 
【ことはじめ】 今さら聞けない!? ゼロトラストのきほん (Oracle Cloudウェビナーシリーズ: 2021年2月9日)
【ことはじめ】 今さら聞けない!? ゼロトラストのきほん (Oracle Cloudウェビナーシリーズ: 2021年2月9日)【ことはじめ】 今さら聞けない!? ゼロトラストのきほん (Oracle Cloudウェビナーシリーズ: 2021年2月9日)
【ことはじめ】 今さら聞けない!? ゼロトラストのきほん (Oracle Cloudウェビナーシリーズ: 2021年2月9日)
 
HadoopをBQにマイグレしようとしてる話
HadoopをBQにマイグレしようとしてる話HadoopをBQにマイグレしようとしてる話
HadoopをBQにマイグレしようとしてる話
 
TDDBC お題
TDDBC お題TDDBC お題
TDDBC お題
 
転置インデックスとTop k-query
転置インデックスとTop k-query転置インデックスとTop k-query
転置インデックスとTop k-query
 
pg_trgmと全文検索
pg_trgmと全文検索pg_trgmと全文検索
pg_trgmと全文検索
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
 

En vedette

1.openseminar
1.openseminar1.openseminar
1.openseminarNAVER D2
 
네이버 오픈세미나 백엔드_아키텍쳐
네이버 오픈세미나 백엔드_아키텍쳐네이버 오픈세미나 백엔드_아키텍쳐
네이버 오픈세미나 백엔드_아키텍쳐NAVER D2
 
5.yobi를 활용한 개발자 협업 및 배포 프로세스
5.yobi를 활용한 개발자 협업 및 배포 프로세스5.yobi를 활용한 개발자 협업 및 배포 프로세스
5.yobi를 활용한 개발자 협업 및 배포 프로세스NAVER D2
 
2.네이버 프론트엔드 김지태
2.네이버 프론트엔드 김지태2.네이버 프론트엔드 김지태
2.네이버 프론트엔드 김지태NAVER D2
 
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권freeNAVER D2
 
[Hello world 오픈세미나]vertx&socket io
[Hello world 오픈세미나]vertx&socket io[Hello world 오픈세미나]vertx&socket io
[Hello world 오픈세미나]vertx&socket ioNAVER D2
 
[Hello world 오픈세미나]varnish로 웹서버성능 향상시키기
[Hello world 오픈세미나]varnish로 웹서버성능 향상시키기[Hello world 오픈세미나]varnish로 웹서버성능 향상시키기
[Hello world 오픈세미나]varnish로 웹서버성능 향상시키기NAVER D2
 
Mesos on coreOS
Mesos on coreOSMesos on coreOS
Mesos on coreOS충섭 김
 
나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기
나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기
나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기Baekjoon Choi
 
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & RankingIan Choi
 
Amazon EC2 Container Service in Action
Amazon EC2 Container Service in ActionAmazon EC2 Container Service in Action
Amazon EC2 Container Service in ActionRemotty
 
세미나
세미나세미나
세미나Dongyi Kim
 
RancherOS Introduction
RancherOS IntroductionRancherOS Introduction
RancherOS IntroductionRemotty
 
형태소 분석기를 적용한 elasticsearch 운영
형태소 분석기를 적용한 elasticsearch 운영형태소 분석기를 적용한 elasticsearch 운영
형태소 분석기를 적용한 elasticsearch 운영창훈 정
 
웨일 보안 이야기
웨일 보안 이야기웨일 보안 이야기
웨일 보안 이야기NAVER D2
 

En vedette (17)

1.openseminar
1.openseminar1.openseminar
1.openseminar
 
네이버 오픈세미나 백엔드_아키텍쳐
네이버 오픈세미나 백엔드_아키텍쳐네이버 오픈세미나 백엔드_아키텍쳐
네이버 오픈세미나 백엔드_아키텍쳐
 
5.yobi를 활용한 개발자 협업 및 배포 프로세스
5.yobi를 활용한 개발자 협업 및 배포 프로세스5.yobi를 활용한 개발자 협업 및 배포 프로세스
5.yobi를 활용한 개발자 협업 및 배포 프로세스
 
2.네이버 프론트엔드 김지태
2.네이버 프론트엔드 김지태2.네이버 프론트엔드 김지태
2.네이버 프론트엔드 김지태
 
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
 
[Hello world 오픈세미나]vertx&socket io
[Hello world 오픈세미나]vertx&socket io[Hello world 오픈세미나]vertx&socket io
[Hello world 오픈세미나]vertx&socket io
 
[Hello world 오픈세미나]varnish로 웹서버성능 향상시키기
[Hello world 오픈세미나]varnish로 웹서버성능 향상시키기[Hello world 오픈세미나]varnish로 웹서버성능 향상시키기
[Hello world 오픈세미나]varnish로 웹서버성능 향상시키기
 
Docker orchestration
Docker orchestrationDocker orchestration
Docker orchestration
 
Mesos on coreOS
Mesos on coreOSMesos on coreOS
Mesos on coreOS
 
나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기
나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기
나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기
 
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
 
Amazon EC2 Container Service in Action
Amazon EC2 Container Service in ActionAmazon EC2 Container Service in Action
Amazon EC2 Container Service in Action
 
세미나
세미나세미나
세미나
 
RancherOS Introduction
RancherOS IntroductionRancherOS Introduction
RancherOS Introduction
 
형태소 분석기를 적용한 elasticsearch 운영
형태소 분석기를 적용한 elasticsearch 운영형태소 분석기를 적용한 elasticsearch 운영
형태소 분석기를 적용한 elasticsearch 운영
 
Docker toolbox
Docker toolboxDocker toolbox
Docker toolbox
 
웨일 보안 이야기
웨일 보안 이야기웨일 보안 이야기
웨일 보안 이야기
 

Similaire à Arcus

Ots2014 arcus-collection-open source
Ots2014 arcus-collection-open sourceOts2014 arcus-collection-open source
Ots2014 arcus-collection-open sourceNAVER D2
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회JaM2in
 
폴라리스오피스 운영시스템
폴라리스오피스 운영시스템폴라리스오피스 운영시스템
폴라리스오피스 운영시스템SANGGI CHOI
 
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingCloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingAmazon Web Services Korea
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4Seok-joon Yun
 
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬) Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬) Amazon Web Services Korea
 
Ch1 일래스틱서치 클러스터 시작
Ch1 일래스틱서치 클러스터 시작Ch1 일래스틱서치 클러스터 시작
Ch1 일래스틱서치 클러스터 시작Minchul Jung
 
AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)I Goo Lee.
 
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개Ian Choi
 
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...Amazon Web Services Korea
 
ECMAScript 6의 새로운 것들!
ECMAScript 6의 새로운 것들!ECMAScript 6의 새로운 것들!
ECMAScript 6의 새로운 것들!WooYoung Cho
 
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)Amazon Web Services Korea
 
파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄SeongHyun Ahn
 
Memcached의 확장성 개선
Memcached의 확장성 개선Memcached의 확장성 개선
Memcached의 확장성 개선NAVER D2
 
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017Amazon Web Services Korea
 
Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석Sung wook Kang
 
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3Seok-joon Yun
 
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)Amazon Web Services Korea
 

Similaire à Arcus (20)

Ots2014 arcus-collection-open source
Ots2014 arcus-collection-open sourceOts2014 arcus-collection-open source
Ots2014 arcus-collection-open source
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회
 
폴라리스오피스 운영시스템
폴라리스오피스 운영시스템폴라리스오피스 운영시스템
폴라리스오피스 운영시스템
 
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingCloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
 
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬) Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
 
Ch1 일래스틱서치 클러스터 시작
Ch1 일래스틱서치 클러스터 시작Ch1 일래스틱서치 클러스터 시작
Ch1 일래스틱서치 클러스터 시작
 
AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)
 
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
 
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
 
ECMAScript 6의 새로운 것들!
ECMAScript 6의 새로운 것들!ECMAScript 6의 새로운 것들!
ECMAScript 6의 새로운 것들!
 
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
 
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
 
파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄
 
Memcached의 확장성 개선
Memcached의 확장성 개선Memcached의 확장성 개선
Memcached의 확장성 개선
 
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
 
Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석
 
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
 
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)
 
Aws
AwsAws
Aws
 

Plus de NAVER D2

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다NAVER D2
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...NAVER D2
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기NAVER D2
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발NAVER D2
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈NAVER D2
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&ANAVER D2
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기NAVER D2
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep LearningNAVER D2
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applicationsNAVER D2
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingNAVER D2
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지NAVER D2
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기NAVER D2
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화NAVER D2
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)NAVER D2
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기NAVER D2
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual SearchNAVER D2
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화NAVER D2
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지NAVER D2
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터NAVER D2
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?NAVER D2
 

Plus de NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 

Arcus

  • 1. 웹서비스 성능 향상을 위한 오픈소스 Arcus 주요기능 및 활용사례 박준현 (junhyun.park@navercorp.com) 시스템스컴퓨팅G / NAVER LABS 2014-06-27
  • 2. 2  NAVER에서 개발한 Memory Cache Cloud  Memcached 기반의 extended key-value 모델 (collection 지원)  ZooKeeper 기반의 elastic cache cloud 구현  NAVER 서비스들의 여러 요구 사항들 반영  Open Source SW – Apache License 2.0  ARCUS [ɑ́ :rkəs] : 아커스  아치형 구름  http://en.wikipedia.org/wiki/Arcus_cloud ARCUS
  • 3. 3 ARCUS 개발 배경 Service Applications Write Database Read  Large-scale 웹 서비스  데이터 및 요청 양 증가  성능 이슈  Throughput  Response Time  DB Scalability 이슈
  • 4. 4 ARCUS 개발 배경 – Memory Cache Cloud Service Applications 1) DB Write Database Arcus Cache Cloud 2) DB Read 1) Arcus Get 3) Arcus Set 2) Arcus Delete  성능 해결  Low Latency  High Throughput  DB 부하 경감
  • 5. 5 ARCUS 기반 기술 - memcached  http://www.memcached.org/  In-memory key-value store  get, set, add, incr/decr, CAS, delete, …  operation cost - O(1)  High-performance (single cache node)  100K ~ 200K requests / second  Avg. 400 ~ 500 micro second
  • 6. 6 ARCUS 기반 기술 - ZooKeeper  http://zookeeper.apache.org/  Coordination service for distributed applications.  Service discovery  Dynamic configuration management  Distributed locking  For managing Arcus cache clouds  Cache node list management  Cache node failure detection & notification
  • 7. 7 ARCUS Architecture Applications Java/C Client (consistent hashing) Unified Cloud Admin (Zookeeper ensemble) Monitoring (Hubble) Cache Cloud Memcached with Collection
  • 8. 8  Service Code (or Cloud Name)  Arcus Cloud(or Cluster)를 유일하게 구분하는 식별자  Arcus 클라이언트는 service code로 특정 cloud를 접근 ARCUS Cloud 관리 – Service Code Arcus Cloud A Arcus Cloud B Arcus Cloud C Servicecode = “ServiceA” Servicecode = “ServiceB”
  • 9. 9 ARCUS Cloud 관리 – Server의 ZK Node 등록 /cache_server_mapping /cache_list /arcus /10.0.0.1:11211 /10.0.0.2:11211 /blog /naverme /blog /naverme /10.0.0.1:11211 /10.0.0.3:11211 1. Arcus 서버의 IP:PORT를 사용하여 자 싞이 서비스되어야 하는 코드를 조회한다. 예) “10.0.0.1:11211” 2. 서비스 코드아래 자싞의 IP:PORT를 ephemeral node로 생성 Arcus server Cloud에 참여하는 서버 정보 관리를 위한 ZooKeeper의 znode구조  ephemeral node : zookeeper 와의 세션이 유효한 동안에만 존재하는 node
  • 10. 10 ARCUS Cloud 관리 – Client의 ZK Node 조회 /cache_list /arcus /blog /10.0.0.1:11211 ZooKeeper 서버에 저장된 znode의 구조 3. 자싞의 서비스 코드의 변경사 항을 감시 한다. 자식 znode에 변경사항이 생기면 변경사항을 통지 받아 서버 목록을 갱싞한다. 2. Arcus server로 접속을 시도한다. 1. 서비스코드에 등록된 Arcus 서버 목록을 조회한다. /10.0.0.2:11211 Arcus client가 cache cloud에서 사용 가능한 server를 찾는 방법 사용자, 서비스 (Arcus client)
  • 11. 11 ARCUS 데이터 분산  Key-value item을 cloud의 어떤 cache node로 분산할 것인지  Key-to-Node Mapping Arcus client key1=AA key2=BB key3=CC
  • 12. 12 ARCUS 데이터 분산 – consistent hashing Hash Ring (2^32) (Hash결과 값으로 정렬된 구조로 Arcus Client 내부에서 관리된다.) 1000 … 1010 … 1011 … key hash 1110… 1. Arcus cache node들의 hash값을 모두 구한다. 2. key의 hash값을 구한다. 3. Key hash값을 기준으로 시계 방향으로 가장 처음 만나는 node hash값이 가리 키는 Arcus cache node를 선택한다.
  • 13. 13 ARCUS 데이터 분산 – cache node 분산 Hash 값에 따라서 Arcus cache node 별로 담당해야 하는 key 개수의 차이가 크다. 요청이 서버에 골고루 분산되지 않는다. 1000 … 1010 … 1011 …  Cache node 분산 이슈 (1 hash point / cache node)
  • 14. 14 ARCUS 데이터 분산 – cache node 분산  Cache node 분산 – 약 160개 hash points / 1 cache node 동일한 Arcus cache node를 가리 키는 hash point를 여러 개 만들어 요청이 골고루 분산될 수 있도록 한다. 요청이 골고루 분산되면 데이터 또 한 고르게 분산되어 저장된다. … … … … … … … … … … … … … … … … … …
  • 15. 15  Key – key-value item 식별자  Format: <prefix>:<subkey> (max 250 characters)  <prefix> 단위로 key들을 그룹화하여 관리 (ex, delete, stats)  <subkey>로 prefix 내의 특정 item을 식별  Value – key-value item에서 value 부분  Single value (max 1MB)  A collection of values : List, Set, B+Tree  max 50000 elements  max 4KB value in each element ARCUS Key-Value 모델
  • 16. 16 ARCUS Collections 유형 구조 및 특징 List  Double linked list 구조 Set  An unordered set of unique data  Membership checking (예, 친구 정보, 구독 정보, …) B+Tree  An ordered data set based on b+tree key  Element 구조: < bkey, [eflag,] value >  bkey(b+tree key): 8 bytes integer or 1~31 bytes array  eflag(element flag): 1~31 bytes array  주요 연산  Bkey 기반 range scan & eflag filter & offset, count  여러 b+tree들에 대한 smget(sort-merge get)  B+tree position 조회 / position 기반 element 조회
  • 17. 17  대표 성능 이슈 – 친구 글 또는 구독 글 모아보기  IN 리스트 커질수록, 질의 응답이 급격히 느림.  SNS 사용자 증가 및 활성화 => DB 성능 튜닝만으롞 해결이 어려움  관계(relationship) 증가  데이터 규모와 조회 요청 량 증가 ARCUS Collection - SNS SELECT * FROM posts WHERE user IN (friend-1, friend-2, … friend-N) AND create_time < sysdate() ORDER BY create_time DESC LIMIT 20;
  • 18. 18  Arcus B+Tree - <bkey: create_time, value: postid> ARCUS Collection - SNS Push 방식 Pull 방식 Cache • 사용자 별 inbox cache 유지 • 사용자 별 outbox cache 유지 Post 작성 • 모든 친구의 inbox cache에 post 정보를 push delivery • 친구 수만큼 write 발생 • 작성자의 outbox cache에만 post 정보를 보관 • 1회 write 발생 Post 모아보기 • 자싞의 inbox cache만 조회 • B+tree get 연산 사용 • 모든 친구의 outbox cache를 조회하여 sort-merge 수행 • B+tree smget 연산 사용
  • 19. 19  B+tree smget(sort-merge get) 연산 ARCUS Collection - SNS 0 7 14 21 28 A 1 5 10 15 20 B 3 6 9 12 16 C A, B, C로 부터 bkey가 30 ~ 10인 element 조회 [ 28, 21, 20, 16, 15, 14, 12, 10 ] 10 1214 15 1620
  • 20. 20  대표 조회 요청  사용자의 score에 대한 순위 조회하고,  그 score 보다 앞뒤에 있는 N개 score 및 user 조회  B+tree – top game scores 저장  <bkey: score, value: userinfo>  B+tree position 관련 연산들  Find position: <key, bkey, order> => position  Get by position: <key, position_range, order> => elements  Find position with get: <key, bkey, order, count> => <position, elements>  주어진 bkey의 position 조회하고, 그 position의 element 포함하여 양방 향(forward & backward)으로 count개 element 조회 (release 예정 기능) ARCUS Collection– Game Ranking
  • 21. 21 ARCUS Collection– Game Ranking  B+tree find position with get 연산 69 70 10 15 20 B B에서 bkey 78에 대해 descending 순서의 position과 양방향 3개씩 element 조회 [ 6, < 89, 84, 83, 78, 76, 70, 69 > ] 76 78 83 84 89 10 15 2090 93 9560 61 10 15 2062 63 68bkey: position: (desc) 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
  • 22. 22 ARCUS – Small Memory Allocator Slab allocator Small memory allocator Chunk alloc/dealloc Slab allocator interface size Collection items Small-sized K/V items Large-sized K/V items Variable-length slot management - Enhance memory space reuse - Reduce fragmentation
  • 23. 23 ARCUS – Eager Item Expiration  기존 Item Expiration  Search 범위  각 LRU 리스트의 tail에 위치한 N개 items만 검사  이슈  LRU 상위에 expired items이 존재하더라도 reclaim 되지 않고, LRU tail에 있는 valid item이 먼저 evict 됨.  Valid items의 memory 사용량 확인이 어려움  Eager Item Expiration  Search 범위  각 LRU 리스트의 tail에 위치한 N개 items 검사 외에도  LRU 리스트를 점진적 traverse하면서 N개 items 검사  효과 - Memory 효율성 증가
  • 24. 24  Dynamic configuration 변경  memlimit, maxconns, …  다양한 Item attributes 제공  Item attributes 조회 및 변경  Delete by prefix  Command pipelining for bulk operations  Sticky Items  stats 정보 확장  … ARCUS – 그 외 특징들
  • 25. 25 ARCUS Client 초기화 SERVICE_CODE의 Server list 조회 Arcus Java Client Arcus admin ZK watcher를 통해서 Server list 변경 감지 Arcus server Arcus server Arcus server Locator, Connector ZooKeeper Client ConnectionFactoryBuilder cfb = new ConnectionFactoryBuilder(); ArcusClient client = ArcusClient.createArcusClient(ADMIN_ADDR, SERVICE_CODE, cfb);
  • 26. 26 ARCUS Client Pool 초기화 ArcusClientPool Arcus admin Arcus server Arcus server Arcus server Arcus Java Client ZooKeeper Client Arcus Java Client internal pool ConnectionFactoryBuilder cfb = new ConnectionFactoryBuilder(); ArcusClientPool pool = ArcusClient.createArcusClientPool(ADMIN_ADDR, SERVICE_CODE, cfb, 2); 적당 pool size ?? (응용 서버의 peak 요구 성능(rps) – 1) / single client 처리량(rps) + 1
  • 27. 27 ARCUS Client Pool 사용 Arcus Java Client Pool Arcus Java Client Arcus Java Client ConnectionFactoryBuilder cfb = new ConnectionFactoryBuilder(); ArcusClientPool pool = ArcusClient.createArcusClientPool(ADMIN_ADDR, SERVICE_CODE, cfb, 2); // pool의 API를 직접 호출함, Pool로부터 client를 얻은 다음 API를 호출하는 방식이 아님. pool.set(KEY, EXPIRE_TIME, VALUE); 사용자 (서비스) Set API client pool의 API는 pool이 가지고 있는 임의의 client로 명령을 젂달한다.
  • 28. 28 Arcus Client 설정  Connection Factory Builder 설정들  Transcoder, Key-Value 압축, Key-Value Local Cache (ehcache) 사용, …  Key-Value Local Cache 사용 설정 ConnectionFactoryBuilder cfb = new ConnectionFactoryBuilder(); // local cache의 expire time을 1초로 지정 cfb.setFrontCacheExpireTime(1000L); // local cache에 저장 가능한 key의 개수를 1만개로 지정 cfb.setMaxFrontCacheElements(10000); // 이제 client를 사용해서 저장/조회되는 key/value는 local cache를 거치게 된다. ArcusClient client = ArcusClient.createArcusClient(ADMIN_ADDR, SERVICE_CODE, cfb); // Key/Value local cache는 Arcus client / Arcus client pool별로 생성된다.
  • 29. 29 Arcus Client Local Cache Request Arcus get DB query Arcus set (DB query result) Response cache hit cache miss ehcache Get ehcache miss or expired ehcache set /extend ehcache hit optional skip ehcache set Key-value item을 local cache(ehcache)에 저장하여 응답속도를 높일 수 있다. (Local caching은 Key-Value 유형만 지원하며, collection 유형은 불가)
  • 30. 30  Arcus Open – 2014/05/15  http://naver.github.io/arcus/ (Apache License 2.0)  Linux : CentOS 6.x 64bit, Ubuntu 12.04 LTS 64bit  Arcus Code Repositories  arcus : arcus super project including setup tools  arcus-memcached : arcus memory cache server  arcus-java-client : arcus java client  arcus-c-client : arcus c client  arcus-zookeeper : zookeeper with arcus modifications  arcus-hubble : dashboard service to monitor arcus clusters  … ARCUS Open Source
  • 31. 31 ARCUS Open Source – arcus repo
  • 33. 33  문의/질문 - openarcus 구글 그룹스  https://groups.google.com/d/forum/openarcus  openarcus@googlegroups.com  공지 – openarcus 구글 그룹스 (회원가입 필요)  버그/이슈  개별 code repository issues에 등록  Contribution  Github pull request 방식 선호  아주 갂단하면, patch 젂달 방식도 가능 ARCUS Open Source - Communication
  • 34. 34  Replication  2 Copy & Semi-Synchronous  Others  지원하는 Linux 플랫폼 확장  지원하는 Client 언어 확장  Slow Request Logging => 응용 Request 검증에 활용  Prefix 기능 확장  Arcus Monitoring 기능 확장  … ARCUS Open Source – Future Dev