SlideShare a Scribd company logo
1 of 26
Download to read offline
분산시스템 개발 
(nBase-ARC 예) 
이규재 
분산시스템개발랩/Naver Labs 
ⓒ NAVER Corp.
목차 
1. 왜 분산시스템이 필요한가? 
2. 왜 분산시스템이 만들기 어려운가? 
3. nBase-ARC 예 
4. 개발을 넘어서 운영으로
1. 왜 분산시스템이 필요한가?
필요성 
• Scale-out cluster 
ü 한대로 처리되지 않는 경우에 대비 
ü 비용 효율성을 고려해 일반 computer를 사용해 시스템을 구축 
ü 초기에는 적게 구축하고 서비스 부하가 늘어나면 증설 
ü 서비스에 영향이 없어야 한다 
• 새로운 플랫폼을 만드는 이유? 
ü 있는 것 잘 쓰고, 없는 것 만들고 
ü 있기는 한데, 좀 아쉽다
예) nBase-ARC를 만든 이유 (1/2) 
• Session 저장소의 역할과 서버간의 데이터 공유를 쉽게 할 수 있도록 해주는 플랫폼으로 R 
DBMS 기반의 분산 저장소 사용 è 디스크 기반 Scale out cluster 
• 읽기 연산 뿐만 아니라 많은 쓰기 연산이 필요 è In memory 
• 쓰기 연산이 많아 분산 caching을 해도 문제가 해결되지 않음 è DB
예) nBase-ARC를 만든 이유 (2/2) 
REDIS is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure serv 
er since keys can contain strings, hashes, lists, sets and sorted sets. 
Simple, Fast, Persist (RDB, AOF), Available (replication) 
REDIS 가 가장 적합한 단위 저장소로 보였지만, 제공되는 자료 구조 만으로는 효율적인 세션 저장 처리가 어려워 보임 
그리고 scale-out solution (Redis cluster)가 없었다. 
(기능이 확장된) Redis 기반의 고성능, 고가용, scale-ou 
t 클러스터 DB 필요
Zookeeper Ensemble 
Configuration Master 
Leader Election Gathering opinion 
HB 
HB 
Opinion 
HB 
Cluster Controller 
Leader Follower Follower 
Reconfiguration Fail-over Failure Detection 
nBase-AR 
Redis Cluster BAND GAME CAFE NEWS BLOG 
N-DRIVE 
POST 
SHOPPING 
WEBTOON 
… 
C 
Redis Cluster 
Redis 기반의 분산 메모리 저장소로 다양한 구조체에 대한 in-memory 고속 연산을 분산 환경에서 동일하게 제공 
고가용 Multi-Cluster service pool 
Cluster는 일관성을 보장하는 복제 layer 기반의 복제그룹의 집합이며, nBase-ARC는 복수의 cluster를 운용 
서비스 중단 없는 scale-out, scale-in, upgrade 
서비스 중단 없이 장비를 투입/철회해 데이터 저장 공간 및 처리량을 확장/축소
2. 왜 분산시스템이 만들기 어려운가?
실패는 항상 존재 (1/3) 
• Process의 failure는 항상 있다고 생각하며 작성해야 한다 
• SPoF (Single Point of Failure) 가 없어야 한다 
• 시스템의 부분 실패가 전체 실패가 되지 않도록 design 해야 한다. 
• Failure가 발생하더라도 시스템의 정합성이 위배되지 않아야 한다
정확성 검증과 테스트가 어렵다 (2/3) 
정확성 (correctness) 
Sequential program은 statement 수행의 사전 조건, 사후 조건에 대한 assertion 등을 이용 
해서 검증. 
Distributed program의 경우 여러 process에 의해 실행되는 가능한 모든 실행 조합이 검증의 
대상이기 때문에 어렵다. 
논리적 (집합적)으로 사고해서, 프로그램이 가져야 하는 속성 (property)를 정의하고 이 속성이 
만족되는 지 검증해야 한다. 
- Safety property: something bad will not happen 
- Liveness property: eventually something good happens 
테스트 
Control/Fault injection 등의 방식을 도입 
è 검증된 이론, open source 등의 사용이 매우 필요
몇 가지 추상적 개념이 더 필요하다 (3/3) 
Sequential Programming 
- Array, hash, set 
- If-then-else, loop 
Concurrent Programming 
- thread, mutex, semaphore, transaction 
- File, memory (address space) 
Distributed Programming 
- Process, link, time (failure detection) 
- Broadcast, shared memory, consensus (atomic commit, group membership…)
3. nBase-ARC 예
nBase-ARC 
데이터 모델, Query 모델 
Key è data structure (hash, list, set, sorted set, value) 
각 자료 구조에 대한 연산을 API 형태로 제공 (get, set, hset, hget …) 
CAP perspective 
단절 (partition) 발생 시, Consistency를 보장 . 단절 된 부분은 서비스에서 제외됨 
연산이 제공하는 정합성 
Strong consistency (모든 읽기는 이전에 쓰여진 값을 읽는다) 
0 
1 
2 
8191 
PG 0 
PG 1 
PG N 
PGS 1 
PN 
Partition number 
PGID 
Partition Group ID 
PGS 2 
PGS 3 
PGS 4 
PGS 5 
PGS 6 
PGS 
PGS ID 
CRC16(key) % 8192 
복제 그룹 
분산 모델 
전체 
그림
Replication (Broadcast) (1/3) 
• Redis 복제는 비 동기 복제로서 응답된 요청이 복제 관계를 구축하더라도 유실될 수 있다 (Durability 위배) 
• 이를 해결하기 위해서 복제 layer를 새로 만들었다 
State Machine Replication 
Deterministic finite automation and atomic broadcast of every event 
• Atomic broadcast (total order broadcast) 
ü + FIFO ordering property
Replication (Broadcast) (2/3) Redis 복제 
Redis
 Master
  Redis
 Slave
  
