본문 바로가기
DataBase/NoSQL

[NOSQL] MongoDB의 역할 및 활용 사례

by 스파이디웹 2021. 1. 8.
728x90

NOSQL의 특징과 역할

-NOSQL 자체가 비복잡 대용량 데이터를 저장하기 위한 도구로 쓰이고 있다.

 

-로그데이터를 저장할 때, 실시간 데이터 스트림을 저장할때

 

-부하 분산이 가능하다,(sharding) 데이터의 스키마제약을 받지않는다.(flexible schema)

 

-replicaset 을 통한 HA(High Availability) 높은 가용성

(write,read 구분 및 장애시 사용할 예비 DB 복제 및 마련)

 

MongoDB 알고리즘

  • MongoDB의 경우 확장된 형태의 Raft 컨세서스 모델 사용을 사용하면 컨세서스 알고리즘에는 paxos와 raft가 있다.
  • 레플리카 셋에 참여하는 각 멤버들이 서로 데이터를 동기화하고 노드들 간에 하트비트가 되지 않을때 어떻게 할지 결정하는 알고리즘

Replication 

  • Replication을 통해서 특정멤버에서 데이터 손실이 발생해도 다른 멤버의 데이터로 대체할수 있으므로 고가용성 이점을 가져올 수 있다.
  • 각 각의 멤버는 heart-beat를 통해서 통신을 하는데 만약 primary 노드의 멤버가 통신이 되지 않으면 나머지 노드들 끼리 primary를 선출한다.
  • Primary 노드는 read/write가 가능하며 Secondary노드는 read만 가능하고 secondary노드가 늘어나면 읽기에 대한 분산 처리가 가능하다.
  • Primary노드와 Secondary노드는 데이터를 모두 가지고 있지만 Arbiter노드의 경우 데이터를 가지고 있지 않고 primary노드 선출에 필요한 투표권만 가지고 있다. 그래서 보통 arbiter의 경우 별도의 서버에 두는것이 바람직하다.

Sharding 

  • 데이터의 분산을 통해서 부하를 줄일수가 있다. 
  • Shard Cluster에 Shard를 를 추가하면 Scale-out(수평확장) 가능하고 서버 운영 중에 N대의 서버를 붙여서 사용하며 되므로 유지보수 측면에서도 용이하다. (Shard Rebalancing)

Config Server

  • 3개의 mongod 인스턴스로 구성하는것을 문서상에는 추천하고 있다. 왜냐하면 primary을 선출하기 위해서 적어도 3개 이상의 노드 멤버가 필요하기 때문인다. 
  • mongod 인스턴스 이므로 데이터를 가지고 있으며 해당 데이터에는 shard에 대한 정보와 replication에 대한 메타 정보를 가지고 있으므로 mongos인스턴스에서는 config server의 정보를 통해 query routing기능을 수행한다.

Mongos

  • mongos 인스턴스 이며 DB데이터는 가지고 있지 않으며 단순 query routing기능을 수행한다.
  • 물리 서버가 여러대 이며 클러스터로 구성 되어져 있다면 각각의 물리 서버에 mongos인스턴스를 띄워서 분산 처리를 하는 것이 성능상의 이점을 가져올수 있다.

MongoDB 의 이중화

  • Sharding과 Replication은 필수적으로 해야 함.
  • 3개 이상의 서버에 각각의 서버에 Sharding된 데이터에 Replica Set을 다른 서버에 분산 저장을 해야함
    • 2개에서도 구축이 가능하지만 한쪽가 완전에 shutdown이 될 경우에  failover를 지원할 수가 없다 왜냐하면 각 각의 replica set은 3개의 노드 멤버로 구성되는데 2개의 노드가 죽게되면 primary로 뜰수 없기 때문이다.
  • 적어도 3대 이상의 서버가 필요 하는데 그 이유는 PSA또는 PSS구조를 사용하기 위함
    • PSA : Primary Secondary Arbiter
    • PSS : Primary Secondary Secondary

