NoSQL MongoDB의 모든 것, MongoDB.live Korea 2020 키노트 + 고객 사례 세션 정리

NoSQL MongoDB의 모든 것, MongoDB.live Korea 2020 키노트 + 고객 사례 세션 정리

국내에서 여전히 많이 사용되는 데이터베이스는 전통적인 RDBMS, 관계형 데이터베이스일 것입니다. Oracle, Microsoft SQL과 같은 기업용 상용 데이터베이스부터 MySQL, MariaDB, PostgreSQL과 같은 오픈소스 데이터베이스를 사용하는 기업들도 상당히 많죠.

하지만 용량이 큰 비정형 데이터가 많아지고 데이터 기반 의사 결정을 위한 대용량 데이터 분석 및 처리, 그리고 클라우드에서 빠르게 데이터를 수집, 관리해야 하는 현재의 IT 인프라 환경에서는 기존의 관계형 데이터베이스만으로 데이터를 처리 하는 데에 한계가 있었습니다. 이전보다 훨씬 더 많아진 다양한 유형의 데이터를 아주 고성능의 하드웨어가 아닌 현재 사용하는 하드웨어에서도 원활하게 처리할 수 있는 가볍고 빠른 데이터베이스가 필요해졌고, 덕분에 현재 각광받고 있는것이 바로 NoSQL(Not Only SQL) 데이터베이스입니다.


<이미지 출처 : Digital Connect Mag>

위와 같이 NoSQL 데이터베이스는 네 가지 유형으로 나눌 수 있는데요. 키와 값을 활용해 연관 배열의 저장, 검색, 관리를 위해 설계된 Key-Value, 테이블 즉 행 단위로 데이터를 저장하는 것이 아닌 컬럼, 열 단위로 저장하는 Column-Family, 데이터를 노드로 표시하고, 이 노드 사이의 관계를 엣지로 표현하는 Graph, 구조화 되어 있지 않거나 덜 구조화된 문서 기반 데이터를 처리하기 위한 Document가 대표적입니다.



<이미지 출처 : Complexsql.com>

앞서 간단히 설명한 네 유형의 대표적인 데이터베이스들은 위와 같습니다. 이번 콘텐츠에서 소개해 드릴 데이터베이스는 Document 데이터베이스인 MongoDB이고요. 저희 704DESK의 데이터베이스가 이 MongoDB 커뮤니티 버전입니다. 오픈소스 데이터베이스이고 데이터 처리 속도가 매우 빨라 704DESK의 데이터베이스로 운영 중에 있습니다.


하지만 MongoDB 커뮤니티 버전은 오픈소스이고 무료이긴 하지만 오롯이 사용자가 직접 설치부터 운영, 관리까지 스스로 해야 하는 셀프 매니지드 데이터베이스입니다. 관련 지식이 없다면 운영하기 어려울 뿐더러 기업의 애플리케이션에 연결할 경우 장애 발생 시 대처가 어렵고 버전 업그레이드도 쉽지 않는 등 여러가지 문제가 많습니다.

마침 지난 2020년 11월 12일, MongoDB.live Korea 2020이 온라인에서 진행되었는데요. MongoDB 본사 임직원들의 키노트 세션과 MongoDB Korea의 다양한 기술 세션, 그리고 MongoDB를 사용하는 국내 기업들의 사례로 이루어진 이번 행사는 커뮤니티 버전의 MongoDB를 사용하는 사용자들이 클라우드 환경 지원을 위한 MongoDB Atlas로 성공적으로 마이그레이션 해야 하는 이유와 그 사례를 중점적으로 소개했습니다. 이때 진행된 세션의 내용들이 현재 온디맨드로 공개되어 이번 콘텐츠를 통해 소개하고자 합니다.

주요 아젠다는 아래와 같습니다.


  • 1.MongoDB.live Korea 2020 다시 보기

  • 2.키노트 세션 주요 내용 요약 : MongoDB Cloud와 구축 사례

  • 3.RDBMS에서 MongoDB로 마이그레이션을 완료한 고객 사례 세션 요약

  • 4.MongoDB를 더 자세히알아볼 수 있는 기타 세션 소개


제가 데이터베이스 관리자가 아니다보니 깊이 있는 세션 내용을 전달해 드리기는 어렵고, 주요 내용 위주로 간단히 요약해 보려고 합니다. 아마 제 요약글을 보시고 실제 세션을 들으신다면 이해하시는 데에 도움이 되시지 않을까 생각되네요. 그럼 'No SQL MongoDB의 모든 것, MongoDB.live Korea 2020 키노트 + 고객 사례 세션 정리'를 시작하겠습니다.


이 콘텐츠는 MongoDB Korea의 지원으로 제작되었습니다.







1. MongoDB.live Korea 2020 다시보기



