BEST
개발 · 프로그래밍

/

백엔드

mongoDB 기초부터 실무까지(feat. Node.js)

mongoDB, NoSQL 요즘 많이 들리지만 아직은 낯선 데이터베이스인가요? 관계형 데이터베이스(RDS/SQL)처럼 사용하고 계시지는 않으신가요? 아무리 좋은 기술도 올바르게 사용하지 않으면 역효과가 발생합니다. 그래서 몽고디비 사용 실패 사례도 종종 보이는데요. 이 강의는 mongoDB를 최대한 mongoDB스럽게 사용할 수 있도록 기본 개념부터 실무 노하우까지 가르쳐드려요.

(4.7) 수강평 84개

수강생 1,294명

Thumbnail

초급자를 위해 준비한
[백엔드, 웹 개발] 강의입니다.

이런 걸
배워요!

  • mongoDB를 제대로 활용하는 백엔드 개발

  • Node.js, Express로 REST API 개발

  • 비동기(async) 프로그래밍

  • Index, nesting을 이용한 Read 성능 극대화

  • ACID Transaction

  • AWS lightsail에 Node.js 서버 배포

  • mongoDB Atlas 클라우드 매니지드 서비스

NoSQL 기반 데이터베이스 중 가장 사랑받고 있는 몽고DB! 
몽고DB 찐 활용법을 알려드릴게요. 😎

주제 소개 📝

mongoDB 이름은 Humongous, "거대한"에서 이름을 따왔는데요. 빅데이터 키워드들이 생기기 시작한 인터넷 붐 이후 2009년에 출시된 NoSQL 기반 데이터베이스에요. 데이터베이스는 서비스 개발의 핵심 근간이 되죠. mongoDB와 다르게 우리에게 익숙한 관계형 데이터베이스(MySQL, PostgreSQL)는 이미 20년도 넘은 오래된 기술이에요. 지속적으로 새로운 프로그래밍 언어와 기술들이 탄생하는 프로그래밍 생태계인데 이렇게 변화가 적은 분야가 있다는게 신기하죠. 데이터베이스는 그만큼 중요하고 보수적인 기술입니다. 데이터베이스가 바뀌면 그 위에 만들어지는 백엔드는 물론 프론트엔드까지도 영향을 줄 수 있어요. 그러다보니 다소 생소한 기술인 몽고디비에 관한 다양한 의문점들도 생기고 실패 적용 사례들도 종종 보입니다:

  • 몽고디비는 상황에 따라 사용해야 된다?
  • e-commerce는 무조건 RDS 아닌가?
  • 초반에 빠르게 간단하게 개발하기에는 좋지만 나중에 가면 관계형 데이터베이스가 더 좋다?
  • JOIN도 지원하지 않는 데이터베이스라니..?

아무래도 비교적 신생 기술이고 노하우가 충분히 알려지지 않아서 발생한 문제들이라고 생각해요. mongoDB는 관계형처럼 범용적으로 사용할 수 있고 e-commerce도 당연히 mongoDB로 개발할 수 있어요(경험자입니다). 그리고 제대로 사용한다면 대형 트래픽이 발생했을 때 관계형 데이터베이스보다 훨씬 효율적이에요.

애초에 적용 실패 사례가 생기는 원인이 뭘까요? mongoDB 철학을 이해 하지 못해서에요. 단순 사용방법만 공부해서는 부족해요. 그리고 무엇보다 관계형 데이터베이스처럼 접근하면 안돼요. mongoDB가 접근하는 문제 해결방법은 근본적으로 다른 부분들이 많아요. 이런 특성을 잘 이해하고 mongoDB스럽게 사용하면  mongoDB는 장점이 정말 많은 데이터베이스입니다.

왜 배워야 하는지 ✒️

  1. 데이터베이스가 트래픽 병목이 되기 쉬운데 mongoDB가 이 확장성 문제를 근본적으로 해결할 수 있어요.
  2. 백엔드 개발을 같이 배우면서 mongoDB를 제대로 학습할 수 있어요. 백엔드 개발과 데이터베이스는 한몸이에요!
  3. 웹개발에서 통신하는 데이터는 대부분 JSON 형식인데요. mongoDB가 저장하는 데이터 형식은 JSON(BSON)이에요. 따라서 중간에 백엔드에서 데이터 변환을 하거나 ORM을 사용할 필요가 거의 없어져요. 그만큼 진입장벽이 낮아지기도 해요.
  4. 범용적으로 사용 할 수 있는 데이터베이스에요. NoSQL 데이터베이스 특성상 ACID Transaction이 지원 안돼는 경우가 대부분인데요. mongoDB는 NoSQL의 수평적 확장 특성을 가지면서 버전 4.0부터 ACID Transaction을 지원하고 있어요. 
  5. 강의 초반에 비동기 프로그래밍을 짚고 넘어가는데요. 백엔드가 데이터베이스와 효율적으로 통신하기 위한 필수적인 개념이에요.

이 강의에서 배우는 것들 ✏️

  1. mongoDB 기본 사용법 - CRUD
  2. mongoDB Atlas - 메니지드 클라우드 데이터베이스 배포하기
  3. 비동기(async) 프로그래밍으로 백엔드 효율 극대화시키기
  4. Express 프레임워크로 REST API 만들기
  5. 관계된 데이터 효율적으로 읽는 방법(populate)
  6. 자식 문서를 부모 문서에 적절하게 내장해서 읽기 퍼포먼스 극대화시키기
  7. Index 적용으로 탐색 퍼포먼스 극대화
  8. 트렌젝션(Multi Document Transaction) 활용해서 일관성 있게 데이터 관리하기
  9. AWS lightsail에 백엔드 서버 배포하기
  10. 관계형 데이터베이스(relational database)와 mongoDB 비교하기

