도서/IT 도서

스프링 부트와 AWS 배포, 두 마리 토끼를 챙기는 책, 스프링 부트와 AWS로 혼자 구현하는 웹 서비스

Chipmunks 2020. 7. 4.
728x90

반갑습니다람쥐~

올해 3월부터 동아리에서 백엔드 개발을 시작하게 됐습니다..!

iOS 모바일 앱 개발로 쭉 활동을 하다 취업 방향을 서버쪽으로 정해 백엔드팀으로 이동했어요!

어쩌다보니 덜컥 팀장 역할을 맡게 되었는데요.

백엔드 개발 경험으로는 몇 년 전에 배포까지 해 본 '루비 온 레일즈 4'와 오래 전 게임 홈페이지를 만들었던 'PHP 5' 밖에 없었습니다. :)

자바도 익숙치 않고 더군다나 스프링은 무엇이고 스프링 부트는 또 무엇인지 몰라 고민이었어요.

저 뿐 아니라 팀원들과 함께 어떻게 하면 스프링 부트를 빠르게 익히고 프로젝트를 진행할 수 있는 정도로 나아갈 수 있을지 고민이었어요..!

 

동아리에선 원래는 스프링과 장고로 나뉘어져 있었지만, 이번에는 자바와 스프링 부트로 딱 정해졌어요.

그러다보니 장고를 하셨던 분들도 모두 이번에는 스프링 부트로 넘어왔습니다!

또한 새로 오신 신입 분들 또한 스프링을 경험하지 않으신 분들도 상당수 있었는데요.

API 서버 개발을 위한 스프링 부트를 쉽고 빠르게 알려주고 우리의 목적은 배포가 있으므로 배포까지 알려줄 수 있는 도서를 고민하고 선정했습니다~

 

 

 

'기억보단 기록을' 블로그를 운영하시는 이동욱 저자님의 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 으로 대서사시(?!)를 열었습니다. 표지만 봤을 때는 몰랐지만 책 사이즈가 은근히 작았습니다. 가격도 저렴한데다가 적당하게 두툼한 두께로 휴대성도 편했습니다.

 

 

첫 장은 인텔리제이 IDE로 Gradle 빌드 도구로 어떻게 스프링 부트를 시작하는지 그림으로 세세히 알려줍니다! 인텔리제이에 익숙하지 않은 분들도 쉽게 따라하더라요~

 

 

 

두 번째 장은 테스트 코드를 작성하는 방법을 알려줍니다. 본격적으로 API를 구현하기 전에 테스트 코드의 중요성과 어떤 식으로 만들어야 하는지를 알려주는 전개가 마음에 들었습니다.

다른 팀원분들도 인텔리제이를 설치하고 바로 테스트 코드부터 설명하는 편집이 인상적이었다고 하네요. :)

 

롬복이라는 신기한 라이브러리도 왜 쓰는지 어떤 장점이 있는지도 설명을 해주고 어떻게 적용을 하는지도 알려줍니다!

 

두 번째 장을 배우며 느낀 점은 자바의 어노테이션은 단순 주석을 넘어선다는 걸 느꼈는데요.

어떤 메소드나 어떤 매개변수, 어떤 클래스에 붙인 표식으로 프레임워크 또는 라이브러리가 찾아내 개발을 도와주는 방식이 신기했습니다. 다른 언어의 프레임워크와는 달리 소스 코드 작성 단계에서부터 직접적으로 간섭(?)을 하는 느낌이 강했습니다.

 

다만 어느 어노테이션이 어느 라이브러리 또는 프레임워크에 있는 지도 헷갈리고 반대로 이 라이브러리는 어떤 어노테이션을 지원하는지도 참 많이 헷갈렸어요!

스프링 부트와 롬복의 어노테이션을 같이 쓸 때 어떻게 배치해야하는지도 원칙이 있는 것도 배울 수 있었어요~

 

 

 

세 번째 장은 스프링 부트로 어떻게 데이터베이스에 접근하고 데이터를 저장하고 가져오는지를 알아봤어요.

JPA라는 인터페이스는 왜 생겨났는지, 어떤 특징이 있는지, 스프링 부트에서는 어떻게 사용하는지를 단계별로 알려줘서 좋았어요!

스프링 부트에서 뷰와 컨트롤러와 데이터베이스가 통신하기 위해 어떤 아키텍처를 써야하고 프로젝트 구조를 어떻게 구성해야 하는지 알 수 있었고 계층간 데이터를 주고받기 위해 DTO라는 객체도 알게 되었어요.

 

Spring Data JPA 라이브러리의 테스트 코드도 작성해볼 수 있었는데요. 뿐 만 아니라

도메인 모델과 서비스 계층의 흔한 오해를 지적하고 올바른 도메인 모델의 설계 방법과 서비스 계층의 목적을 일깨워준다는 점이 인상 깊었습니다.

 

비록 분량 상 모든 것을 담지는 않았지만, 저처럼 스프링 부트를 처음 시작한 사람이 잘못된 개념을 가지지 않도록 많이 신경써주는 느낌이 인상 깊었고 좋았습니다!!

 

 

다섯 번째 장은 스프링 시큐리티로 OAuth 2.0 소셜 로그인을 연동해보는데요!

저 뿐만 아니라 다른 팀원분들도 가장 어려워했었던 장이었습니다..!

설정 클래스를 직접 만드는 것도 생소해서 과연 직접 혼자 만들어볼 수 있을까, 라는 두려움을 심어주기도 했습니다.

언젠가 스프링 시큐리티 API 문서를 자세히 들여다봐야겠네요.

 

5장 마지막에 어노테이션을 직접 만들어서 중복 코드를 제거하는 실습이 있는데, 많이 인상적이었습니다!

어노테이션을 생성하고 그 어노테이션이 적용된 메소드를 처리하기 위한 클래스를 만들어보는 것도 파라미터에 붙이는 어노테이션의 원리를 알 수 있어서 도움이 많이 됐습니다.

 

6장부터는 본격적으로 AWS에 연동해 거의 사진으로 이루어져 있습니다.

EC2 서버에서 실행해야 하는 스크립트 부분도 직접 만들어보고 명령어를 이해하느라 힘들긴 했지만, 언젠가 배포해야할 때 도움이 많이 되겠다 싶어서 마지막까지 볼 수 있었던 것 같네요..!

CI/CD 개념과 무중단 배포 개념도 간략하게 설명하고 바로 실습으로 넘어가서 빠른 시간 안에 몸으로 체험할 수 있어서 좋았습니다.

 

책의 단점으로는 오타와 코드 오류가 조금 있었습니다..!

개정을 거치며 나아지겠지만, 혹여 코드에 오류가 있다면 혼자 앓지 말고 예제 깃허브 이슈 메뉴로 가면 확인할 수 있습니다.

뿐만 아니라 질문도 주고 받을 수 있습니다.

 

 

초반부에 Gradle 버전 문제로 진행이 안되었어서 멘붕이 일어났었는데,

다행히 예제 저장소의 README.md 파일에 Gradle 버전 주의사항이 바로 있더라고요.

또 윈도우 OS 상에서 Mustache 모델 파라미터로 'userName' 으로 넘겨줬을 때 환경변수 값이 나오는 문제와 배포 스크립트 코드 문제도 검색해서 해결했습니다!

 

깊은 지식을 다루지는 않지만, 스프링 부트를 빠르게 입문하시려는 분들께 꼭 추천드리는 책입니다.

댓글