<MongoDB.live Korea 2020 배너, 클릭하면 다시 보기 신청 페이지로 이동>

MongoDB.live Korea 2020을 다시보기 위해서는 등록 과정을 거쳐야 합니다. 이미 등록하신 분들은 과거에 등록 후 받았던 메일을 통해 다시보기 페이지에 접속하실 수 있고요. 당시 등록하지 않으셨던 분들은 위 배너 이미지를 클릭하시거나 아래 링크를 통해 등록 페이지에 접속하시면 됩니다.



접속하면 위와 같이 등록페이지가 나타나고요. 간단한 개인정보를 넣고 등록합니다. 


등록하면 위와 같이 이메일을 받게 되됩니다. 이 이메일 말고 하나 더 받는데, 해당 이메일로 설명드릴게요.


위와 같은 이메일에서 '프로필 활성화' 또는 '아젠다 설정'을 클릭합니다.


그럼 위와 같이 MongoDB의 이벤트 페이지로 이동합니다. 여기서 하단의 빨간색 박스로 표시한 MongoDB.live Korea를 클릭합니다.


이제 MongoDB.live Korea 2020 페이지에 접속됐습니다. 상단, 그리고 화면 가운데에 있는 메뉴를 통해 온디맨드 세션을 다시 볼 수 있는데요. 빨간색 박스로 표시한 'Agenda'를 눌러볼까요?


MongoDB.live Korea 2020 온디맨드 페이지에서는 총 16개의 세션이 제공됩니다. 좌측과 같이 필터를 통해 원하는 주제를 선택해 빠르게 세션 내용을 둘러볼 수 있고, 한국인이 진행하는 세션 외에 MongoDB 본사 직원들이 진행하는 세션은 한글 자막과 한국어 동시 통역이 제공되어 편하게 세션을 감상할 수 있습니다.


온디맨드 세션은 웹페이지 뿐만 아니라 모바일 페이지에서도 볼 수 있는데요. 주의하실 사항이, 위와 같이 헤드폰 마크를 클릭했을 때 나타나는 언어가 기본값이 Korean으로 설정되어 있어 한국어 세션의 소리가 들리지 않는 오류가 있습니다. 이 경우 가장 우측과 같이 언어를 English로 바꾸면 정상적으로 소리가 나오니 참고하시기 바랍니다.





2. 키노트 세션 주요 내용 요약 : MongoDB Cloud와 구축 사례


MongoDB.live Korea 2020의 키노트 세션은 MongoDB 본사 CPO인 Sahir Azam의 리드로 진행되며 중간 중간 고객과 MongoDB 직원들이 출연해 이야기를 이어가는 형태로 진행되는데요. 제가 올해 정말 많은 웨비나와 온디맨드 컨퍼런스에 참여했는데, 이번 키노트 영상이 제가 시청한 수십개의 세션 중 단연 최고라고 생각합니다. 그 이유는 뒤에서 간간히 말씀드리기로 하고, 주요 내용을 요약해 보겠습니다.


클라우드 네이티브 시대의 현대화된 웹 애플리케이션은 수 많은 정형 데이터를 빠르게 처리하기 OLTP를 활용하는 데에 그치지 않고 데이터 속에서 새로운 인사이트를 발굴하기 위해 분석 과정을 필요로 합니다. 그래서 데이터 레이크로부터 수집된 데이터를 ETL(Extract 변환, Transform 변환, Load 적재) 과정을 거쳐 DW(Data Warehouse)로 보내고, 이후 시각화 도구를 통해 대시보드를 만들죠. 여기를 데이터 계층이라고 부릅니다.

그리고, 비즈니스 로직 차원에서 애플리케이션의 개별적인 기능을 관리하고 있는 각각의 작은 단위의 웹 서비스들이 있는데, 이들은 앞단의 다양한 사용자 기기 및 IoT 기기로부터 데이터를 수집하고, 웹 서비스들간에 API로 통신합니다. 이 때 발생하는 데이터의 흐름은 사용자가 많아지고 비즈니스 규모가 증가할 수록 기하 급수적으로 증가하며 보안적으로 예기치 못한 문제가 발생하는 등 개발자들에게 많은 불편함을 주고 있습니다.


그래서 MongoDB는 현대화된 애플리케이션의 개발 및 운영에 있어 데이터 계층과 비즈니스 계층(Middle Tier)부터 프론트 엔드 단 까지 원활하게 확장하고 저장된 데이터를 빠르게 분석하고 시각화 할 수 있는, 애플리케이션의 전 과정을 원활하게 관리할 수 있는 새로운 아키텍처를 선보였습니다. 그것이 바로 위 장표에 있는 MongoDB Cloud입니다.