MongoDB Failover RollBack

  • Failover이후에 replica member가 다시 rejoin 했을 경우 이전 primary의 쓰기는 rollback한다.
  • Rollback은 primary가 쓰기 작업을 완료했지만 secondary가 replication을 못했을 경우에만 필요한다.
  • Primary가 secondary로 다시 rejoin했을때 쓰기는 roll back을 하고 다른 member와 같은 데이터 일관성을 유지한다.
  • MongoDB는 가급적 rollback이 일어나지 않도록 한다. 
    • 네트워크문제로 rollback이 발생할 수가 있다. ( secondary에서 primary의 opertion 처리량을 유지 시킬수가 없을 때)
  • primary가 stepdown되었을때 다른 secondary d에게 쓰기 operation이 replication되었다면 rollback은 일어나지 않는다.
  • rollback data는 bson 형태로 mongod dbpath / rollback 하위에 구성된다.
  • journaling 옵션을 통해서 데이터가 무결성을 지켜주도록한다.
    • 비정상 종료 또는 crash에도 자동 복구 작업이 동작한다.

 MongoDB Failover 구성

  • Replica set의 primary가 사용할수 없을때 나머지 replica set member를 통해서 새로운 primary를 선정한다.
  • Replica set으로 구성된 각각의 member는 10초 동안 heartbeat이 되지 않으면 connection을 잃게 된다. (10초는 디폴트 값)
    • Heartbeat는 각각의 replica set member에게 매 2초마다 ping을 한다.
    • 10초내에 응답이 오지 않으면 해당 member는 접근이 불가능하다고 마크한다.
  • primary와 heartbeat이 되지 않아서 새로운 primary를 선출해야하는 도중에는 쓰기가 불가하고 읽기만 가능하다.
    • 새로운 primary를 선출하는 과정은 보통 12초를 초과하지 않는다.
  • Replica set은 P-S-A(Primary, Secondary, Arbiter) 구조로 구성한다. 

아래의 이미지는 3대의 서버에 이중화를 구축할때의 구성


MongoDB의 사례

사례1)

전자 상거래 플랫폼

-자체 전자상거래 플랫폼에 몽고DB를 사용한다. 모든 자체 채널들에 기능과 서비스를 제공하는 이 플랫폼은 회사가 빠르게 새로운 앱을 설계 배포하면서도 지속적인 고객 경험을 제공

 

사례2)

소셜 기술 기업

-1,000 곳이 넘는 클라이언트들의 소셜 활동을 저장한다. 스프링클러의 몽고DB 플랫폼은 분당 300만 건 이상의 트랜젝션을 처리한다. 또 매달 최소 한가지 주요 기능 및 100 종 이상의 일반 기능을 선보일 수 있도록 지원

 

사례3)

게임 퍼블리셔

-몽고DB로 이전하기 전까지 관계형 데이터베이스를 이용했으며, 이로 인해 확장성에 어려움을 겪었다. 이 기업은 멀티-테넌트 서비스로서의 데이터베이스(database-as-a-service)를 채택함으로써 데이터베이스 인스턴스들을 통합해 성능과 안정성 향상을 가져왔다.

 

-고급 운영 툴링(Advanced operational tooling)은 수요에 맞춰 10여개의 데이터베이스 클러스터들을 확장하고, 단 한 명의 운영자만으로 전세계의 게이머들에게 끊기지 않는 가용성을 제공

 

사례4)

엔지니어링 기업의 사물인터넷

-성공적인 사물인터넷이란 새로운 통찰을 얻고 자동화된 결정을 주도하기 위해 실시간으로 복잡한 애널리틱스를 수행할 수 있는 애플리케이션을 의미

 

-사물인터넷 솔루션의 일환으로 몽고DB 엔터프라이즈 어드밴스드(Enterprise Advanced)를 이용하고 있다. 수백 만 부품들에 걸쳐 결함을 감지하기 위해 제조 라인 IoT 프로젝트에서부터 3억 개 차량에 텔레매틱스를 구현하려는 계획까지 아우른다.

 

사례5)

사용자들을 위해 회의 스케줄을 잡는 인공지능 기반의 개인 비서 서비스

-몽고DB는 전체 인공지능 플랫폼을 위한 기록 시스템을 담당하면서 자연어 프로세싱, 지도 학습, 애널리틱스, 이메일 커뮤니케이션 등 모든 서비스를 지원

 

사례6)

마케팅 자동화회사의 예측적 마케팅 지원

-이상적인 고객 프로필을 발견하고, 가장 높은 구매 가능성을 가진 이들을 대상화하고 알맞은 채널을 통해 알맞은 메시지로의 관여를 돕기 위해 예측적 애널리틱스를 활용한다.

-수천 개의 마케팅 지표들을 통합해야 하며, 막대한 양의 데이터를 놀라운 다양성과 함께 처리하고 빠르게 소화하기 위해 몽고DB를 활용하고 있다.

 

-몽고DB의 표현적 쿼리 언어와 데이터 프로세싱 파이프라인을 적극 이용

728x90

댓글