아래는 강의에서 사용되는 일부 자료들입니다 :)

여기서 다루는 기술들 🧰 

mongoDB, Node.js, Javascript, Postman, AWS, mongoDB Atlas

예상 질문 Q&A 🙋🏻‍♂️ 

Q. Node.js(Javascript) 개발자를 위한 강의인가요?
A. 이 강의는 mongoDB 강의에요. Node.js는 백엔드 개발자가 mongoDB를 제대로 활용하는 전체적인 흐름을 보여주기 위한 수단이에요. 따라서 다른 언어로 백엔드 개발을 하고 계셔도 수강하실 수 있습니다. Node.js 관련 다루는 부분은 범용적으로 사용되는 기초적인 개념들(REST API, 비동기 프로그래밍)이에요. 개념들을 잘 이해하시면 mongoDB를 어떠한 개발 환경에서도 잘 사용하실 수 있을거에요 :)

Q. 백엔드(Node.js)를 같이 다루는 이유가 있나요?
A. 이 강의는 백엔드 개발자가 mongoDB 데이터베이스를 올바르게 설계하고 사용하는 방법을 가르쳐 드려요. 그래서 강의 초반에 데이터베이스를 올바르게 활용할 수 있도록 기본적인 백엔드 개발을 같이 가르쳐드려요. 그리고 이 강의는 DevOps 강의가 아니에요. 데이터베이스를 어떻게 설치하고 replica set, sharding을 어떻게 구축하고 관리하는지 가르쳐드리지 않아요. 대신 이런 DevOps 영역을 자동화해주는 메니지드 클라우드 서비스, mongoDB Atlas를 사용하게 되요.

Q. MongoDB Aggregate도 배우나요?

A. 이번 강의에서는 "일반적인" 백엔드 개발에서 몽고디비를 몽고디비스럽게 잘 활용하는 방법에 초점을 두었습니다. 호출 빈도가 높은 일반 API에서 Aggregate를 사용하면 디비에 부하가 갈 수 있어서 권장하지 않아요. 쉽게 생각하면 Aggregate를 자주 사용하게 되면 몽고디비스럽게 사용하지 못하고 관계형 디비처럼 사용하게 되는거라고 보시면 되요. 따라서 이 강의에서는 Aggregate 관련 내용을 포함하지 안핬습니다. Aggregate 없이 몽고디비를 올바르게 활용하는 방법을 보여드립니다! 그렇다고 Aggregate가 안좋다는건 절대 아닙니다. 사용용도가 따로 있을뿐이에요. 통계를 내거나 대용량 데이터 가공 등 Data Engineering 영역에서 매우 강력한 도구입니다. 일반적인 API들과 비교했을 때 이러한 Data Engineering 처리들은 호출 빈도가 훨씬 적고 응답속도가 오래 걸려도 딱히 상관 없다는 특징을 가지고 있습니다. 예를 들어 분기별로 매출현황을 추출하고 싶다면 분기에 한번씩 aggregate 배치를 돌려서 결과값을 저장해두었다고 결과값을 빠르게 불러오면 되겠죠. 차후에 MongoDB 기반 Data Engineer 강의도 제작할 예정인데요. 이 때 MongoDB Aggregate는 물론, MongoDB Data Lake로 빅데이터 관리 그리고 MongoDB Charts로 데이터 시각화까지 다룰 예정입니다!

Q. 이 강의를 시작하게 된 계기를 소개해주세요.
A. 저는 비전공자 출신이에요. 온라인에 뿌려진 파편된 자료들을 보고 분석하고 적용해보면서 배웠어요. 이 과정을 반복하다보면 개념들이 추상화가 되면서 정리가 되요. 여기서 말하는 "추상화"란 정말 중요한 개념인데요. 개발을 할 때 서비스가 돌아가게끔 단순 기능 구현만 할 수 있어요. 근데 "추상화"가 잘 된 개발자는 "잘 작동하는", "확장성 있는" 서비스를 만들 수 있어요. 다른 표현으로는 Why를 잘 이해하고 있는 개발자라고 할 수도 있겠네요. 그런데 비교적 최신 기술일수록 커뮤니티 전번작으로 Why에 대한 이해도가 떨어집니다. 그래서 상대적으로 낯선 데이터베이스인 mongoDB를 주제로 강의를 제작해봤어요. Why를 잘 이해하시고 좋은 서비스 많이 만들어주세요!

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • mongoDB를 제대로 사용해보고 싶으신분

  • 백엔드 개발에 입문 해보고 싶으신분

  • 확장성이 뛰어난 백엔드와 데이터베이스를 구축해보고 싶으신분

선수 지식,
필요할까요?

  • Javascript 기초 문법(혹은 기본적인 프로그래밍 지식)

현재 공동창업한 작은 스타트업 Ninjalerts에서 CTO역할로 일하고 있습니다.

Ninjalerts는 이더리움 블록체인 데이터를 기반으로 NFT 거래 정보들을 실시간으로 알려주는 서비스에요!

전에 만나씨이에이에서 개발 팀장으로 있었어요. 시작은 기획자였는데 개발자가 부족한 탓에 외주를 맡기려다가 직접 개발할 기회가 생기면서 운좋게 개발자로 전향했어요. 이후 자사몰을 자체 개발하면서 이커머스 개발팀장을 맡았어요. 온라인에 나온 다양한 좋은 자료들 덕분에 빠르게 성장할 수 있었어요. 제 노하우가 여러분들에게도 도움이 되길 바랍니다 :) Linkedin 프로필

커리큘럼

전체

112개 ∙ (11시간 56분)

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!