Why ARCUS?

ARCUS(아커스)

ARCUS는 Memcached와 ZooKeeper 기반으로 고성능과 운영 안정성을 가지도록 개발한 in-memory 캐시 클러스터입니다. 클러스터 규모에 비례하는 고성능을 제공하고 운영 도중에 수평 확장이 자유로우며, 내결함성(fault tolerance) 기능을 내장하여 일부 캐시 노드에 문제가 생기더라도 중단 없는 캐시 기능을 제공합니다. 네이버, 라인, 카카오, 롯데 홈쇼핑 등 다양한 기업의 서비스들에서 오랫동안 장애 없이 사용되어 오며, 고성능 및 안정성이 중요한 서비스에 핵심 캐시 역할을 해내고 있습니다.

Main Feature

클러스터 규모에 비례하는 고성능을 제공

  • 처리용량: (노드 수) * 100K ops

  • 응답속도: 수 ms 이내 (네트워크 환경에 의존)

유연한 클러스터 수평 확장/축소

  • 이벤트 등으로 요청량 변동이 예상되는 경우, 운영 중이더라도 즉시 클러스터 확장이 가능합니다.

내결함성 (fault tolerance)

  • 일부 캐시 노드에 문제가 생기더라도 중단 없는 캐시 기능을 제공합니다.

  • 하드웨어 문제 등으로 일부 캐시 노드에 문제가 발생하면 해당 캐시 노드를 클러스터에서 즉시 제거합니다.

  • 정상 캐시 노드들로만 클러스터가 구성되도록 자동으로 변경됩니다.

최적의 메모리 관리

  • 캐시 노드가 사용할 메모리 크기를 설정하면, 해당 메모리 공간만을 사용하여 동작합니다.

  • 저장 공간으로 swap이 발생하지 않으므로, 갑자기 느려지는 현상이 발생하지 않습니다.

다양한 collection 타입 지원

  • memcached의 Key-Value 데이터 타입 외에 네 가지의 collection 타입을 제공합니다. 다양한 서비스 요구사항에 따라 적절히 활용할 수 있습니다.

  • collection 타입의 크기와 OverflowAction을 설정하면 자동으로 크기를 관리해주므로, 응용 로직을 간단하게 처리할 수 있습니다.

  • collection 데이터 타입의 종류는 아래와 같습니다.

    • List : a doubly-linked list structure.

    • Set : an unordered set of unique data.

    • Map : an unordered set of <field, value>.

    • B+Tree : a b+tree structure, conceptually similar to sorted map.

prefix 단위 관리 기능 제공

  • 캐시 데이터를 prefix 단위로 그룹화하여 관리할 수 있습니다.

  • prefix:key 와 같은 형태를 Arcus Cache Key로 사용할 수 있습니다.

  • Prefix 단위로 메모리 용량, 요청 처리량, hit ratio 등의 정보를 확인할 수 있습니다.

  • 특정 prefix를 갖는 모든 캐시 데이터를 일괄 삭제할 수 있습니다.

Additional Feature

캐시 장비와 노드에 대한 모니터링 기능 제공

  • 잼투인에서 직접 개발한 모니터링 도구를 제공합니다.

  • 캐시 장비의 리소스 사용량 모니터링이 가능합니다.

  • 캐시 노드의 캐시 용량과 요청 처리량 모니터링이 가능합니다.

  • Prefix 단위 모니터링, 비교 모니터링, 알람 기능

이중화를 통한 고가용성 제공

  • Master-Slave 구성의 semi-sync 방식 복제 기능을 제공합니다.

  • Master 캐시 노드에 장애가 발생 시 slave 노드를 master 노드로 자동 승격시켜주는 기능을 제공합니다.

  • 이를 통해 캐시 데이터를 보다 안전하게 보관할 수 있습니다.

Spring 환경 캐시 적용 라이브러리 제공

  • 어노테이션 기반으로 ARCUS 캐시를 적용할 수 있습니다.

  • 캐시 대상 API 목록을 properties 파일로 설정하여 ARCUS 캐시를 WAS 재구동 없이 적용할 수 있습니다.

Last updated