본문 바로가기

Home > 정보마당 > 공개SW 활용 성공사례

공개SW 활용 성공사례

오픈소스 기반 캐시 클러스터' ARCUS'를 통한

온라인몰 속도 개선 및 DB 부하 절감... '잼투인(주)'

 

- Open UP -

 

1. 기업소개

잼투인㈜은 네이버에서 개발한 ARCUS(아커스) 캐시 클러스터가 오픈소스로 전환된 직후, ARCUS 캐시의 핵심 개발자가 2014년 창업한 기업이다. ARCUS 캐시의 개발을 이어가면서 이를 더욱 발전시키고자 하며, 네이버 외 여러 국내 기업의 웹/모바일 서비스들과 국내 클라우드 기업들에 ARCUS 캐시 기술을 제공하여 함께 성장하고자 하며, 글로벌 NoSQL 시장에도 진출하여 ARCUS 캐시 포함한 다양한 NoSQL 기술에서 높은 경쟁력을 가진 기업으로 성장하는 것을 목표로 한다.

 

jam2in_1.png

 

잼투인은 ARCUS 캐시 기술의 확장 외에도 다양한 응용 환경에서 ARCUS 캐시를 쉽게 사용하고 운영하기 위한 사용 편의성과 운영 편의성 기술을 개발하여 제공하고 있으며, ARCUS 캐시 기술 전반에 대한 고품질의 컨설팅, 기술지원을 제공하고 있다. ARCUS 캐시는 현재 네이버, 라인, 밴드 외에도 카카오, 롯데홈쇼핑, 하이마트, 삼성카드 등의 다양한 기업들의 서비스에서 사용되고 있다. 잼투인이 직접 개발하는 기술력과 다양한 서비스 환경에서 ARCUS 캐시에 대한 오랜 기술지원 경험을 바탕으로, 항상 정확하고 신뢰성 있는 ARCUS 기술 서비스를 고객사에 제공하고 있다.

 

2. 오픈소스 기술 관련 제품/서비스 소개

ARCUS는 응용에서 원격 캐싱(remote caching) 서비스로 사용하는 메모리 캐시 클러스터이다. 일반적으로 back-end 저장소인 DB의 앞 단에서 빈번히 조회되는 데이터를 캐싱하여 서비스하는 용도로 사용되며, 여러 응용 서비스들에 빠른캐시가 응답성을 제공하면서 DB로의 부하를 경감시켜 준다. 그 외에도 복잡한 계산에 의한 결과물 또는 웹 처리상의 중간 데이터 등을 신속히 저장 및 조회할 수도 있으며, 캐싱 데이터를 여러 프로세스들 간에 공유하여 사용할 수 있다.

 

jam2in_2.png

 

ARCUS 캐시는 네이버의 실서비스에 사용할 목적으로 Memcached와 ZooKeeper 기반으로 고성능과 높은 운영 안정성을 가지도록 확장 개발한 메모리 캐시 클러스터이다. 클러스터 규모에 비례하는 고성능을 제공하면서 다양한 데이터 구조를 지원하며, 운영 도중에 수평 확장이 자유로우며, 내결함성(fault tolerance) 기능을 내장하여 일부 캐시 노드에 문제가 생기더라도 중단 없는 캐시 기능을 제공한다. 여러 기업의 다양한 서비스들에서 오랫동안 장애 없이 사용된 이력은 고성능 및 안정성이 중요한 응용 서비스들의 핵심 캐시 역할에 ARCUS 캐시가 최적임을 입증하고 있다.

 

jam2in_3

 