MongoDB Cloud는 세 가지 요소로 구성됩니다. 첫 번째는 가운데의 Atlas인데요. MongoDB Atlas는 클라우드 데이터베이스로 OLTP와 실시간 분석을 위한 단일 데이터 기반 환경을 제공합니다. 또한 Lucene이라는 강력한 검색 엔진과 함께 Atlas Data Lake에 저장된 데이터를 빠르게 조회하고 분석할 수 있는 실시간 쿼리 및 분석 기능을 제공합니다. 또한 MQL(MongoDB Query Language)라는 고유의 쿼리 언어를 통해 빠르게 데이터를 조회할 수 있도록 합니다.

두 번째 Charts는 Document 기반 NoSQL 데이터베이스인 MongoDB의 데이터를 시각화 하기 위한 도구이며 Atlas에 바로 연결해 비즈니스 인사이트를 얻기 위한 시각화를 빠르게 수행할 수 있도록 돕습니다. 다양한 BI 도구와 마찬가지로 간단히 차트를 생성해 대시보드를 만들어 공유할 수 있습니다.

세 번째 Realm은 애플리케이션의 모든 계층에서 데이터 처리를 자동화하고 단순화 시켜주는, MongoDB 기반 현대화된 애플리케이션 구축의 핵심이라고 할 수 있습니다. 개발자는 Realm을 통해 다수의 사용자, 디바이스, 플랫폼의 데이터를 동기화하고 데이터 접근을 통제할 수 있으며 실시간으로 처리되며 각기 다른 기기로의 데이터 전송을 위한 데이터 포맷(유형 변경) 작업을 최소화 합니다.


지금부터는 앞서 간단히 언급한 MongoDB Cloud의 세 가지 구성 요소를 활용해 진행된 사례에 대한 소개하겠습니다. WildAid는 미국 샌프란시스코에 있는 환경 단체로, 해양 생태계 보호를 많은 승무원들과 함께 배를 타고 탐사를 나갑니다. 그리고 바다에서 어획작업을 하는 배들이 출항 전에 승무원이 몇명이고 어획 활동을 위한 라이선스를 보유하고 있는지, 어떤 작업을 했는지, 배 위에서 무슨 일이 벌어지는지에 대한 기록을 남기고 다음 번 탐사를 위해 해당 정보를 넘겨주고 관리하는 등 안전을 위해 신경써야 할 것들이 상당히 많다고 합니다.


문제는 이렇게 수집하는 다양한 정보들이 수기로 종이와 같은 서류에 작성되고, 배 위에서 관리되기 때문에 필체도 엉망이고 종이는 쉽게 젖어버리기 일쑤입니다. 때문에 이런 정보들을 다시 지속적으로 관리할 수 있도록 디지털화 하는 데에 많은 시간과 노력을 들이고 있다고 합니다.


MongoDB Realm을 활용하면 실시간으로 모바일 기기와 데이터베이스가 동기화되며 오프라인 상태에서는 모바일 기기에 일단 백업을 해 두고 다시 온라인에 접속되면 모바일 기기와 데이터베이스를 자동으로 동기화 합니다. 빠르고 가벼운 서버리스 환경의 애플리케이션을 위한 모든 것을 제공하는 Realm을 활용해 WildAid는 어획활동을 하는 배와 승무원 정보를 간편하게 관리할 수 있는 모바일 애플리케이션을 구축할 수 있었는데요.


경찰관들의 작업 흐름에 맞게 만들어진 이 애플리케이션 덕분에 WildAid는 항구를 떠나는 배와 들어온 배에서 일어나는 모든 일들에 더해 승무원에 대한 정보를 효과적으로 관리할 수 있게 되었습니다. 게다가 현재 탐사 활동에 이용 가능한 선박이 어떤 것들이 있는지 모바일 애플리케이션에서 조회 후 예약하는 등의 작업도 가능하게 되었죠. 모바일 기기가 애플 플랫폼이든 구글 플랫폼이든 관계 없이 Realm을 통해 간편하게 데이터를 동기화 시킬 수 있다고 합니다.


예를 들어, iOS 기기에서 촬영한 사진은 Realm을 거쳐 MongoDB Atlas에 저장되고, 이후 Trigger를 통해 AWS S3 오브젝트 스토리지로 이동되며 이 데이터는 다시 Android로 동기화 되는 형태입니다. 그리고 이 과정은 자동화 되어 운영되며, 자동화의 핵심인 Trigger는 우측과 같이 (데이터베이스 관리자, 개발자가 보기에) 간단한 코드로 개발됩니다.


모바일 애플리케이션에서 입력된 데이터는 중앙 서버로 저장되어 React로 개발된 웹 애플리케이션을 통해 전체 현황을 살펴볼 수 있습니다. MongoDB Atlas의 강력한 검색 기능을 활용해 빠르게 원하는 조건의 데이터를 조회할 수 있고요. 심지어 잘못된 결과를 입력해도 Fuzzy Matching 기능을 통해 올바른 데이터를 빠르게 찾아냅니다. 


