MongoDB 입문하기

유수민·2022년 8월 24일
0

모먹지 프로젝트

목록 보기
3/4

프로젝트에 api 호출에 대한 데이터 수집으로 mongoDB를 적용하고 싶었다. 우선 개념적으로 MongoDB의 특징, RDB와의 차이같은 것을 정리했으나 실제로 적용하지 않았어서 MongoDB를 제대로 공부했다고 할 수 없었다. 그래서 이번에 모먹지 프로젝트쪽에 적용하면서 MongoDB에 대해 좀더 확립하는 시간을 가지고 싶었다. 프로젝트를 같이 하는 팀원이 "MongoDB API 호출 로그 쌓기"에 대한 PR을 먼저 올렸고, 난 이 PR에 대해 테스트하면서 MongoDB를 약간이나마 경험을 하고 그 과정을 통해 얻은 점에 대해 MongoDB 입문 차원에서 써내려가려고 한다.

📌MongoDB 구축 및 테스트

테스트를 하기전 MongoDB를 우선 구축을 해야하는데 그 방법은 두가지가 있었다.
1) 컴퓨터 자체에 MongoDB를 설치하고 프로젝트와 연결하기
2) WSl과 도커를 설치하고 이를 통해 MongoDB를 프로젝트와 연결하기

2번의 방법은 도커를 통해 MongoDB를 컴퓨터 자체에 구축하지 않고도 프로젝트가 MongoDB를 사용할 수 있게 만드는 방법이다.
사실 MongoDB를 처음 접하고 많은 사람들이 1번의 방법을 이용하길래 1번으로 시도해보려고 MongoDB를 컴퓨터에 직접 설치도 해보았는데 생각보다 시간이 걸렸고, MongoDB와 연결하기 위한 파일도 프로젝트에 새로 만들어야하는 등 약간 복잡했다. 따라서 2번 방법을 사용해보니 도커와 WSL을 이용한 방법은 단순히

  1. WSL에 docker run --name mongodb-container -v ~/data:/data/db -d -p 27017:27017 mongo 명령어를 작성하여 이미지 만들고
    image
  2. 도커 데스크탑을 통해 MongoDB에 접속한 후
    image
  3. Postman으로 api호출
  1. 호출에 대한 로그 확인 -> 3번 호출한 것에 대해 3번 다 기록되었다.

으로 정말 훨씬 간편한 방법으로도 프로젝트에 따로 건들이지 않고도 MongoDB를 구축하고 테스트 결과를 확인할 수 있었다.
이전에 도커의 장점에 대해 공부한 적이 있었는데 도커의 장점 중 하나인 "애플리케이션이 잘 돌아가기위해 컴퓨터 자체에 각각 구축해야하는 번거로운 작업을 하지 않아도 미리 구축해놓은 것을 이용해 또다른 조치없이도 애플리케이션이 잘 실행되게 하기 위해서"가 이번에서야 정말 잘 와닿았다.

📌테스트하면서 겪은 어려움

  1. 도커에 대한 저항감
    사실 이번에 도커를 처음 다루는 것이라 저항감에 많은 어려움이 있었다. 그래서 솔직히 1번 방법인 컴퓨터에 직접 MongoDB를 설치하는 것으로 끝내고 싶었다. 그래서 1번 방법을 시도해본 것이기도 했다. 하지만 하다보니 1번 방법이 약간 복잡했고 하다보니 "처음이라 힘든거지 오히려 도커를 이용하는 방법이 더 간편한 방법이 아닐까? 나중에 배포도 해봐야 하고 어차피 도커를 이용해야 하는데 참고 해볼까?"라는 생각이 계속 들어 결국 2번의 방법을 시도를 해보기 위해 도커와 wsl을 설치해보고 해당 명령어 문법도 찾아보고 같이 하는 팀원인 진홍님에게 질문도 해보며 저항감에 맞섰다. 결국 결론은 훨씬 쉬운 길이었다. 물론 위의 간단한 작업이 하루에 걸쳐서 끝낸것이지만 도커에 대한 저항감도 줄어들고 그와 더불어 테스트를 통해 MongoDB를 활용한 로그 데이터도 확인하면서 한발자국이지만 나아간 느낌이 들었다.

  2. 로그 데이터가 없다?!?
    PostMan으로 회원가입과 로그인 API 호출을 했음에도 불구하고 MongoDB에서 호출한 API에 대한 로그 쌓아진 것이 없었다.
    db에 log 컬렉션이 존재함에도 불구하고(db.getCollectionInfos()로 확인)
    api호출에 대한 데이터가 log 컬렉션에 존재 하지 않았다
    -> db.log.find().pretty() 또는 db.getCollection("log").find()의 명령어를 치면 관련 데이터가 나와야 한다.
    image (3)
    이상하게도 프로젝트에 로그 엔티티대로 컬럼이 구축되어 있었다. 즉, 프로젝트에 MongoDB가 연결이 되어있긴 한다는 것을 의미했다.

API 호출에도 불구하고 해당 호출에 대한 로그가 쌓아지지 않는 현상으로 보아 디비와 프로젝트 연결 오류에 대해 의심이 들었으나 위의 사진과 같은 현상으로 확신을 할 수 없다는 것의 이슈에 대해 진홍님과 공유를 하였다. 진홍님의 도움으로 도커데스크탑으로 도커를 정지했음에도 불구하고 프로젝트에 아무 반응이 없는 것을 확인하고

디비와 프로젝트 연결에 오류가 있음을 의심이 아닌 확신을 할 수 있게 되었다. 결론적으로 처음에 컴퓨터에 MongoDB를 직접 구축해놓은 것이 문제였다. 즉, 도커 데스크탑의 MongoDB가 아닌 컴퓨터에 구축해놓은 MongoDB와 프로젝트가 연결되어 있었다. 로그 데이터 확인을 도커를 이용한 MongoDB을 이용하였기 때문에 해당 데이터가 없었던 것이다. 따라서 컴퓨터에 설치된 MongoDB를 삭제하니 해당 이슈가 해결되었다. 처음에 이슈 해결을 위해 혼자하던 것을 진홍님과 이슈를 공유하여 토론하며 원인을 찾아가니 동료의 소중함이 더욱 느껴지는 순간이었다. 역시 개발자는 오로지 혼자가 아닌 같이 이야기하며 서로 격려하며 풀어가는 직업이라는 생각을 다시 한번 해보았다.

profile
배우는 것이 즐겁다!

0개의 댓글