끊임없이 검증하라

나에게 당연할지라도

Project

P1_클론 프로젝트(feat. 스프링부트와 AWS로 혼자 구현하는 웹 서비스)_Ready

fadet 2022. 3. 20. 20:16

* 이 포스트는 전 배달의민족, 현재 인프런에 계시고 유튜브 개발바닥의 크리에이터이신 개발자 이동욱님의 '스프링부트와 AWS로 혼자 구현하는 웹 서비스'를 기반으로 작성되었음을 알립니다. 포스트 맨 아래에 관련 링크가 있습니다. 책의 내용을 기반으로 작성되기에 실습 중이라면 책을 main 해당 포스트를 sub로 참고해주세요. 책의 설명이 부족한 부분 위주로 포스트가 구성됩니다.


이전 포스트에서 기본 설정을 다뤘기에 이번 포스트는 학습 방향성에 대해서 다루겠습니다.

 

$ 개념 초간단 정리(백엔드 개발만 공부하신 입문자들에게 생소할 수 있는 개념만)

- mustache : html같은 마크업 언어에 if 등의 분기문을 넣을 수 있는 템플릿 엔진 중 하나

- SSR(server-side rendering) : 설계도를 주고 html, js를 이용해 client의 브라우저가 화면을 만드는 CSR(client-side rendering)과 반대로 서버에서 렌더링이 끝난 결과를 client에게 던져주는 방식

 

이 책을 통해 얻을 수 있는 지식은 크게 다음과 같습니다.

- spring boot, mustache를 활용한 mvc 기반 게시판 프로젝트 빌드

- AWS EC2를 활용한 무중단 배포

 

실제로 1인 개발에서 필요한 모든 과정을 책 한 권으로 실습해 볼 수 있다는 큰 장점을 가지고 있지만 선수 지식 없이는 아무래도 코드에 대한 이해가 부족하여 코드 복사만 할 수 있다는 단점도 일부 가지고 있습니다. 따라서 해당 책을 학습하기 전에 최소한 갖출 지식 몇 가지를 소개하자면

  • 자바 기본 문법(java 8에서 등장한 lambda까지)
  • 현재 표준이 되는 annotation기반 스프링 mvc의 기본 작동 원리(view controller service repository model)
  • 롬복 기초 사용법
  • jpa 기본 원리(jpa에 대한 입문 지식이 책에 존재하지만 jdbc, hibernate, spring-data-jpa 정도의 단어는 학습 추천)
  • (++) javascript 기초 문법, client-server 통신 및 restapi 기본 지식

정도이고 AWS 관련 내용은 입문부터 시작해도 가능할 충분히 많은 내용이 책에 수록되어 있습니다. 아래 내용은 책의 코드 설계 구조가 원래 배웠던 방식과 달랐던 필자의 경험을 바탕으로 작성한 문장이니 해당되지 않으시면 그냥 넘어가시길 바랍니다.

 

- 기존에 필자는 thymleaf, JSP 등의 템플릿 엔진을 사용하여 view를 작성하는 SSR방식의 Controller에서 client의 request를 직접 받는 설계로 코드를 작성하였는데 책에서의 구조는 CSR 방식에 더 가깝다고 볼수있습니다. 또한 도메인을 다룰때 엔티티에 직접 접근하지 않고 dto를 통해 데이터를 전달합니다. 책에서 데이터를 변경하는 api request를 받는 PostsApiControllerclient에게 보여줄 view를 매핑하는 IndexController 두개를 분리하며 도메인을 직접 갖다 쓰지않고 Dto 클래스를 사용하여 api를 다루는 설계를 기본으로 합니다. 이후 포스트에서 다루겠지만 실제로 기본적인 결은 같습니다. 여기서 좀 더 Controller의 역할을 분리하고 dto 클래스를 추가한 점이 조금 다르다고 생각하시면 편할텐데 잘 이해가 되지 않으셔도 책의 내용을 진행할때 큰 문제는 없으니 미리 인지하고 가시면 충분하고 dto나 api에 대한 이해가 없으시다면 미리 공부하고 넘어가시길 추천합니다.

 

또한, 저자는 테스트 코드를 필수로 익혀가길 언급할 정도로 테스트 코드의 중요성을 소개합니다. 필자 또한 책에 있는 테스트코드를 모두 학습하길 권장하지만 시간이 지나 테스트 코드의 많은 설정이 변경되었기 때문에 학습이 조금 귀찮을 수는 있습니다. 그렇지만 처음 학습하더라도 유닛/통합테스트의 차이, assertThat/andExpect 등의 기본메서드, 테스트의 작성 이유 같은 기본적인 내용은 무조건 숙지하고 넘어갔으면 합니다. 복습할땐 당연히 모두 학습해야할 것이지만요.(필자도 아직 완벽하게 학습하지 못했으니 이런말을 할 자격은 없겠지만서도...)

 

그리고 이 책은 빌드/배포 크게 두 파트로 구성되어 있고 필자가 느끼기에는 빌드보단 배포에 대한 설명이 좀 더 자세하게 되어 있습니다. 때문에 매우 주관적인 얘기겠지만 이 책을 처음 학습할 때 선수지식이 부족하다면 ~스프링 시큐리티 부분까지는 이해보단 실습 위주로 진행하고 책을 한 번 완독한 뒤 개발 지식을 더 쌓고 다시 책을 복습하는게 좋다고 느껴집니다.

 

포스트는 책의 빌드 과정은 좀 더 익숙한 파트다보니 설명 위주로 되어있지만 배포 과정부터는 제가 만난 어려움을 해결하는 과정 위주로 쓰여질 것 같습니다.

 

다음 포스트부터는 프로젝트 진행 과정 중 생긴 issue 위주로 2장부터 다루겠습니다.


refer

이동욱님 블로그의 관련 포스트 : https://jojoldu.tistory.com/539?category=717427

개발바닥 유튜브 : https://www.youtube.com/channel/UCSEOUzkGNCT_29EU_vnBYjg

 

개발바닥

본격 세계최초 DEV 엔터테인먼트 토크쇼 두 스타트업 개발자의 요절복통 이야기 구독 안하면 장애남!!

www.youtube.com

이동욱님 github의 해당 repository : https://github.com/jojoldu/freelec-springboot2-webservice