또한 Charts로 만들어진 대시보드로 간편하게 조건을 변경하여 원하는 인사이트를 얻어낼 수 있습니다. 모바일 기기로 부터 데이터를 빠르게 수집하고 원하는 데이터를 검색하고 대시보드로 통찰력을 발견할 수 있는 전 과정이 모두 MongoDB Cloud의 세 가지 구성 요소를 통해 구현되는 것입니다.


데이터 흐름이 많을 수록 보안 상 위협요인 역시 증가할 수 있습니다. MongoDB Cloud는 인프라 운영 환경이 AWS일 경우 위와 같이 AWS IAM을 활용해 데이터베이스에 접근하려는 사용자 인증 과정을 통해 데이터베이스의 데이터를 안전하게 보호합니다. AWS뿐만 아니라 Azure, GCP의 키 관리 보안 기능을 활용해 클라우드에서 운영되는 Atlas의 보안을 강화할 수 있습니다.


MongoDB를 직접 제어하기 위해서는 MongoDB Shell이라는 CLI 도구를 사용해야 하는데요. 최신 버전의 MongoDB에서는 주요 구문에 색상을 넣어 가독성을 높였고 에러 발생 시 보다 명확하게 에러를 표시하고 어떻게 해결해야 하는지 보여줍니다. 게다가 이전에는 Shell에서 코딩한 내용을 다시 IDE로 불러와 작업을 이어가야 했지만 신규 버전에서는 IDE와 통합되어 IDE에서 직접 MongoDB를 제어할 수 있고  현존하는 대부분의 IDE에서 MongoDB Shell을 활용할 수 있습니다.

여기까지 키노트 세션의 주요 내용을 정말 간략하게 요약해 봤습니다. 제가 보여드린 이미지에서 눈치 채신 분들도 있겠지만, 이 키노트 세션은 발표자가 이야기 하는 모습, 발표 자료의 전환 및 자료에 포함된 애니메이션, 고객 인터뷰, 데모가 어우러져 무려 53분의 긴 시간임에도 불구하고 지루하지 않고 집중할 수 있게 도와줍니다. 얼마나 많은 시간과 노력을 통해 만들었을 지 가늠하기 어려울 정도로 많은 편집 효과가 적용되었더군요. 지금까지 보셨던 웨비나 영상과는 차원이 다른 영상이니 꼭 시청해 보시기를 권합니다.






3. RDBMS에서 MongoDB로 마이그레이션을 완료한 고객 사례 세션 요약


이번에는 RDBMS에서 MongoDB로 마이그레이션을 완료한 국내 고객의 사례를 소개합니다. 라이엇게임즈 PC방 과금시스템, 드림어스컴퍼니 Flo 사례의 주요 내용을 요약해 보겠습니다.


 1) 라이엇 게임즈의 MongoDB Atlas 마이그레이션




첫 번째 사례는 라이엇게임즈입니다. 지금도 글로벌 온라인 게임 중 이용자 수와 매출이 가장 많은 라이엇게임즈의 LOL(League of Legends)를 비롯해 새롭게 출시된 Hyper FPS 게임인 Valorant를 국내 PC방에 서비스하고 있는 라이엇게임즈는 MongoDB 커뮤니티 버전을 AWS에 올려 PC방의 과금 서비스 운영에 사용하고 있습니다.

MongoDB 운영 환경은 위와 같이 100개 이상의 EC2 인스턴스에 3개의 MongoDB를 운영하고 있고, 연간 거래 처리 건수가 30억개에 달한다고 합니다.



AWS에 올라간 MongoDB는 좌측과 같이 1개의 메인 시스템과 2개의 백업 시스템으로 운영됩니다. 각 시스템 별 사양은 동일하게 구성했다고 하고요. 커뮤니키 버전 3.6.0을 사용한다는군요. 그런데 커뮤니티 버전이다보니 운영 상의 문제가 많았다고 합니다. 우측과 같이 현재 커뮤니티 버전은 4.4.2인데 신규 버전으로의 업그레이드가 어려운 점, 중요 거래 데이터다보니 백업이 중요한데 매일 매일 백업하고 복구하는 과정이 불편한 점, 데이터 시각화와 쿼리 성능 저하 등의 문제가 있었습니다.


그래서 라이엇게임즈는 위와 같이 커뮤니티 버전의 MongoDB를 MongoDB Atlas로 마이그레이션 하기로 결정했습니다. MongoDB를 위한 EC2 인스턴스를 그대로 두고, 그 위에 MongoDB 커뮤니티 버전 대신 MongoDB Atlas를 올리고 VPC Peering을 통해 마이그레이션 하는 계획을 세웠습니다.