Execute
  
Feed
 
  
slave
 
 disk
  
Execute
  
Disk

More Related Content

What's hot

Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기iFunFactory Inc.
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetesNAVER D2
 
[142]편광을 활용한6 dof 전현기
[142]편광을 활용한6 dof 전현기[142]편광을 활용한6 dof 전현기
[142]편광을 활용한6 dof 전현기NAVER D2
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.NAVER D2
 
[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완NAVER D2
 
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDBNAVER D2
 
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술NAVER D2
 
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선NAVER D2
 
모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개Hyogi Jung
 
제3회난공불락 오픈소스 인프라세미나 - Pacemaker
제3회난공불락 오픈소스 인프라세미나 - Pacemaker제3회난공불락 오픈소스 인프라세미나 - Pacemaker
제3회난공불락 오픈소스 인프라세미나 - PacemakerTommy Lee
 
[112]clova platform 인공지능을 엮는 기술
[112]clova platform 인공지능을 엮는 기술[112]clova platform 인공지능을 엮는 기술
[112]clova platform 인공지능을 엮는 기술NAVER D2
 
Cubrid Inside 5th Session 4 Replication
Cubrid Inside 5th Session 4 ReplicationCubrid Inside 5th Session 4 Replication
Cubrid Inside 5th Session 4 ReplicationCUBRID
 
[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)용호 최
 
[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinux[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinuxOpen Source Consulting
 
Cubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 MigrationCubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 MigrationCUBRID
 
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...OpenStack Korea Community
 
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...OpenStack Korea Community
 
Openstack live migration
Openstack live migrationOpenstack live migration
Openstack live migrationymtech
 

What's hot (20)

Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 
[142]편광을 활용한6 dof 전현기
[142]편광을 활용한6 dof 전현기[142]편광을 활용한6 dof 전현기
[142]편광을 활용한6 dof 전현기
 
주키퍼
주키퍼주키퍼
주키퍼
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
 
[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완
 
Redis
RedisRedis
Redis
 
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
 
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
 
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선
 
모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개
 
제3회난공불락 오픈소스 인프라세미나 - Pacemaker
제3회난공불락 오픈소스 인프라세미나 - Pacemaker제3회난공불락 오픈소스 인프라세미나 - Pacemaker
제3회난공불락 오픈소스 인프라세미나 - Pacemaker
 
[112]clova platform 인공지능을 엮는 기술
[112]clova platform 인공지능을 엮는 기술[112]clova platform 인공지능을 엮는 기술
[112]clova platform 인공지능을 엮는 기술
 
Cubrid Inside 5th Session 4 Replication
Cubrid Inside 5th Session 4 ReplicationCubrid Inside 5th Session 4 Replication
Cubrid Inside 5th Session 4 Replication
 
[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)
 
[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinux[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinux
 
Cubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 MigrationCubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 Migration
 
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
 
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
 
Openstack live migration
Openstack live migrationOpenstack live migration
Openstack live migration
 

Similar to 3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc

오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0sprdd
 
Osc4.x installation v1-upload
Osc4.x installation v1-uploadOsc4.x installation v1-upload
Osc4.x installation v1-uploadDong-Hwa jung
 
Pivot3 overview
Pivot3 overviewPivot3 overview
Pivot3 overviewCDIT-HCI
 
Cloud datacenter network architecture (2014)
Cloud datacenter network architecture (2014)Cloud datacenter network architecture (2014)
Cloud datacenter network architecture (2014)Gasida Seo
 
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)Amazon Web Services Korea
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드KwangSeob Jeong
 
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
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack CommunityOpen Source Consulting
 
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo,  and application case of SK TelecomSQL-on-Hadoop with Apache Tajo,  and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo, and application case of SK TelecomGruter
 
Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Gruter
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기YoungSu Son
 
Dragon flow and tricircle
Dragon flow and tricircleDragon flow and tricircle
Dragon flow and tricircleYongyoon Shin
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Gruter
 
Backend Master | 2.1.4 Cache - Redis Clustering part.1
Backend Master | 2.1.4 Cache - Redis Clustering part.1Backend Master | 2.1.4 Cache - Redis Clustering part.1
Backend Master | 2.1.4 Cache - Redis Clustering part.1Kyunghun Jeon
 
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance TuningJi-Woong Choi
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재PgDay.Seoul
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Sung-jae Park
 
2node cluster
2node cluster2node cluster
2node clustersprdd
 
2node cluster
2node cluster2node cluster
2node clustersprdd
 
Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나sprdd
 

Similar to 3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc (20)

오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0
 
Osc4.x installation v1-upload
Osc4.x installation v1-uploadOsc4.x installation v1-upload
Osc4.x installation v1-upload
 
Pivot3 overview
Pivot3 overviewPivot3 overview
Pivot3 overview
 
Cloud datacenter network architecture (2014)
Cloud datacenter network architecture (2014)Cloud datacenter network architecture (2014)
Cloud datacenter network architecture (2014)
 
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
 
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회
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community
 
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo,  and application case of SK TelecomSQL-on-Hadoop with Apache Tajo,  and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
 
Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
 
Dragon flow and tricircle
Dragon flow and tricircleDragon flow and tricircle
Dragon flow and tricircle
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014
 
Backend Master | 2.1.4 Cache - Redis Clustering part.1
Backend Master | 2.1.4 Cache - Redis Clustering part.1Backend Master | 2.1.4 Cache - Redis Clustering part.1
Backend Master | 2.1.4 Cache - Redis Clustering part.1
 
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2
 
2node cluster
2node cluster2node cluster
2node cluster
 
2node cluster
2node cluster2node cluster
2node cluster
 
Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나
 

More from 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
 

More from 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인가?
 

3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc

  • 1. 분산시스템 개발 (nBase-ARC 예) 이규재 분산시스템개발랩/Naver Labs ⓒ NAVER Corp.
  • 2. 목차 1. 왜 분산시스템이 필요한가? 2. 왜 분산시스템이 만들기 어려운가? 3. nBase-ARC 예 4. 개발을 넘어서 운영으로
  • 4. 필요성 • Scale-out cluster ü 한대로 처리되지 않는 경우에 대비 ü 비용 효율성을 고려해 일반 computer를 사용해 시스템을 구축 ü 초기에는 적게 구축하고 서비스 부하가 늘어나면 증설 ü 서비스에 영향이 없어야 한다 • 새로운 플랫폼을 만드는 이유? ü 있는 것 잘 쓰고, 없는 것 만들고 ü 있기는 한데, 좀 아쉽다
  • 5. 예) nBase-ARC를 만든 이유 (1/2) • Session 저장소의 역할과 서버간의 데이터 공유를 쉽게 할 수 있도록 해주는 플랫폼으로 R DBMS 기반의 분산 저장소 사용 è 디스크 기반 Scale out cluster • 읽기 연산 뿐만 아니라 많은 쓰기 연산이 필요 è In memory • 쓰기 연산이 많아 분산 caching을 해도 문제가 해결되지 않음 è DB
  • 6. 예) nBase-ARC를 만든 이유 (2/2) REDIS is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure serv er since keys can contain strings, hashes, lists, sets and sorted sets. Simple, Fast, Persist (RDB, AOF), Available (replication) REDIS 가 가장 적합한 단위 저장소로 보였지만, 제공되는 자료 구조 만으로는 효율적인 세션 저장 처리가 어려워 보임 그리고 scale-out solution (Redis cluster)가 없었다. (기능이 확장된) Redis 기반의 고성능, 고가용, scale-ou t 클러스터 DB 필요
  • 7. Zookeeper Ensemble Configuration Master Leader Election Gathering opinion HB HB Opinion HB Cluster Controller Leader Follower Follower Reconfiguration Fail-over Failure Detection nBase-AR Redis Cluster BAND GAME CAFE NEWS BLOG N-DRIVE POST SHOPPING WEBTOON … C Redis Cluster Redis 기반의 분산 메모리 저장소로 다양한 구조체에 대한 in-memory 고속 연산을 분산 환경에서 동일하게 제공 고가용 Multi-Cluster service pool Cluster는 일관성을 보장하는 복제 layer 기반의 복제그룹의 집합이며, nBase-ARC는 복수의 cluster를 운용 서비스 중단 없는 scale-out, scale-in, upgrade 서비스 중단 없이 장비를 투입/철회해 데이터 저장 공간 및 처리량을 확장/축소
  • 8. 2. 왜 분산시스템이 만들기 어려운가?
  • 9. 실패는 항상 존재 (1/3) • Process의 failure는 항상 있다고 생각하며 작성해야 한다 • SPoF (Single Point of Failure) 가 없어야 한다 • 시스템의 부분 실패가 전체 실패가 되지 않도록 design 해야 한다. • Failure가 발생하더라도 시스템의 정합성이 위배되지 않아야 한다
  • 10. 정확성 검증과 테스트가 어렵다 (2/3) 정확성 (correctness) Sequential program은 statement 수행의 사전 조건, 사후 조건에 대한 assertion 등을 이용 해서 검증. Distributed program의 경우 여러 process에 의해 실행되는 가능한 모든 실행 조합이 검증의 대상이기 때문에 어렵다. 논리적 (집합적)으로 사고해서, 프로그램이 가져야 하는 속성 (property)를 정의하고 이 속성이 만족되는 지 검증해야 한다. - Safety property: something bad will not happen - Liveness property: eventually something good happens 테스트 Control/Fault injection 등의 방식을 도입 è 검증된 이론, open source 등의 사용이 매우 필요
  • 11. 몇 가지 추상적 개념이 더 필요하다 (3/3) Sequential Programming - Array, hash, set - If-then-else, loop Concurrent Programming - thread, mutex, semaphore, transaction - File, memory (address space) Distributed Programming - Process, link, time (failure detection) - Broadcast, shared memory, consensus (atomic commit, group membership…)
  • 13. nBase-ARC 데이터 모델, Query 모델 Key è data structure (hash, list, set, sorted set, value) 각 자료 구조에 대한 연산을 API 형태로 제공 (get, set, hset, hget …) CAP perspective 단절 (partition) 발생 시, Consistency를 보장 . 단절 된 부분은 서비스에서 제외됨 연산이 제공하는 정합성 Strong consistency (모든 읽기는 이전에 쓰여진 값을 읽는다) 0 1 2 8191 PG 0 PG 1 PG N PGS 1 PN Partition number PGID Partition Group ID PGS 2 PGS 3 PGS 4 PGS 5 PGS 6 PGS PGS ID CRC16(key) % 8192 복제 그룹 분산 모델 전체 그림
  • 14. Replication (Broadcast) (1/3) • Redis 복제는 비 동기 복제로서 응답된 요청이 복제 관계를 구축하더라도 유실될 수 있다 (Durability 위배) • 이를 해결하기 위해서 복제 layer를 새로 만들었다 State Machine Replication Deterministic finite automation and atomic broadcast of every event • Atomic broadcast (total order broadcast) ü + FIFO ordering property
  • 15. Replication (Broadcast) (2/3) Redis 복제 Redis
  • 21.  
  • 23.  
  • 36.  
  • 37. Replication (Broadcast) (3/3) nBase-ARC 복제 Ack Replicator Replicator set a 1 get b SMR Memory log SMR memory mapped file set a 1 get b Memory log memory mapped file redis Data (op.) data data …… OK data Safe …… OK redis Safe
  • 38. Leader Election (Consensus) • Configuration Master의 관리 process인 cluster controller는 복수개의 process로 구성된다 • 특정 시점 기준으로 하나의 process만 클러스터 감시 결과에 대한 동작을 한다 (leader) • Leader process의 장애 발생시 Zookeeper의 leader election 기능을 (recipe) 이용해 가용한 follower process 중 하나 가 leader로 선출 leader election sequence CC1 CC2 CC3 leader offer offer offer CC1 CC2 CC3 leader election sequence CC2 CC3 CC1 watch event watch event leader (장애 발생) CC2 CC3
  • 39. Failure detection • Timeout 기반의 failure detector를 구현 • 응용레벨 ping 명령어에 대한 응답 여부로 (heart beat) 가용성 파악 • HB process가 failure 발생하는 경우 등을 고려 해 다수의 HB process 존재 • Zookeeper를 사용하며, 감시 대상에 대한 failure 발생시 (HB timeout) 감시 대상에 해당되는 ZNODE의 child로 epheme ral ZNODE 형태로 대상 상태에 대한 의견을 제시 • Cluster controller는 특정 정족 수 이상의 failure 의견이 제출된 경우 감시 대상을 failure 상태로 확정 (zookeeper watch 기능 이용) PGS HB1 Failure Failure detection PGS (ZNODE) HB2 opinion Add opinion opinion (ZNODE) HB1 opinion
  • 40. Atomic Commitment (Consensus) (1/2) • 클러스터 확장 및 축소 방식으로 데이터 분할 부분에 대한 online migration을 이용한다. • Migration 과정은 원본 partition group 의 migration 데이터에 대한 dump, load, log catch-up 및 마지막 단계에서의 2 PC (2 phase commit) 프로토콜로 구성된다. Gateway
  • 52.  
  • 53. Atomic Commitment (Consensus) (2/2) • 2PC 상의 coordinator는 cluster controller이며, cohort는 복수의 gateway다 • 아래 그림에서 Delay 명령어가 2PC 상의 prepare 단계이고 • Redirect 명령어가 commit 단계이다 Client Query Gateway Log Delay Source PG Target PG Client Query Reply Gateway Redirect Query Reply Source PG Target PG
  • 54. 4. 개발을 넘어 운영으로
  • 55. 운영하다 보면 (1/2) • 개발 시에 생각하지도 못했던 현상이 발생하기도 합니다 (신비 체험?) • 내 서비스와 전혀 상관 없는 다른 장비가 restart 했는데 영향을 받는 경우 (timeout) Access Switch Firmware bug 과부화에 의한 packet drop PM PM PM 전혀 관계 없는 장비 nBase-ARC 장비 Restart Timeout
  • 56. 운영하다 보면 (2/2) • TCP connection이 한쪽만 끊겨 있기도 합니다 (하나의 TCP connection에 대해) • Master replicator는 slave로의 TCP connection이 끊김 • Slave replicator는 master로의 TCP connection이 살아있음 • Cluster controller는 slave의 상태가 정상인 것으로 판단하고 문제 처리 안하고 있음 Master Slave x 복제 데이터 o x 연결 요청 • 운영 조직이 방화벽 (iptables) 작업을 진행 했음 • iptables는 kernel 모듈인 conntrack 에서 TCP 소켓의 상태를 결정 • FIN, RST 메시지가 방화벽에 의해 차단되어 slave는 연결이 종료 된 것을 알지 못함 • Slave 연결 시 keep alive 설정으로 master 단의 방화벽에서 connection 정보를 갱신할 수 있도록 수정
  • 57. 고민하고 있는 부분 들 • 고속으로 동작하기 때문에 운영자가 직접 개입할 상황이라면 이미 대형 장애 상황이다 • 장비의 효율적인 사용을 위해 한 장비에 여러 Redis process를 가동. 프로세스간 간섭이 없도록 시스템 자원 (CPU, Memory , Network, Disk) 등을 격리 시키는 방법이 필요하다 • Global 환경에 구축됨에 의해 좀더 자동화된 운영 방식이 필요하다 More Autonomous Cluster Resource Efficiency Global Management • 클러스터 관리 분권화 • 운영자의 개입을 없애는 방향으로 • PM Pool에 대한 리소스 관리 • 자동화된 rebalancing • 여러 Zone 관리 • Remote monitoring management
  • 59. Zookeeper Ensemble Configuration Master Leader Election Gathering opinion HB HB Opinion HB Cluster Controller Leader Follower Follower Reconfiguration Fail-over Failure Detection nBase-ARC Redis Cluster BAND GAME CAFE NEWS BLOG N-DRIVE POST SHOPPING WEBTOON … Redis Cluster Redis 기반의 분산 메모리 저장소로 다양한 구조체에 대한 in-memory 고속 연산을 분산 환경에서 동일하게 제공 고가용 Multi-Cluster service pool Cluster는 일관성을 보장하는 복제 layer 기반의 복제그룹의 집합이며, nBase-ARC는 복수의 cluster를 운용 서비스 중단 없는 scale-out, scale-in, upgrade 서비스 중단 없이 장비를 투입/철회해 데이터 저장 공간 및 처리량을 확장/축소 이전