ARCUS 캐시 클러스터의 주요 기술 특징을 정리하면 다음과 같다.

  • 클러스터 규모에 비례하는 고성능을 제공한다.
    1.  처리용량: (샤드 수) * 100K ops
    2.  응답속도: 수 ms 이내(네트워크 환경에 의존)
  • 운영 중에도 클러스터 수평 확장/축소가 가능하다.
    1.  이벤트 등으로 요청량 급증이 예상되는 경우, 즉시 클러스터 확장 가능
    2.  이벤트 종료 이후에는 다시 클러스터 축소 가능
  • 내결함성 기능으로 고장 발생 시에도 고성능 캐시 기능을 중단 없이 제공한다.
    1.  하드웨어 문제 등으로 어떤 캐시 노드가 다운되면, 클러스터에서 즉시 제거
    2.  정상 캐시 노드들로 클러스터 형상을 자동 변경하여 중단 없는 캐시 기능 제공
  • 설정된 크기의 메모리 공간만 사용하여 swap이 발생하지 않는 안정된 캐시이다.
    1.  캐시 노드의 사용 메모리 공간을 설정하고, 설정된 메모리 공간만을 사용하여 동작
    2.  저장 공간으로 swap이 발생하지 않으므로, 갑자기 느려지는 현상이 나타나지 않음
  • 다양한 collection 타입을 지원하여 필요에 따라 적절히 활용할 수 있다.
    1.  List, Set, Map, B+Tree 타입 지원
    2.  유용한 B+Tree 기능: 다양한 BKey 타입, 범위 검색 시의 필터링, Sort Merge Get
  • 캐시 데이터를 Prefix 단위로 그룹화하여 관리할 수 있다.
    1.  캐시 키는 “:” 형태로 구성
    2.  Prefix 단위로 데이터 용량, 요청 처리량, hit ratio 등의 통계 조회 가능
    3.  특정 Prefix를 갖는 모든 캐시 데이터에 대한 일괄 삭제 기능 제공
  • ARCUS 클러스터를 키-밸류 모델의 영구 저장소로도 활용할 수 있다.
    1.  NIPA 기업성장 지원사업으로 ARCUS Persistence 기능 개발
    2.  캐시 용도 외에 영구 데이터 저장 용도로 ARCUS 사용 가능
    3.  ARCUS 노드가 다운되더라도 재구동 시에 데이터 복구 가능

 

ARCUS 캐시 클러스터는 위에 언급한 오픈소스 기술 외에 별도의 커머셜(commercial) 기술을 가지며, 아래와 같은 운영 지원 기술, 사용 편이 기술, 고가용성 기술 등을 제공한다.

  • 캐시 장비와 노드에 대한 모니터링 기능을 제공한다.
    1.  캐시 장비의 리소스 사용량 모니터링
    2.  캐시 노드의 캐시 용량과 요청 처리량 모니터링
    3.  Prefix 단위 모니터링, 비교 모니터링, 알람 기능
  • Java Spring에 한해 캐시 적용API 목록만 지정하여 ARCUS 캐시를 적용할 수 있다.
    1.  응용 코드 변경 없이 ARCUS 캐시 적용이 가능한 방식
    2.  캐시 적용 API 목록만 properties 파일로 설정하여 응용 구동하면 자동 캐시 적용
    3.  캐시 대상 API 목록의 동적 변경 기능
    4.  Cache miss 시에 일시적인DB 부하 증가를 유발하는 cache stempede 방지 기능
  • 캐시 데이터의 이중화를 통해 고가용성을 제공한다.
    1.  Master-Slave 복제 그룹과 semi-sync 방식 복제 기능
    2.  Master 캐시 노드 고장 시 slave 노드의 자동 승격 기능
  • 쿠버네티스 환경에서 ARCUS 캐시 클러스터를 자동 운영할 수 있다.
    1.  ARCUS 캐시 클러스터의 자동 운영을 위한 ARCUS Operator 제공
    2.  쿠버네티스 환경에서 운영 자동화 방식으로 운영 비용 절감 가능

 

ARCUS 캐시 클러스터의 코드와 문서 그리고 기술 자료는 아래 사이트에서 확인할 수 있다.

 

3. 오픈소스 기술 활용 방안

 

일반 사용자를 대상으로 하는 다양한 웹/모바일 서비스 응용들은 임의 시점에 수많은 요청이 들어올 수 있어 높은 요청 처리량과 빠른 응답을 필수로 갖추어야 한다. 기존 DB 기반의 데이터 저장소만 활용해서는 높은 처리 성능을 확보하기가 어려우며, ARCUS 또는 Redis 등과 같은 원격 캐싱 저장소를 활용하여 처리 성능을 확대하는 것이 일반화되었다. 따라서, 현대의 웹/모바일 서비스 개발에서 응용의 원격 캐시는 필수적인 데이터 저장소로 인식되고 있다.

 

