
데이터베이스
CassandraDB
아파치 카산드라는 자유-오픈 소스 분산형 NoSQL 데이터베이스 관리 시스템의 하나로, 단일 장애점 없이 고성능을 제공하면서 수많은 서버 간의 대용량의 데이터를 관리할 수 있음
Github Stars : ★ 9116
사용 기업

쿠팡

하이퍼커넥트

카카오모빌리티

카카오

우아한형제들

라인

네이버

뤼이드

스윗코리아

씨제이이엔엠

우아한형제들Tech
라인
개발자가 손수 대규모 Cassandra를 신규 클러스터로 이전하기
안녕하세요. VOOM Server Unit에서 LINE VOOM의 서버 개발을 맡고 있는 신홍중입니다. LINE VOOM 서비스는 포스트와 코멘트, 좋아요(like)와 같은 메인 콘텐츠 저장소로 Cassandra를 사용하고 있습니다. Cassandra는 멀티 데이터 센터를 구축해서 각 데이터 센터에 데이터를 복제한 뒤 서비스를 제공할 수 있습니다. 이를 통해 특정 데이터 센터가 다운되더라도 데이터 손실을 방지할 수 있으며, 사용자가 지역적으로 근접한 데이터 센터에서 데이터를 읽고 쓸 수 있게 함으로써 응답 시간을 단축시킬 수 있는데요. 최근 서버랙 공간 부족과 장비 노후화를 해결하기 위해 신규 클러스터를 구축한 뒤 이 기능을 이용해서 데이터를 복제하는 방식으로 데이터 센터를 이전하는 작업을 진행했습니다.데이터 센터 간 복제를 이용해 데이터 센터를 이전하기 위해서는 다음과 같은 매우 복잡한 과정이 필요했습니다.• 신규 IDC의 개별 노드에서 순서대로 rebuild 명령어를 수행해 데이터 복제• 기존 IDC의 개별 노드에서 순서대로 decomission 명령어를 수행해 연결 해제각 과정은 다양한 테스트를 통해 철저히 검증할 필요가 있었습니다. 데이터 이전의 안전성과 정확성을 확보하기 위한 필수 단계였는데요. 이번 글에서는 멀티 데이터 센터를 구축해 데이터를 복제한 방법과, 각 단계에서 진행한 테스트 및 검증 방법을 살펴보겠습니다.Cassandra 이전 작업과 함께 진행하려고 했던 과제들본격적으로 이야기를 시작하기 전에, Cassandra 이전과 함께 진행하려고 했던 여러 과제와 그중 실제로 어떤 과제를 진행했는지 말씀드리겠습니다.이번 작업이 결정된 시점에 저희는 Cassandra를 2.0.x 버전으로 운영하고 있었습니다. 당시 DBA 조직의 지원을 받고 있던 다른 데이터베이스와는 달리 Cassandra는 서버 개발자들이 직접 구축한 뒤 유지 보수하고 있었으며, 여러 서비스가 한 클러스터를 공유하며 각 서비스가 자체적인 키 스페이스를 사용하고 있었습니다. 또한 서버 자원의 확보 시기에 따라 SSD와 PCIe-SSD를 혼용하는 등 다양한 장비가 통합된 이질적인 구성이었는데요. 이로 인해 환경이 복잡해지면서 성능과 안정성이 영향을 받고 있었습니다.저희는 이번 작업이 기존 시스템을 개선할 수 있는 적기라고 판단하고 키 스페이스 분리 및 Cassandra의 버전 업그레이드를 함께 진행하려고 했는데요. 결과적으로 키 스페이스 분리는 진행할 수 있었지만, 버전 업그레이드는 뒤로 미룰 수 밖에 없었습니다. 테스트 과정에서 버전 간 호환성 문제 때문에 버전을 간단히 업그레이드하는 것이 어렵다는 것이 밝혀졌기 때문인데요. 버전 업그레이드를 시도했던 과정은 이후 테스트 이력을 공유하는 과정에서 보다 자세히 소개하겠습니다.멀티 데이터 센터 구축 후 데이터를 복제하는 방법이제 멀티 데이터 센터를 구축하고 데이터 센터 간 데이터를 복제한 방법을 살펴보겠습니다.Cassandra는 nodetool이라는 유틸리티를 통해서 클러스터를 관리할 수 있는 여러 명령어를 제공합니
cassandra
nodejs
스푼
2023 AWS re:Invent — Safe Migration at Netflix
2023 AWS re:Invent — Safe Migration at Netflix안녕하세요, 스푼라디오 Service Platform Team의 백엔드 개발자 Elliott입니다. 개발자로서의 커리어에서 처음으로 AWS re:Invent에 참여하게 되었는데요, 이번 행사에서 다양한 키노트와 세션들을 경험하며 많은 인사이트를 얻을 수 있었습니다. 여기서 제가 가장 인상 깊었던 세션과 그 내용에 대해 소개해드리고자 합니다.AWS re:InventAWS re:Invent는 아마존 웹 서비스가 주최하는 대규모 기술 컨퍼런스로, 클라우드 컴퓨팅과 관련된 최신 트렌드와 기술을 공유하는 장입니다. 매년 라스베가스에서 열리며, 전 세계의 개발자, 엔지니어, IT 전문가들이 모여 새로운 아이디어와 기술을 나눕니다.AWS re:Invent 2023 행사장 입구KeyNoteAWS CEO 아담 셀립스키최근 산업계 전반의 패러다임이 인공지능(AI)을 중심으로 전환되면서, AWS re:Invent의 발표 내용 대부분은 AI 관련 신규 서비스와 기존 서비스의 업데이트, 새로운 버전 등에 집중되었습니다. 특히 주목할 만한 부분은, 엔비디아(NVIDIA)의 CEO인 젠슨 황이 연사로 초청되어 현재 AWS와 엔비디아 간의 협업에 대해 발표한 점입니다. 이 협업은 AI와 관련된 기술 개발에 중요한 역할을 하고 있으며, 이번 행사에서 중요한 하이라이트 중 하나로 다뤄졌습니다.Technologies세션 내용을 소개하기 전에, 먼저 세션에서 다룬 주요 기술들에 대해 간략히 설명드리겠습니다.CassandraApache Cassandra는 고성능, 분산형 NoSQL 데이터베이스 관리 시스템으로, 뛰어난 확장성과 가용성을 제공합니다. Cassandra는 대규모 데이터셋을 다루는 빅데이터 애플리케이션에 적합하며, 특히 많은 양의 데이터를 쓰고 읽는 작업에 최적화되어 있습니다.분산 아키텍처: Cassandra는 데이터를 여러 노드(서버)에 걸쳐 분산시키며, 이는 높은 확장성과 장애 내성을 보장합니다.스케일 아웃: 수평적 확장이 가능해, 데이터양이 증가함에 따라 더 많은 노드를 추가할 수 있으며, 이는 시스템의 성능을 균일하게 유지합니다.마스터리스 아키텍처: 모든 노드가 동일한 역할을 하므로, 단일 장애 지점(Single Point of Failure)이 없습니다.복제: 데이터는 자동으로 여러 노드에 복제되어, 어느 하나의 노드가 실패해도 데이터의 손실이 없습니다.고성능: 특히 대량의 데이터를 빠르게 쓰고 읽는 데 최적화되어 있습니다.Cassandra ThriftCassandra Thrift는 Apache Cassandra의 초기 데이터베이스 인터페이스 중 하나입니다. Thrift는 아파치 소프트웨어 재단에서 개발한 크로스-플랫폼 및 언어 간 서비스 개발 프레임워크로, 여러 프로그래밍 언어를 지원합니다. Cassandra Thrift 인터페이스는 Cassandra의 초기 버전에서 클라이언트 애플리케이션과 데이터베이스 간의 통신을 위해 사용되었습니다.언어 중립성: Thrift는 여러 프
cassandra
java
nodejs
thrift
하이퍼커넥트
머신러닝 어플리케이션을 위한 데이터 저장소 기술
하이퍼커넥트는 내부적으로 다양한 머신러닝 기반의 어플리케이션을 운용 중입니다. 개인화 추천 시스템, 실시간 이상 유저 탐지 시스템, 검색 엔진, 챗봇 등 머신러닝 모델을 메인으로 하는 어플리케이션들이 이에 해당하죠.이런 머신러닝 어플리케이션에서 데이터는 각별한 의미를 가집니다. 컴퓨터 비전, 자연어 처리, 추천 시스템 등 분야를 가리지 않고 데이터가 많으면 많을수록 머신러닝 모델의 성능은 더 높아지고 있으며, 세계적인 기업들은 더 많은 데이터 수집에 투자를 아끼지 않고 있습니다. 하지만 더 많은 데이터를 수집할수록, 저장과 관리를 어떻게 해야 할지에 대한 고민이 생겨나기 시작합니다. 어떤 데이터 저장소를 사용하는지에 따라 머신러닝 어플리케이션의 성능과 개발 속도가 달라질 수도 있기 때문입니다.특히 추천 시스템 처럼 테이블 형태(tabular)의 데이터를 많이 사용하는 어플리케이션에서는 모델 “학습” 로직에서의 데이터 사용 패턴과 모델 “서빙” 로직에서의 데이터 사용 패턴이 현저하게 다릅니다. 데이터의 사용 패턴이 달라지면 데이터 저장소 기술도 달라져야 합니다. 데이터 저장소를 잘못 사용하게 된다면 어플리케이션의 응답 시간이나 처리 시간이 낮아질 수 있기 때문이죠. 기존 백엔드 어플리케이션을 개발하면서는 고려하지 않았던 모델 “학습”과 “서빙”의 데이터 사용 패턴 차이 문제를 해결하기 위한 저장소에 대한 고민이, 머신러닝 어플리케이션 개발에서는 매우 중요해지고 있습니다.이번 포스트에서는 머신러닝 어플리케이션을 위한 데이터 저장소 기술에 대해 다루어보려 합니다. 머신러닝 어플리케이션의 데이터 사용 패턴을 분석하고, 또 데이터 사용 패턴에 적합한 데이터 저장소엔 어떠한 것들이 있는지에 대해서 소개합니다. 또한 하이퍼커넥트는 어떤식으로 머신러닝을 위한 데이터를 저장하고 관리하는지도 함께 공유해드리고자 합니다.머신러닝 어플리케이션에서의 데이터 사용 패턴대부분의 머신러닝 어플리케이션에서는 모델 학습 로직과 모델 서빙 로직이 분리됩니다.학습 로직: 수집된 데이터를 불러오고 가공한 뒤, Tensorflow, PyTorch 등의 머신러닝 프레임워크를 이용하여 모델을 학습수집된 데이터를 불러오고 가공한 뒤, Tensorflow, PyTorch 등의 머신러닝 프레임워크를 이용하여 모델을 학습 서빙 로직: 온라인에서 필요한 데이터를 불러온 후, 해당 데이터를 입력으로 하여 머신러닝 모델을 추론하고, 그 결과를 제품이나 서비스에서 활용비전 모델과 같이 입력이 이미지 바이너리인 경우에는, 모델 추론을 위해 데이터 저장소에서 통계 정보와 같은 추가적인 데이터를 불러올 필요가 없기 때문에 서빙 로직에서 별도의 데이터 저장소가 필요하지 않을 수 있습니다. 하지만 추천 시스템과 같은 머신러닝 어플리케이션에서는 서빙 로직에서 모델 추론을 위해 온라인 데이터를 불러와야 합니다. 예를 들어 사용자라면 성별, 국가 코드, 생일, 가입 날짜, 평균 구매 금액 등이 있을 수 있고, 상품이라면 가격, 카테고리, 구매 횟수 등이 모델 추론 시 사용되는 온라인 데이터라고 할 수 있습니
cassandra
mongodb
SK텔레콤
Kong API Gateway 설치 및 맛보기~
Install KongKong을 설치하는 다양한 벙법이 존재한다. 직접 배포판을 다운받아서 설치할 수 있으며, Docker를 이용하여 설치할 수 도 있다. 또한 K8S Ingress Controller로 설치할 수 있다.우리는 Docker로 설치할 것이다. Docker로 설치하면 다양한 환경에서 동일한 구성을 생성할 수 있어 여러모로 도움이 된다.구성요소• Database: Kong 은 서비스, 라우팅, 각종 인증, 플러그인들의 사용 정보를 위해서 Database가 필요하다. Kong에서는 PostgreSQL, Cassandra 중 선택할 수 있다.• Kong API Gateway: Kong API Gateway 는 클라이언트 요청을 받아 들이고, 서비스로 라우팅 하는 핵심 역할을 수행한다.Docker network 설정Kong과, Database는 동일한 Docker network 상에서 설치 할 것이다.다음 명령어로 network를 설정해 보자.kong-net 이라는 네크워크 설정을 했다.Database 설치.Kong 은 정책과 메타정보들을 저장하기 위해서 데이터베이스가 필요하다. Kong에서는 공식적으로 PostgresSQL, Cassandra를 지원하고 있다.우리는 Kong 데이터베이스를 위해서 PostgreSQL을 설치할 것이다.PostgreSQL 설치• '-d': detach 모드로 컨테이너를 실행한다.• '--name': kong-database 라는 컨테이너 이름으로 실행한다.• '--network': 이전에 생성한 docker network 를 지정했다. 해당 네트워크 상에서 수행 되도록 설정한다.• '-p :': 5432는 Postgres 의 기본 포트이다. 즉 Docker를 수행하는 호스트 5432와 내부 컨테이너 포트 5432와 바인딩 시켜준다. 이렇게 되면 host에서 localhost:5432라고 하면 직접 접속이 가능하다.• '-e': Docker를 수행할때, environment 값을 설정해 줄 수 있다. 이 값을 설정하면, 컨테이너에서 해당 환경값을 이용하여 서비스를 기동 시킬 수 있게 된다.• POSTGRES_USER: 사용자 이름이다. kong으로 설정했다.• POSTGRES_DB: 데이터베이스는 kong 으로 생성한다.• POSTGRES_PASSWORD: 비번 역시 kong으로 설정한다.• postgres:9.6 : 데이터베이스 이미지와 버젼을 지정한다. 컨테이너는 가능하면 항상 버젼을 지정하는 것이, 버젼 충돌로 인한 장애를 미연에 방지할 수 있으므로 꼭 지정된 버젼을 기술하자.테스트 하기위 와 같이 수행하면 해당 Postgres Container 에 직접 접근할 수 있다.Kong을 위한 Database 초기화 하기.이제 DB를 생성했으므로 Database를 초기화 해보자.kong 은 migrations라는 커맨드를 이용하여, 데이터베이스를 초기화 할 수 있다.• '--rm': 이는 docker를 1회만 수행하고, 컨테이너를 삭제하라는 의미이다.• '--network=kong-net': 데이터베이스가
cassandra
docker
연관 기술 스택

AWS DynamoDB

Couchbase

MongoDB