마이그레이션 하는 과정은 비교적 간단하게 수행할 수 있었다고 합니다. AWS에서 몇번의 클릭 만으로 Atlas 클러스터를 생성하고 네트워크를 연결한 다음 데이터 마이그레이션을 수행했는데 CPU 사용률은 별다른 이상 없이 소폭 증가하는 모습을 보였습니다만 네트워크 트래픽은 꽤 큰 폭으로 증가해서 의아했다는데요. 발표자는 마이그레이션 할 데이터 사이즈가 크고 VPC Peering을 통해 대량의 데이터가 이동되나 보니 발생한 상황으로 추정되며, 마이그레이션 전에 네트워크 아웃풋을 잘 계산해 작업이 라이브 시스템에 영향을 주지 않도록 해야 하는 점을 언급했습니다.


데이터 마이그레이션 완료 후 실제 성능 테스트를 시행했는데 트래픽이 대량으로 몰릴 때 오토 스케일링이 작동해 서버 캐시가 사라져 성능이 저하되는 콜드 캐시 문제가 발생하는 것을 발견했습니다. 때문에 문제 해결을 위해 오토 스케일링 기능을 끄고 운영 중이라고 하는데요. 콜드 캐시가 발생해도 시스템이 멈추는 것이 아닌 성능이 약간 저하되는 것이기 때문에 그렇게 크리티컬한 문제는 아니라고 합니다. 이 부분은 4.4 최신 버전에서 해결됐다고 하니 참고해 주세요. 

이후 라이엇게임즈는 데이터 정합성을 검증한 뒤 PC방 100개를 선정해 필드 테스트를 해본 결과 문제가 없어 실제 라이브 시스템에 적용해 현재까지 안정적으로 운영하고 있다고 합니다.

한 가지 참고하셔야 할 사항이 있는데요. 라이엇게임즈의 경우 데이터베이스를 운영하는 인프라 환경은 동일하게 AWS입니다. 그런데 이전의 MongoDB 커뮤니티 버전 운영 때보다 MongoDB Atlas로의 이관 이후 동일 사양의 EC2 인스턴스 운영 비용은 비용은 비용은 30~35%정도 증가했다고 합니다. 비용 증가폭이 다소 큰 것 같지만 서비스 안정성을 위해 투자한 것으로 이해하시면 될 것 같습니다.

라이엇게임즈와 같이 대규모 온라인 과금 서비스를 제공하는 기업의 시스템에 장애가 발생할 경우 그 피해는 인프라 투자비용과는 비교할 수 없을 만큼 클 수밖에 없기 때문에 새로운 솔루션의 도입을 통해 개선하고자 하는 사항에 대한 우선순위가 리스크 헷지인지 비용절감인지 잘 따져볼 필요가 있겠습니다.






 2) FLO: RDBMS에서 MongoDB로의 여정



두 번째 사례는 드림어스컴퍼니의 MongoDB 마이그레이션 사례입니다. 드림어스컴퍼니는 과거 MP3 Player로 유명했던 아이리버가 사명을 바꾼 회사이고요. 아이리버 기기 역시 아직까지 출시되고 있지만 현재는 고음질 음원 플레이어인 아스텔앤컨이 훨씬 유명합니다. 2018년 AI 기반 음악 추천 서비스 FLO를 개발한 그루버스라는 회사를 인수한 아이리버는 2019년 드림어스컴퍼니로 사명을 변경해 아이리버, 아스텔앤컨과 같은 음원 재생 디바이스와 AI 기반의 나만을 위한 음악 스트리밍 서비스인 FLO를 제공하고 있습니다.

MongoDB를 사용하기 전에 드림어스 컴퍼니의 데이터베이스를 MySQL 18대를 사용 중이었고 하루 최고 70만 QPS(Queries Per Second, 초당 쿼리 수)를 처리하고 있었다고 합니다. 이 시스템 환경에서 개인화된 추천 서비스를 제공하는 FLO의 사용자가 증가할 수록 처리해야 하는 데이터의 양은 폭발적으로 증가했으며 개인화 추천을 위해 참조해야 하는 데이터들이 분산되어 있었고 성능 확장에 대한 문제 등 다양한 이슈로 인해 데이터베이스 변경을 추진하게 되었다고 합니다.


드림어스컴퍼니는 위와 같이 총 3개의 솔루션을 검증했습니다. 첫 번째 Redis의 경우 Key-Value 형태의 NoSQL로 FLO의 서비스를 커버하기에 적합하고 성능도 훌륭했지만 다양한 검색 조건을 사용하기 어렵고 특정 문서에 대한 갱신 작업 수행에 어려움이 많았습니다.

