Back-End/Spring 자료실

[Java 웹개발 마스터] #1. 스프링 부트 프로젝트 시작

Chipmunks 2020. 8. 3. 00:28
728x90




이번에 동아리에서 스프링 부트로 토이 프로젝트를 진행하게 되었는데요.

스프링은 물론 스프링 부트 지식이 부족하다보니 강의를 참고하면 어떨까 싶었는데요.

이전에 온라인 강의를 완강하며 느낀 점이 실무자 강사님들의 실전 팁들이 굉장히 마음에 들었습니다.

마침 자바 웹 개발 강의도 있어서 이번에도 패스트 캠퍼스 강의를 선택했습니다!


저번 패스트 캠퍼스 관련 포스팅들은 관계자 분들과 협의 하에 강의 내용을 올려도 됐었는데,

이번에는 그대로 강의 내용들을 정리하기 보다는 알게 된 점들을 대략적으로 정리하고

보충이 필요하다면 따로 정리를 하는 식으로 해보려고 합니다!


자바 파트는 천천히 듣기로 하고 먼저 스프링 강의로 넘어갔습니다..! (언젠가 듣겠습니다..)

강의 방식은 직접 예제 프로젝트를 강사님과 같이 만들어 보면서 진행합니다.

첫 예제 프로젝트는 식당 예약 사이트인데요.


스프링 부트 프로젝트를 어떻게 구성하는지부터 시작을 했습니다.

spring initializr 사이트로 Java 11 버전의 스프링 부트 Gradle 프로젝트를 생성을 해봤습니다.


프로젝트 환경을 구성하는 도중에 Devtools 라이브러리를 새로 알게됐습니다.

톰캣 서버를 재가동하지 않아도 다시 빌드만 해줘도 새로고침으로 새 빌드본을 볼 수 있었습니다.

Lombok 라이브러리는 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책으로 경험을 해봤습니다.


요번에 들었던 강의 영상에서 인상 깊었던 점은 바로 기능 구현으로 들어가는 것 보다는

왜 이 프로젝트를 선택했고 사용자에게 어떤 가치를 주고 싶은지, 사용자별로 유저 시나리오를 작성해보고,

기능 명세서를 정리하고 기술 스택도 정리를 해보는데요.


그 중 '어떻게 만들 것인가' 강의에서는 본격적으로 API를 개발하기 전에 도메인 모델들을 정의를 하고 넘어갑니다. 도메인 모델은 Restaurant, User, Favorite, Review, Reservation 으로 이루어져 있습니다.


그 다음 시스템 아키텍처를 어떻게 만들 지를 이야기 해보는데요.

멀티티어 아키텍처 중 3-tier 아키텍처를 선택을 했습니다.

3-tier 아키텍처는 프레젠테이션 계층과 비지니스 계층, 데이터 소스 계층으로 이루어 집니다.

프레젠테이션 계층은 사용자와 소통하는 계층으로 HTML/CSS/JS를 이용하는 프론트 엔드 영역입니다.

비지니스 계층은 사용자가 요청한 것들을 처리하는 계층으로 REST API를 이용하는 백 엔드 영역입니다.

데이터 소스 계층은 비지니스 계층에서 처리한 것들을 저장하는 계층인데요, DBMS를 사용하는 데이터베이스 영역입니다.


실제 프로젝트에 들어갈 때 당연히 고려해야 할 사항을 전문가의 입장으로 되짚어주셔서 도움이 많이 됐습니다.

저의 팀 프로젝트를 진행할 때도 참고를 했습니다.


스프링 부트 프로젝트를 다운로드 받고 프로젝트 환경을 설정했습니다.

처음에 눈 여겨 볼 점은 멀티 프로젝트 구조로 만드는 것이었는데요.

eatgo-api 디렉토리를 만들고 기존 src 폴더와 build.gradle 파일을 그 안으로 옮기는 형태입니다.

루트 디렉토리에 settings.gradle 파일에 include 'eatgo-api' 를 작성해 멀티 프로젝트 구조로 만들었다.


보통 스프링 부트 프로젝트를 여러 프로젝트로 잘게 나눠 개발한다는 점을 배울 수 있었습니다.


이후에 'Hello, World' 를 출력하는 Controller 를 만드는 실습을 진행하고 스프링 프로젝트를 실행해봤습니다.

Devtools 라이브러리로 서버를 가동하고 난 뒤 재빌드한 결과물을 자동으로 띄워주는데, 테스트를 진행해도 변경사항이 반영이 된다.


다음은 테스트란 무엇이고 테스트를 왜 하는지, 스프링에선 어떻게 테스트를 하는지, TDD란 무엇인지 알려주는 강의인데요.

개인적으로 TDD는 많이 들어봤지만, 어떻게 코드를 짜야하는지 무척 궁금했었기에 많이 기대가 됩니다!