ARCUS 캐시 클러스터의 활용 방안은 다음과 같다. 가장 기본이 되는 조회 성능 극대화 외에도 응용에서 다양한 용도로 ARCUS 캐시를 활용할 수 있다.

  • 조회 성능 극대화
    1.  온라인몰에서 카테고리별 상품 목록, 개별 상품정보 등의 조회
    2.  게시 글, 블로그 글, 뉴스 콘텐츠 등의 반복 조회
    3.  그 외에 조회 빈도가 높은 모든 응용 데이터의 캐싱을 통한 조회
  • Counting 처리
    1.  좋아요 개수, Page View 개수 등의 빠른 계산 처리
    2.  특정 IP에서 들어온 과도한 요청 검출
    3.  특정 API에 대한 호출 횟수 제한 기능 구현
  • 세션 캐싱
    1.  세션 정보의 저장과 반복된 세션 정보 조회 처리
    2.  TTL 설정을 통한 세션 만료 처리
  • 리더보드 및 랭킹 구현
    1.  B+tree 유형으로 점수 기준의 사용자 정렬 유지 및 조회 기능
    2.  사용자의 순위 조회와 내 순위에 이웃하는 점수와 사용자 조회
  • SNS 타임라인 구현
    1.  친구 or 구독 관계에 따라 포스트 배달 처리 구현
    2.  여러 B+tree 구조의 사용자 타임라인에 포스터 정보를 배달하는 Push 모델 구현
    3.  여러 B+tree 구조의 발행자 포스트들에서 최신 포스트를 찾아내는 Pull 모델 구현

 

4. 기업의 향후 계획과 맺음말

잼투인은 창업 초기의 목표대로 ARCUS 캐시 기술을 발전시키고 ARCUS 캐시가 여러 응용 서비스들의 성장에 기여할 수 있도록 확산시키며, 이를 통해 얻은 수익은 다시 ARCUS 캐시를 포함하여 다양한 NoSQL 기술의 개발로 확대하며, 이를 통해 글로벌에서도 경쟁력을 가진 NoSQL 데이터베이스 기술을 확보하고자 한다.

 

미래의 다양한 문제를 해결하는 창의적인 결과를 도출하는 데 있어서 다양한 유형의 데이터 처리에 관한 NoSQL 기술도 한몫할 수 있다고 보며, 높은 수준의 NoSQL 기술을 자체적으로 확보하고 있는 것만으로도 기업, 사회, 국가적으로도 큰 힘이 될 수 있다.

 

jam2in_3

 

마지막으로, ARCUS 캐시가 발전하기 위하여 국내에서 ARCUS 캐시에 대한 많은 관심과 자발적 활용이 필요하다. ARCUS 캐시와 경쟁 관계에 있는 Redis 캐시를 서로 비교해 보면, 위의 그림과 같은 차이가 있다. Redis 캐시는 응용에서 요구된 캐시 기능을 적시에 개발하여 제공하면서 많은 자금 기반의 뛰어난 마케팅 능력으로 글로벌 확산을 이룬 기술이지만, Redis 캐시의 내부 동작을 잘 알지 못하고 사용한다면 실서비스에서 큰 문제를 일으킬 수 있다. 반면, ARCUS 캐시는 개발 초기부터 네이버의 실서비스에 투입하기 위한 목적으로 운영 안정성을 추구하여 개발되었으며 오랫동안 장애 없이 동작해 온 이력을 확보한 캐시이다. 잼투인은 인력과 자금, 마케팅 역량의 부족으로 ARCUS 캐시를 제대로 확산시키지 못한 상태이지만, 여러 국내 기업과 공공 기관의 서비스 개발자들이 ARCUS 캐시에 관심을 가지고 많은 자발적 활용으로 도움을 준다면, ARCUS 캐시는 분명 ARCUS 캐시를 이용하는 서비스들에 고성능과 운영 안정성의 도움을 줄 수 있고, 이러한 ARCUS 확산을 기반으로 세계적인 NoSQL 기술로 성장할 수 있을 것이다.

 

 

맨 위로
맨 위로