두 번째로 검증한 Elastic Search의 경우 성능과 문서 포맷이 알맞아 사용에 문제가 없었지만 데이터 조회 시 필요한 쿼리를 날려 조회하는 것이 아닌 특성한 문서가 정해지면 해당 문서를 찾기 위한 필드 조건이 정해지고, 이 조건을 데이터베이스와 같이 고정적으로 생성해서 활용할 수 있어야 했던 점, DBA가 인덱스 관리를 할 수 없다는 점 등이 부적합하다고 판단했다고 합니다. 

마지막으로 검증한 MongoDB는 앞의 두 가지 솔루션의 단점을 해결해 줄 수 있다고 판단되어 MongoDB로의 이관을 결정했다는군요.


MongoDB를 선택한 구체적인 이유는 좌측과 같습니다. 먼저 수평적인 성능 확장이 가능해 부하 분산에 용이하며 유연한 스키마 설계로 스키마 변경에 대한 부담을 덜었으며 널리 알려진 뛰어난 성능, 그리고 기업 서비스를 안정적으로 운영하기 위한 SLA를 통해 운영 리스크를 감소시킬 수 있었고, FLO의 비즈니스 모델에 적합하다고 판단되어 MongoDB로 최종 결정을 했다고 합니다.

이후 우측과 같이 Shard 서버는 물리 서버로, Config 서버는 VM으로 설정했는데 Config 노드와 Mongos 노드를 같은 서버에 올린 것은 로컬 네트워크 간 통신 이점을 얻기 위함이라고 합니다. 그리고 성능 임계치를 기준으로 최대 3배 이상의 성능을 발휘할 수 있는 구성이라고 언급했습니다.


마이그레이션을 위해 드림어스컴퍼니는 먼저 좌측과 같이 $lookup 함수를 사용해 서비스를 잠시 중단하고 csv로 데이터를 추출, MongoDB에서 가져와 Aggregation Pipeline으로 이관하는 방법을 사용했는데요. 이 방법을 사용한 이유는 MQL에 익숙해지기 위해서였다고 합니다. DBA입장에서 사용하는 쿼리 언어가 변경되는 것은 가장 큰 부담일텐데, SQL에서 MQL로 넘어가기 위해 이 방법을 먼저 사용해 MQL에 익숙해지는 경험을 쌓았다고 합니다. 

그리고 기존 RDBMS와 같이 쿼리로 데이터 컬렉션을 생성할 수 있어 익숙한 방법이었고, 당시 알고 있었던 가장 빠른 마이그레이션 방법이었다고 합니다. 하지만 1백만개의 앨범 이관에 2시간 넘게 소요되었고 참조해야 할 대상이 많아지면 많아질 수록 시간은 더 늘어나는 등 기대보다 성능이 높지 않았습니다. 그래도 MQL에 익숙해 지는 계기가 되었다고 하는군요.

이후 드림어스컴퍼니는 우측과 같이 실시간 마이그레이션을 위해 MongoSyphon이라는 오픈소스 마이그레이션 툴을 발견해 사용했습니다. 이 툴의 경우 템플릿의 샘플 코드를 제공해 쉽게 이용 가능하며 증분 처리를 위한 트리거를 배포하고 초기 데이터를 이관한 뒤 잠깐의 서비스 중단 후 변경 분에 대한 이관을 이어서 진행함으로써 최소의 다운타임으로 성공적으로 마이그레이션 수행이 가능했다고 합니다.


마이그레이션 이후 성능 테스트에서는 부하가 많지 않음에도 성능 저하가 발생되는 것을 발견했는데, 원인은 JS(Java Script)코드를 사용한 것이었습니다. MongoDB는 JS를 지원하지만 FLO 서비스에 적용하기에는 적합하지 않았음을 깨달았고 MongoDB의 가이드를 참고해 쿼리를 튜닝한 결과 최대 부하 수준의 3배 까지 감당 가능함을 확인했다고 하는군요. 이후 발생하는 다른 문제들 역시 MQL의 활용법을 다시 한번 숙지하여 대부분을 해결했다고 합니다.


결과적으로 드림어스컴퍼니는 이번 MySQL에서 MongoDB로의 이관 작업을 수행해 50% 데이터 볼륨 절감, 스키마 변경 부담 절감, 3배 성능 향상, 부하 분산이 가능해져 FLO 운영 시스템의 안정성을 향상시킬 수 있었다고 합니다. 그리고  현재 는 RDBMS와 MongoDB를 동시에 운영하며 RDBMS의 데이터를 MongoDB로 점점 옮겨가는 중이며 향후 RDBMS를 MongoDB가 완전히 대체할 수 있을 때 까지 지속적으로 활용하고 연구해 나갈 계획이라며 세션을 마쳤습니다.





4. MongoDB를 더 자세히알아볼 수 있는 기타 세션 소개


