Thumbnail
BEST 개발 · 프로그래밍 데이터베이스
mongoDB 기초부터 실무까지(feat. Node.js)
(4.8)
25개의 수강평 ∙ 301명의 수강생
77,000원

월 15,400원

5개월 할부 시
지식공유자 : 김시훈
총 110개 수업˙총 11시간 56분
평생 무제한 수강
수료증 발급 강의
입문 초급 대상 중급이상
이 강의는 멘토링 신청이 가능합니다.
멘토링은 수강 신청과 별개로 운영되며, 수강생이 아니어도 신청할 수 있습니다.
내 목록 추가 491 공유
초급자를 위해 준비한
[데이터베이스, 웹 개발] 강의입니다.

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

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

지식공유자가 알려주는
강의 수강 꿀팁!
🎓
이런 분들께
추천드려요!
mongoDB를 제대로 사용해보고 싶으신분
백엔드 개발에 입문 해보고 싶으신분
확장성이 뛰어난 백엔드와 데이터베이스를 구축해보고 싶으신분
📚
선수 지식,
필요한가요?
Javascript 기초 문법(혹은 기본적인 프로그래밍 지식)

안녕하세요
김시훈 입니다.
김시훈의 썸네일

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

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

커리큘럼 총 110 개 ˙ 11시간 56분의 수업
이 강의는 영상, 수업 노트가 제공됩니다. 미리보기를 통해 콘텐츠를 확인해보세요.
섹션 1. MongoDB 맛보기
MongoDB Atlas(Managed Cloud Service) 미리보기 04:28 데이터베이스 생성 및 연결 미리보기 05:53 create document 미리보기 03:01
Schemaless 특성 02:36
update document 01:42
update nested document 01:59
Update with ObjectID 02:25
delete document 00:49
CRUD 00:43
Database 구조 01:33
섹션 2. Node.js & Express를 활용한 REST API 만들기
Node.js 설치 02:35
npm 02:06
Code Editor 03:36
package.json 03:57
Express 설정하기 02:11
nodemon 02:27
REST API 06:12
User GET & POST API 만들기 04:41
Postman 02:20
Express Middleware 06:13
섹션 3. 비동기(Asynchronous) 프로그래밍
Non-blocking 미리보기 11:49
Callback 11:15
Promise 07:02
Promise Chain 08:38
Async Await 07:19
요약 09:14
섹션 4. Node.js로 MongoDB 다루기
Mongoose Connection 10:06
Schema & Model 05:36
User Document 생성하기 03:04
Express에서 오류 처리하기 08:11
GET /user 02:57
Unique Index 03:44
GET /user/:userId 05:41
DELETE /user/:userId 03:04
PUT /user/:userId 08:19
Mongoose가 내부적으로 어떤 작업을 하는가 04:26
debug 모드 설정하기 07:22
라우터 리팩토링 03:28
VS Code Plugin 설정하기 01:55
findOneAndUpdate vs save 04:55
save로 document 수정하기 04:44
섹션 5. 관계된 데이터 관리하기
User와 관계된 Blog Model 04:39
Blog Router 준비하기 04:48
create Blog document 09:14
Blog 관련 API 만들기 11:03
Postman API 관리하기 05:39
Comment model 만들기 02:16
자식 관계 만들어주기 06:41
POST /comment 07:51
Promise.all - Response Time 개선하기 02:37
Comment 불러오기 07:27
리팩토링 02:35
섹션 6. 관계된 데이터 효율적으로 읽기
블로그의 관계 데이터 읽기 소개 미리보기 05:00
faker로 데이터 생성하기 12:55
axios 이용해서 client 코드 만들기 14:55
Client 코드 리팩토링 & 마무리 09:33
N+1 Problem 06:45
성능 측정하기 09:30
populate로 자식문서 효율적으로 불러오기 11:25
Virtual Populate 07:35
Populate 성능 테스트 04:28
개념 복습 04:43
섹션 7. 문서 내장으로 읽기 퍼포먼스 극대화
MongoDB 핵심 - 적절한 내장(denormalize) 미리보기 02:31
수정된 faker 적용하기 05:07
Comment POST API 수정하기 14:33
debugging & testing Comment POST API 05:03
Blog에 Comment 내장하기 04:42
Nesting 성능 테스트 11:53
"$" 내장된 특정 문서 수정하기 10:36
updateMany 11:16
arrayFilter 08:55
$pull, $elemMatch 05:41
User 삭제하기 06:06
스키마 설계 12:09
섹션 8. Index - 많은 데이터 관리하기(빠른 읽기)
데이터가 많아지면서 느려지는 탐색시간 미리보기 03:38
Index 원리 이해하기 06:03
탐색 성능 테스트를 위한 데이터 생성 02:53
index 성능 테스트하기 12:49
Pagination 원리 14:19
GET /blog API에 Pagination 적용 06:57
Compound Key(복합키) 07:14
Selectivity - 분포도를 고려해서 효율적으로 인덱스 생성 16:08
mongoose로 index 생성하기 07:28
text index 생성하기 05:50
세션 마무리 05:00
섹션 9. 부분 Nesting & Pagination을 이용한 고급스러운 API 만들기
세션 소개 미리보기 07:42
Comments Pagination 07:35
Computed Fields 07:46
부분 내장(Partial Nesting) 08:25
섹션 10. Transaction - 데이터 일관성 보장
섹션 11. AWS에 Node.js 백엔드 배포하기
배포 과정 설명 미리보기 02:36
git 설정 04:04
.env로 환경변수 설정 06:24
github으로 코드 push 04:07
AWS lightsail 서버 준비 03:30
Lightsail에 Node.js 설치 및 환경변수 설정 09:53
80포트 설정 및 pm2로 서버 실행 11:19
앗 환경변수가 노출? 05:34
변동 IP의 문제 미리보기 03:30 도메인 연결 미리보기 08:30 https(SSL인증서) 적용 미리보기 03:20
Postman 환경변수 설정 02:58
서버 내리기(과금 막기!) 02:07
섹션 12. 무중단 서비스 & 확장성 그리고 관계형 데이터베이스(RDS)와 비교하기
Replica set - Zero Down Time(무중단 서비스) 05:08
Sharded cluster - Horizontal(수평) 확장 10:14
관계형데이터베이스와 비교하기 17:00
강의 게시일 : 2021년 02월 04일 (마지막 업데이트일 : 2021년 02월 21일)
수강평 총 25개
수강생분들이 직접 작성하신 수강평입니다. 수강평을 작성 시 300잎이 적립됩니다.
4.8
25개의 수강평
5점
4점
3점
2점
1점
VIEW 좋아요 순 최신 순 높은 평점 순 낮은 평점 순 평점 순 높은 평점 순 낮은 평점 순
박종희 thumbnail
정말 많은 도움이 되었어요. 강의를 들으면서 그동안 몽고디비를 몽고디비답게 사용하지 못하고 있었구나 싶어요. 다음 프로젝트부터는 배운 것을 적용해보겠습니다. 감사합니다.
2021-04-18
Dev thumbnail
강의 구성도 알차고 질문 답변도 정말 잘해주십니다! 많은걸 배울 수 있었네요 감사합니다!
2021-05-14
jsshin thumbnail
MongoDB를 잘 몰랐었는데 쉽게 알려주셔서 감사합니다.
2021-05-22
EH thumbnail
이해 하기 쉽게 잘 가르치십니다ㅎㅎ 다만, 디비 개념이 아에 없으면 중간에 멍해질 때 있음ㅎㅎ 추천 !
2021-04-26
윤병록 thumbnail
5년차 자바 개발에서 노드몽고DB로 전향하려고 공부중이였는데 많은 도움이 되었습니다. 많은 자료 인강을 통해 공부해왔는데 이자료가 가장 으뜸이였습니다. 앞으로도 좋은 강의 부탁드리겠습니다.
2021-02-22
77,000원

월 15,400원

5개월 할부 시
내 목록 추가 491 공유
지식공유자 : 김시훈
총 110개 수업˙총 11시간 56분
평생 무제한 수강
수료증 발급 강의
입문 초급 대상 중급이상
이 강의는 멘토링 신청이 가능합니다.
멘토링은 수강 신청과 별개로 운영되며, 수강생이 아니어도 신청할 수 있습니다.
수강 전 궁금한 점이 있나요?
문의하기
문의
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의를
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스