Spring - git fork를 이용한 mongodb 프로젝트(1-설치 및 연동)

겔로그·2022년 8월 6일
0

Spring Boot

목록 보기
18/21

개요

오늘은 이전에 생성했던 프로젝트에 mongodb를 생성하여 연동하고 이를 git fork를 이용해 git repository에 등록하는 일련의 과정을 실습해볼 예정이다.
실습에 앞서, mongoDB를 이용하기 위해 mongoDB 계정을 생성해보자.

MongoDB

MongoDB란?

MongoDB란 Database 종류중 하나로 대표적으로 분류되는 RDB(관계형 데이터베이스)와 NoSQL(Not only SQL)중 NoSQL에 속하는 대표적인 데이터베이스이다. 관계를 정의하여 테이블에 데이터를 넣는 RDB와는 달리 NoSQL은 자유롭게 입력이 가능하다는 장점이 있다.

MongoDB에 대한 내용은 이후에 좀 더 상세하게 다뤄보겠다.

MongoDB 설치

환경: Mac Pro(M1)

가장 먼저 mongodb를 이용하기 위해서는 계정이 필요한데 다음 링크로 들어가 각자 계정을 생성한다. (url: https://account.mongodb.com/account/login)

계정 생성이 되면 다음과 같은 초기 화면을 확인할 수 있다.

우리는 새로운 프로젝트를 진행하기 위해 오른쪽의 New Project 버튼을 눌러 새로운 프로젝트를 생성하자.

1. 프로젝트 생성

새로운 프로젝트를 만들면 다음과 같이 프로젝트가 생성되며 화면 정 중앙에 Build a Database라는 문구가 떡하늬 띄워져 있는 것을 확인할 수 있다. 우리는 Database를 이용해야 하므로 해당 버튼을 클릭한다.

2. 프로젝트의 Database 생성

성능은 다음과 같이 3가지로 구분되어진다. 여기서 우리는 교육용으로 db를 구축해 이용할 것이기 때문에 Free 티어를 선택한다. 만약 서비스를 운영한다거나 좀 더 실서비스에서 사용되는 db 장비를 이용해보고 싶다면 유료로 제공되는 db를 선택해 운영하면 된다.

3.Database의 클러스터 생성

mongoDB는 대규모 데이터 처리를 위해 샤딩 기능을 지원하는데, 이 때 클러스터를 이용해 보다 더 좋은 성능으로 사용자들이 사용할 수 있도록 도움을 주는 녀석이다. 클러스터란 쉽게 말하면 mongoDB를 공사판이라 하고 공사를 지을 건설 자재가 데이터라고 하면 건물 자재를 공사장 내부로 빨리 옮기기 위해 대기중인 인력들이라고 생각해도 될 것 같다.
(물론 의미는 아예 다르지만 지금은 그냥 더 많은 처리를 위해 구성하는 집단이라고 봐도 될 것 같다.)

4.DB 설정

최종적으로는 DB를 설정하는데 마지막 창에서는 다음과 같은 내용들을 기술한다.

  • 해당 db를 사용하는 user 입력
  • 해당 db를 이용할 수 있는 ip 대역 설정

지금은 혼자만 사용할 것이기에 임의로 두 개의 계정을 생성하겠다.

IP Access를 다음 부분에서 제어하여 현재는 0.0.0.0으로 설정하되, 추후에 이용가능한 ip 대역대로 변경해 서비스를 운전하면 좋을 것 같다.

MongoDB Compass 설치

이제는 mongoDB를 편리하게 이용하기 위해 MongoDB GUI인 MongoDB Compass를 이용하겠다.
다음 링크에 가서 mongodb compass를 설치하면 된다.
url: https://www.mongodb.com/try/download/compass

이제 해당 데이터 베이스를 mongoDB Compass에 연동하겠다. 맨 아래 Connect using MongoDB Compass를 클릭한다.

클릭할 경우 다음과 같은 화면이 나타날 것이다.

여기서 url을 복사해 과 를 내가 이전에 설정한 계정으로 수정하면 mongoDB compass에서 정상적으로 접속이 가능하다.

접속이 완료되면 다음 화면이 보일 것이다.

이제 document 및 collection을 생성하고 프로젝트를 진행해보자.

Spring Boot MongoDB 연동

1.프로젝트 생성

이전 시간에 만들어 놓았던 git 프로젝트는 말 그대로 비어져 있다. 우리는 프로젝트 생성하는 법을 배웠었다. 모르면 spring boot 개발 시작하기 를 참고하자.

이제 spring initializar를 통해 프로젝트를 생성하고 해당 프로젝트를 git으로 pull받은 폴더에 복사한다.(나처럼 하지말고 그냥 git으로 받은 폴더에서 프로젝트를 생성하자..)

다음 화면을 보면 Local Change(9)라는 내용을 확인할 수 있다. 이 내용은 local 환경과 git에 올라가진 패키지 내부 파일 내용이 9개가 바뀌었다는 의미로 생각하면 된다.

git을 관리하는 방법에는 다양한 방법이 있고, 팀프로젝트가 되면 feature 등을 따서 내용을 올릴 때 pull request 및 merge하는 과정이 있는데 지금은 혼자 하는 프로젝트이니 해당 과정은 생략하겠다.

일단 개발 브랜치 develop 브랜치를 New Branch를 통해 생성하고, 변경된 local 파일을 commit해보자

2.Commit & Push

Stage란 local 환경에 있는 파일을 git에다가 올릴 때 git에 올릴 내용들을 Stage에 먼저 저장하고 이후에 git 레포지토리로 올라간다고 생각하면 된다.

        commit         push
 local  <-----> stage <-----> git repo 

오른쪽 하단의 파란색 버튼을 보면 git fork는 commit and push로 다음 일련의 과정을 한번에 수행해주기 때문에 클릭 한 번으로 편하게 진행할 수 있다. 이제 버튼을 눌러보자.

다음과 같이 develop 브랜치로 생성할 경우 앞에 orgin이라는 단어가 붙어 origin/develop이 추가로 생성된 것을 확인할 수 있다.

서둘러 github으로 가보자.

다음과 같이 develop 브랜치가 git 저장소에 추가로 생성된 것을 알 수 있다. 이제 해당 브랜치를 pull request & merge 과정을 거쳐 master에 병합할 수 있는데 나는 develop(개발) 브랜치를 그냥 메인으로 사용하고 싶다. 이럴 땐 어떻게 할까?

git에는 main branch를 변경할 수 있는 방법이 있는데, Settings -> Branches 로 들어가보자.

역시 기능부자... 바로 방금 이전에 올린 develop branch를 default로 수정하겠다.

이제 다시 연동으로 돌아가보자.

3. MongoDB 연동

가장 먼저 MongoDB를 사용하기 위해서는 dependency를 추가해줘야 한다.

dependency

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-data-mongodb</artifactId>
	</dependency>

이제 다시 SpringBootApplication을 실행해보자.

실행시 다음과 같은 에러가 발생한다. 이는 spring-boot-starter-data-mongodb가 기본적인 설정을 진행해줄 경우 자동으로 mongodb를 연결시켜주는 아주 좋은 기능을 제공하는데 기본적인 설정없이 dependency만 작성해서 다음과 같이 connection error가 발생하는 것이다. 설정은 다음과 같다.

application.yml

spring:
  data:
    mongodb:
      uri: mongodb+srv://<username>:<password>@atlascluster.ourzhlb.mongodb.net/test
      database: <your database name>

다음과 같이 연동할 경우 결과를 보자.

Very Good

이제 DB가 연동되었음을 확인했으니 이 상태 그대로 git에다가 push를 진행하겠다.

완료~

결론

오늘은 mongoDB 계정 생성 및 Spring Boot 프로젝트에 연결하는 방법까지 공유하는 시간을 가졌다. 공유하다보니 느낀점은 mongoDB 및 git fork, git의 다양한 기능들에 대해서도 좀 더 알아보는 시간을 가지면 좋겠다는 생각이 가장 먼저 들었다.

다음 시간에는 mongodb에 데이터를 입력하고, 조회해보고, 이를 이용해 기능까지 구현하는 시간을 가져보겠다.

profile
Gelog 나쁜 것만 드려요~

0개의 댓글