앞서 소개한 두 개의 세션 내용을 통해 기존의 RDBMS를 MongoDB가 대체할 수 있다는 가능성을 살펴봤습니다. 라이엇게임즈의 사례는 이미 RDBMS를 MongoDB로 대체했었으나 보다 안정적인 운영을 위해 MongoDB Atlas를 사용하게 되었다고 했고요. FLO는 궁극적으로 REDMS의 완전 대체를 위해 MongoDB를 경험하고 있는 중이라고 했습니다. 

이 외 나머지 많은 세션들을 통해 모던 애플리케이션 개발 시 활용할 수 있는 MongoDB의 다양한 기능, 뛰어난 성능과 확장성, 개발 편의성, 그리고 MongoDB 운영 시 발생하는 문제의 해결 방안을 확인할 수 있는데요. 해당 내용을 담은 세션들을 간단히 소개하고자 합니다.


  • MongoDB를 사용한 이벤트 중심 아키텍처 (Event Driven)



이 세션에서는 개발자 입장에서 애플리케이션에서 발생하는 이슈들을 해결하는 관점에 대한 내용을 다룹니다. 최근의 모던 애플리케이션들은 실시간으로 데이터에 접근하고 분석 및 배포하고 새로운 인사이트를 얻을 수 있어야 하는데요. 전통적인 Request-Driven 아키텍처의 경우 사용자가 요청을 하면 사용자는 요청한 사항을 이용할 수 있을 때까지 기다려야 합니다. 하지만 Event-Driven 아키텍처에서는 사용자가 관심을 보이는, 혹은 구독하는 데이터를 애플리케이션 차원에서 해당 데이터를 분석해 사용자에게 알맞은 정보를 제공하는 형태를 말합니다.

따라서 Request-Driven 아키텍처에서는 빠르게 변화하는 사용자의 요구사항을 파악하기 어려워 기업의 민첩한 대응을 어렵게 합니다. 가뜩이나 클라우드 네이티브 환경에서 빠르게 애플리케이션을 개발하고 서비스해야 경쟁력이 생기는 최근의 상황에서 살아남기 위해, 기업은 Event-Driven 아키텍처로 애플리케이션을 개발, 배포하여 보다 사용자 관점에서 데이터를 분석함으로써 기업의 민첩성을 끌어올릴 수 있습니다. 

이 세션을 통해 MongoDB가 어떻게 기업이 실시간으로 사용자의 반응을 분석하고 기민하게 대응할 수 있도록 도와줄 수 있는지 확인해 보시기 바랍니다.


  • RDBMS에서 MongoDB로 마이그레이션하는 모범 사례 (RDB to MongoDB)


이 세션에서는 RDBMS에서 어떻게 MongoDB로 마이그레이션할 수 있는지 구체적인 방법을 설명합니다. RDBMS에서의 정규화된 데이터가 MongoDB의 데이터와 어떻게 다른지, 마이그레이션을 위해 MongoDB의 스키마를 설계하는 방법과 성능 테스트, 무중단 마이그레이션, 마지막으로 Informatica ETL을 사용해 Oracle DB를 MongoDB로 마이그레이션하는 데모를 보여 드립니다. 현재 운영하고 있는 RDBMS의 MongoDB 이관 방법이 궁금하신 분들은 이 세션을 참고하시면 좋습니다.


  • MongoDB를 운영하면서 겪었던 트러블슈팅과 튜닝의 과정들


이 세션에서는 이미 MongoDB를 사내에서 많이 활용하고 있었던 네이버 클라우드에서 MongoDB를 안정적으로 운영하기 위한 다양한 팁을 소개합니다. 다수의 MongoDB 인스턴스를 네이버 클라우드에서 효율적으로 관리하기 위한 방법, 그리고 이를 위해 네이버 클라우드에서 경험했었던 트러블 슈팅과 발생한 문제를 어떻게 해결했는지에 대해 확인할 수 있는데요. 특히 발표자는 MongoDB SR이 매우 만족스러웠으며 대부분의 문제를 이 SR(Service Request)을 통해 해결했다고 언급했습니다.

기업 입장에서 새로운 솔루션 도입에 있어 가장 큰 허들은 솔루션 성능 보다도 원활한 기술지원을 꼽을 수 있는데요. 아무리 성능이 좋아도 장애 발생 시 지원이 늦어 해결할 때 까지 시간이 오래 걸린다면 솔루션을 사용하지 않으니만 못하기 때문입니다. 발표자에 따르면 MongoDB Help Center를 통한 기술지원은 매우 만족스러웠다고 하니 현재 MongoDB를 사용하고 계신 분들은 이번 세션을 통해 다양한 팁과 운영 노하우를 얻어 가시길 바랍니다.






여기까지 MongoDB.live Korea 2020에서 진행된 세션 중 가장 중요한 키노트 세션과 주요 고객 사례 세션을 요약해 봤습니다. 이 외에도 MongoDB 최신 버전인 4.4의 새로운 기능, AWS와 GCP에서 MongoDB를 운영하는 방법, 많은 DBA들이 MongoDB 사용을 머뭇거리게 만드는 MQL 사용법, AWS S3와 MongoDB Atlas의 데이터를 쿼리하고 분석할 수 있는 데이터 레이크인 MongoDB Atlas Data Lake에 대한 내용 등 다양한 세션이 준비되어 있으니 평소 MongoDB에 관심이 많으셨던 분들은 아래 링크를 통해 온디맨드 세션으로 많은 정보를 얻어가셨으면 좋겠습니다.



부족한 지식으로 어려운 내용을 정리해서 세션 내용이 잘 전달이 됐는지 모르겠습니다. 모쪼록 MongoDB에 대한 정보를 조금이나마 전달해 드리는 콘텐츠가 되었으면 하며, 이만 마치겠습니다. 끝!


20개의 댓글이 있습니다.

4달 전

MongoDB 관련 자료 잘 읽어보았습니다.
감사합니다.

Reply

4달 전 | 쉐어드아이티 | 031-212-1710

넵, 봐주셔서 감사합니다. 세션 영상도 시간 되시면 한번 보세요. 특히 키노트 세션 강추합니다!

Reply

댓글 남기기

댓글을 남기기 위해서는 로그인이 필요합니다.

로그인 회원가입

4달 전

MongoDB 궁금했었는데 감사합니다!~

Reply

4달 전 | 쉐어드아이티 | 031-212-1710

글로 표현하는 데에는 한계가 엄~청 많습니다. 키노트 세션 꼭 보세요!

Reply

4달 전

팀원이 회사DB는 이제 Mongo를 활용하겠다고 하여서 관심 가지고 있습니다.

Reply

댓글 남기기

댓글을 남기기 위해서는 로그인이 필요합니다.

로그인 회원가입

4달 전

좋은정보 감사합니다!

Reply

댓글 남기기

댓글을 남기기 위해서는 로그인이 필요합니다.

로그인 회원가입

4달 전

좋은 정보 감사드립니다!

Reply

4달 전 | 쉐어드아이티 | 031-212-1710

네, 도움이 되셨기를 바랍니다.

Reply

댓글 남기기

댓글을 남기기 위해서는 로그인이 필요합니다.

로그인 회원가입

4달 전

잘 참고하겠습니다~

Reply

4달 전 | 쉐어드아이티 | 031-212-1710

넵, 더 자세한 내용은 다시보기 세션으로 확인해 주세요.

Reply

댓글 남기기

댓글을 남기기 위해서는 로그인이 필요합니다.

로그인 회원가입

4달 전

와우 좋은 리뷰 와 다시보기 올려주셔서 감사합니다.

Reply

4달 전 | 쉐어드아이티 | 031-212-1710

도움이 되셨기를 바랍니다. 키노트 세션 꼭 보세요!

Reply

댓글 남기기

댓글을 남기기 위해서는 로그인이 필요합니다.

로그인 회원가입

4달 전

오늘도 공부거리 주셔서 감사^^

Reply

4달 전 | 쉐어드아이티 | 031-212-1710

ㅎㅎㅎ 저도 정리하면서 공부하느라 머리에 쥐 나는줄...

Reply

댓글 남기기

댓글을 남기기 위해서는 로그인이 필요합니다.

로그인 회원가입

4달 전

꼼꼼한 내용 잘 읽었습니다.

Reply

4달 전 | 쉐어드아이티 | 031-212-1710

봐주셔서 감사할 따름입니다. :)

Reply

댓글 남기기

댓글을 남기기 위해서는 로그인이 필요합니다.

로그인 회원가입

4달 전

마이그레이션 부분이 매력적이네요
좋은 내용 참고 할께요

Reply

4달 전 | 쉐어드아이티 | 031-212-1710

RDBMS에서 MongoDB로 마이그레이션 하는 사례가 점점 늘고 있다고 합니다. 'RDBMS에서 MongoDB로 마이그레이션하는 모범 사례 (RDB to MongoDB)' 세션에 거의 가이드 수준으로 자세한 내용이 소개되니 참고하세요~

Reply

댓글 남기기

댓글을 남기기 위해서는 로그인이 필요합니다.

로그인 회원가입

4달 전

와 잘봤습니다.

Reply

4달 전 | 쉐어드아이티 | 031-212-1710

봐주셔서 감사해요. 도움이 되셨기를!

Reply

댓글 남기기

댓글을 남기기 위해서는 로그인이 필요합니다.

로그인 회원가입

댓글 남기기

댓글을 남기기 위해서는 로그인이 필요합니다.

로그인 회원가입