메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

처음부터 제대로 배우는 스프링 부트

자바와 코틀린으로 만나는 클라우드 네이티브 애플리케이션 구축

한빛미디어

번역서

판매중

  • 저자 : 마크 헤클러
  • 번역 : 오시영 , 서정대
  • 출간 : 2023-05-08
  • 페이지 : 384 쪽
  • ISBN : 9791169210966
  • 물류코드 :11096
  • 초급 초중급 중급 중고급 고급
4.9점 (44명)
좋아요 : 7

도구 선택부터 애플리케이션 보안과 배포까지 스프링 부트의 모든 것

 

 

스프링 부트에서는 자바와 코틀린 언어 모두 사용할 수 있습니다. 개발자의 취향과 프로젝트의 특성에 따라 적합한 언어를 선택할 수 있습니다. 이 책은 성숙한 언어로 널리 사용되고 스프링 프레임워크의 공식 언어이기도 한 자바의 장점과, 간결하고 안전한 코드를 작성할 수 있는 코틀린 언어의 장점을 한눈에 볼 수 있게 구성되었습니다. 그뿐 아니라 메이븐과 그레이들 중에 어느 빌드 도구를 선택할지 인사이트를 제공합니다. 스프링 이니셜라이저에서 애플리케이션을 생성하는 순간부터 디버깅, 배포, 모니터링에 이르기까지 스프링 부트의 모든 것을 이 책에서 확인하세요.

 

이 책에서 다루는 내용

- 네이티브 애플리케이션 개발 및 배포를 간소화하는 방법

- 반응형 애플리케이션을 분산 시스템으로 만드는 방법

- 개발자의 생산성과 애플리케이션의 이식성을 향상하는 아키텍처와 접근 방식

- 애플리케이션을 빠르고 안정적으로 배포하는 방법

- 애플리케이션과 시스템의 상태를 모니터링하는 방법

 

- 클라우드 기반 애플리케이션의 디버깅, 테스트, 보안 유지

마크 헤클러 저자

마크 헤클러

VMware의 소프트웨어 개발자이자 스프링 개발 애드버킷Spring Developer Advocate, 컨퍼런스 연사, 자바 챔피언 및 코틀린의 구글 개발자 전문가입니다. 클라우드를 위한 빠르고 혁신적인 프로덕션 수준 소프트웨어 개발에 주력하고 있습니다. 그는 제조, 소매, 의료, 과학, 통신, 금융 산업의 주요 업체 및 다양한 공공 부문 조직과 협력하여 핵심 기능을 예산과 일정에 맞게 개발하고 제공했습니다. 오픈소스 기여자이자 개발자 중심 블로그의 저자/큐레이터로 가끔 흥미로운 트위터 글을 게시합니다(@mkheck ).

오시영 역자

오시영

프로그래밍으로 하고 싶은 것과 할 수 있는 것을 합니다.

서정대 역자

서정대

해군 통역 장교를 지냈으며, 현재 (주)핸디즈에서 코틀린/스프링 백엔드 개발자로 근무하고 있습니다.

CHAPTER 1 스프링 부트

_1.1 스프링 부트의 핵심 기능

_1.2 마치며

 

CHAPTER 2 도구 선택 및 시작

_2.1 메이븐 vs. 그레이들

_2.2 자바 vs. 코틀린

_2.3 스프링 부트 버전 선택하기

_2.4 스프링 이니셜라이저

_2.5 스프링 부트 CLI 거침없이 사용하기

_2.6 통합 개발 환경(IDE) 사용하기

_2.7 main()을 향한 여정

_2.8 마치며

 

CHAPTER 3 첫 번째 REST API

_3.1 API를 왜 사용하고 어떻게 사용할까요?

_3.2 REST가 무엇이며, 왜 중요할까요?

_3.3 API, HTTP 메서드 스타일

_3.4 GET으로 시작하기

_3.5 믿으라, 그러나 검증하라

_3.6 마치며

 

CHAPTER 4 데이터베이스 액세스

_4.1 DB 액세스를 위한 자동 설정 프라이밍

_4.2 앞으로 얻게 될 것

_4.3 데이터 저장과 조회

_4.4 추가적으로 다듬기

_4.5 마치며

 

CHAPTER 5 애플리케이션 설정과 검사

_5.1 애플리케이션 설정

_5.2 자동 설정 리포트

_5.3 액추에이터

_5.4 마치며

 

CHAPTER 6 데이터 파고들기

_6.1 엔티티 정의

_6.2 템플릿 지원

_6.3 저장소 지원

_6.4 @Before

_6.5 레디스로 템플릿 기반 서비스 생성하기

_6.6 템플릿에서 repository로 변환하기

_6.7 JPA로 repository 기반 서비스 만들기

_6.8 NoSQL 도큐먼트 데이터베이스를 사용해 repository 기반 서비스 만들기

_6.9 NoSQL 그래프 데이터베이스를 사용해 repository 기반 서비스 만들기

_6.10 마치며

 

CHAPTER 7 스프링 MVC로 만드는 애플리케이션

_7.1 스프링 MVC는 무엇을 의미할까요?

_7.2 템플릿 엔진으로 사용자와 상호작용하기

_7.3 메시지 전달

_7.4 웹소켓으로 대화(conversation) 생성하기

_7.5 마치며

 

CHAPTER 8 프로젝트 리액터와 스프링 웹플럭스를 사용한 리액티브 프로그래밍

_8.1 리액티브 프로그래밍

_8.2 프로젝트 리액터

_8.3 톰캣 vs. 네티

_8.4 리액티브 데이터 액세스

_8.5 리액티브 Thymeleaf

_8.6 완전한 리액티브 프로세스 간 통신을 위한 RSocket

_8.7 마치며

 

CHAPTER 9 프로덕션을 위한 애플리케이션 테스트

_9.1 단위 테스트

_9.2 @SpringBootTest

_9.3 슬라이스 테스트

_9.4 마치며

 

CHAPTER 10 애플리케이션 보안

_10.1 인증 및 인가 부여

_10.2 스프링 시큐리티 살펴보기

_10.3 스프링 시큐리티로 폼 기반 인증 및 인가 구현

_10.4 인증 및 인가를 위한 OIDC와 OAuth2 구현

_10.5 마치며

 

CHAPTER 11 애플리케이션 배포

_11.1 실행 가능한 JAR

_11.2 JAR 확장

_11.3 컨테이너에 스프링 부트 애플리케이션 배포하기

_11.4 스프링 부트 애플리케이션 검사를 위한 유틸리티 컨테이너 이미지

_11.5 마치며

 

CHAPTER 12 리액티브로 더 깊이 들어가기

_12.1 리액티브는 언제 사용할까?

_12.2 리액티브 애플리케이션 테스트

_12.3 리액티브 애플리케이션 진단 및 디버깅

_12.4 마치며

“연은 바람을 거슬러 날아오른다.”

_존 닐, The Weekly Mirror에 실린 ‘Enterprise and Perseverance’ 에세이에서

 

『처음부터 제대로 배우는 스프링 부트』에 오신 것을 환영합니다. 만나뵙게 되어 반갑습니다. 요즘은 여러모로 활용하기 좋은 스프링 부트 책이 많습니다. 훌륭한 저자가 쓴 좋은 책도 많습니다. 하지만 저자라면 누구나 어떤 내용을 다루고 제외할지, 내용을 어떻게 효과적으로 설명할지 등 책을 특별하게 만들 크고 작은 결정을 내려야 합니다. 한 저자에겐 부차적인 내용이 다른 저자에겐 꼭 필요한 내용이 되기도 합니다. 여느 개발자들처럼, 우린 모두 개발자이고 각자 의견이 있으니까요.

 

제 의견은 이렇습니다. 스프링 부트를 처음 사용하는 개발자에게 공유된다면 반드시 필요하고 대단히 큰 도움이 됐을 부분이 누락됐다는 겁니다. 그리고 누락된 부분은 스프링 부트를 다루는 능력이 서툴든 능숙하든 전 세계 도처의 개발자들과 만나 상호작용을 할수록 늘어났습니다. 우리 모두는 다른 것을 다른 시간에 다른 방식으로 배우고 있습니다. 그래서 이 책을 구상하게 됐습니다.

 

만약 여러분이 스프링 부트가 처음이라면, 혹은 스프링 부트에 대한 기본 지식을 더 쌓는 것이 유용하다고 여긴다면, 생각해봅시다. 기본 지식을 다루는 책이 있다면 언제나 유용하지 않을까요? 이 책은 여러분을 염두에 두고 썼습니다. 이 책은 스프링 부트의 주요 기능을 다루는 동시에 이 기능들을 현실 세계에서 애플리케이션에 유용하게 활용하는 방법을 가볍게 소개합니다.

 

여러분과 이 여정을 함께하게 되어 영광입니다. 그럼 시작해보죠!

 

_서문 중에서

책의 표지에서도 바로 느낄 수 있듯이 책은 처음부터 스프링 부트의 기본부터 다루고 있다.

하지만 기본에 대한 이론에서 그치치 않고, REST API라던지 스프링 MVC 패턴, 그리고 리액티브 프로그래밍등 다양하고 전반적인 스프링에 대한 내용들을 다루고 있어서 단순히 기본을 넘어서 중급이상으로 넘어갈 수 있도록 신경 쓴 책이라고 느껴졌다 :)

2023년 10월 리뷰 대상으로 신청한 도서이다.

교재에 사용된 소스는 다음 링크에서 받을 수 있다.

https://github.com/mkheck/SpringBootUpAndRunning

 

README.md하고 logo.png만 있어서  적잖이 당황했다.

알고 보니 각 챕터별로 branch를 땄더라.​

도서는 전반적으로 따라가기 쉽게 작성되어 있다.

다만 스프링을 처음 접하는 이라면 초기 설정하는데 헤매지 않을까 싶은 생각도 들더라.

나는 '처음부터' 라는 데에 관심이 있어서 이 책을 한 번 쓱 보려고 선정했는데,

알고 보니 이 책은 '제대로 배우는'에 방점을 찍은 것 같다.

그래서 처음부터 GUI 방식으로 설치하는 것 뿐만 아니라 CLI 거침없이 사용하는 방법도 나와있다.

(CLI로 설치할 수 있는 줄은 이번에 처음 알았다)​

01.png

난 그냥 GUI로 할란다...

이 책에서는 내가 처음 본 HTTPie라는 것을 사용하더라.

난 Postman에 익숙하긴 한데, 이건 어떤가 싶어 한 번 써보려 했다.

간단한 테스트는 HTTPie로 해도 될 것 같다.

02.png

HTTPie 테스트 화면

 

 

책에서는 주소에서 localhost 안 붙이고 하더라. 신기하네...

책이 얇다 보니, 큰 부담 없이 한 번 쭉 훑어보기에도 좋았다.

리액티브 프로그래밍이 뭔가 했더니 Pub/Sub을 요샌 그렇게 부르나보더라. 내가 그렇게 뒤떨어진 건가.. 

번역도 매끄럽게 잘 되었고, 내가 요새 Java 개발쪽은 손 놓았는데 이래저래 Spring Boot나 Backend Web 개발 트랜드 쫓아가는 데 좋은 책이었다.

다만 좀 아쉬웠던 점은 다음과 같다.

- 책이 컬러로 되어 있으면 좋았을 것 같다. 글자가 많으니 좀 더 알록달록했더라면 더 잘 읽히지 않았을까..

- 작가님이 자세하게 설명해 주려 길게 많이 쓰신 부분은 읽다가 지치는 부분이 있다.  설명용으로 다이어그램이나 도해를 조금 넣어주셨더라면 좋았을 것 같다.

 

03.jpg

설명이 지나치게 길어서 읽다 지친 부분

 

04.jpg

이런 내용 중간에 다이어그램이 있더라면 내용 이해가 더 쉬웠을 것 같다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다"

총 12장으로 구성되어있다

1.스프링부트

2. 도구선택 및 시작

3. 첫번째 rest api

4. 데이터베이스 엑세스

5. 애플리케이션 설정과 검사

6. 데이터 파고들기

7.스프링 mvc 로 만드는 애플리케이션

8. 프로젝트 리액터와 스프링 웹플럭스를 사용한 리액티브 프로그래밍

9. 프로덕션을 위한 애플리케이션 테스트

10.애플리케이션 보안

11. 애플리케이션 배포

12. 리액티브로 더 깊이 들어가기

크게 나누자면 이렇게 4묶음으로 나눌수있을것같다.

1장과 2장에서는 기본 설정들을 설명해주는장이며

3~6장은 애플리케이션단에서 데이터베이스를 연결하여 데이터를 가져오는 부분

이때 jpa와 mysql nosql 관련 설명이 조금있다.

책자체가 이런 옵션이있고 중요한부분이다를 집어주는 역할이라 타 기술에대해

상세한 설명까지는 없다 !

7~8장은 스프링부트로 mvc 패턴, 메세징, 그리고 부트에서 제공하는 템플릿 엔진인 타임리프 사용법

부트를 사용해서 가장빠르게 만들어보고싶다면 7장을 먼저 읽는것을 추천한다

그리고 8장 웹플럭스 부분은 조금 생소했다 스프링부트를 사용한다면

앞으로 공부해나가야할 방향인것같다

9~12장은 요즘 필요한 부분이라 느끼고있어서 열심히 읽었다.

9장 테스트 부분이 많은 도움이 되었다.

약간 생소했던 부분은 웹플럭스와 리액티브 프로그래밍..

그리고 책 초반에 코틀린 이야기가 있어서 코틀린의 비중이 좀 있는가 싶었는데

정말 살짝있다 ㅋㅋ

책이 얇고 빨리 읽을수있어서 좋았다.

얇다고해서 내용이 적은건 아니다

이책은 입문단계의 책이고

여기나온 내용들을 키워드삼아 깊은 학습을 하면 좋을것같다.

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

스프링 입문자들을 위한 쉽게 이해하며 따라 하기 좋은 입문서

 

이 책은 스프링 부트의 개념부터 시작하여 개발에 필요한 기본적인 IDE 그리고이와 관련된 DB Connector, spring-security, spring-cloud-stream,configuration 등등 스프링 부트를 사용하여 개발하다 보면 대면할법한 유명한 기술들을 실습 위주로 역은 책이다.

 

무엇보다 test case를 어떻게 구축해야 하며 어떤 방법이 효율적인지논함으로써 초보자들이 간과하기 쉬운 부분에 대해 한 번 더 집어줬다는 점에서 본 책의 실습 가치는 뛰어나다고 평가된다.

 

다만, 스프링 부트 자체만으로도 책 한 권은 거뜬히 채우고도 남을양의 방대한 기능과 정보를 내포하고 있는 만큼. 해당 책에서는 깊은 지식보단 얕지만 넓은, 초보자들이 알아두면 좋을법한 (필수라 여겨지는) 지식들이 정리되어 있다는 점을 참고하면 좋을듯하다.

 

【책의 구성】 "처음부터 제대로 배우는 스프링 부트"의 구성은?

 

이 책은 총 12개의 챕터로 이뤄져 있으며 구성의 순서가 짜여있는만큼, 차근차근 앞 챕터부터 차근차근 학습하시길 권장한다.

 

각 챕터 구성은 앞 부분에서는 기술에 대한 대략적인 소개를 그리고 중간에서는 그 소개에 바탕이 되는 실질적 기술내용에 대해 언급하고 마지막에는 '마치며'로 관련 내용들을한 번 더 요약하는 식으로 챕터 구성이 되어있다.

 

또한 작가가 소스코드와 관련하여 레파지토리를 통해 제공하고 있는 만큼. 코드를따라 해보며 실습하다가 이해가 안 가는 부분은 제공하고 있는 코드를 참고하여 실습하면 될 것으로 보인다.

 

 

3 챕터(장) : 첫 번째 REST API

이 챕터에서는 모든 IT 업계? (특히 웹 서비스에서) 기본이 되는REST API의 정의와 API가 어떤 식으로 구성되는지에 대한 설명이 나열되어 있다. 또한 POSTMAN, CURL 외의 HTTPie라는 간편한 툴을 사용한 REST API 테스트 방법에대해서도 술해 놓았다.

 

물론 그 내용이 충분히 심도 있다고는 할 순 없겠지만, 이제 막 입문하는사람들이 알아두면 좋을 법한 POST, GET, PUT, PATCH, DELETE, (HEAD, OPTIONS ) 등의 기본적인 Rest API 구성에 대해 스프링 부트 기반의 코드를이용하여 설명하고 있기에, 본인의 IDE에 해당 코드를 구성하여테스트하며 학습한다면 어느 정도 REST API의 기본 스텝은 땠다고 봐도 될 것이다.

 

 

5 챕터(장) : 애플리케이션 설정과 검사

 

이 챕터에서는 스프링 부트에서 사용되는 설정을 지정하는 방식에 대해서 학습한다.어노테이션 기반의 @Value를 시작으로@ConfigurationProperties까지 그 쓰임이 어떻게 되며 어떻게 유연하게 사용할 수 있는지에 대해서 설명하고 있으므로유심히 살펴볼 가치가 있는 파트이다.

 

더욱이 실무에서는 Configuration file dev-stage-real 등으로 각각 분리하여 관리하는 만큼. 실질적서비스 환경과 개발망에서의 환경이 철저히 격리되어 위의 파일들의 param들이 설정되어야 한다. 다만 해당 책에서는 이 부분에 대한 중요성 언급과 왜 그렇게 해야 하는지에 대한 당위성이 충분히 설명되어 있지않으므로 직접 관련 서적이나 혹은 인터넷 자료를 참고하여 공부하시길 권한다.

 

 

 

9 챕터(장) : 프로덕션을 위한 애플리케이션 테스트

 

이 챕터가 어찌 보면 이 책을 리뷰하며 가장 인상 깊었던 부분이라 할 수 있는데, 대부분의 스프링 부트 관련 책을 보면 unit Test를 어떻게구축하면 좋은지에 대해서는 언급하고 있으나, 실질적으로 그 UnitTest를 효과적이며 최적화해서 구축해야 하는 당위성에 관한 설명이 부재한 편이다.

 

하지만 이 책에서는 그 이유와 당위성에 대해서 저자가 잘 짚고 넘어가고 있다.또한 어떻게 하면 unit test가 철저히 격리되어 타test에 영향을 받지 않고 mocking 환경을 구축할 때 불필요한 다른 bean이나 스프링 부트 관련 설정 등이 관여하지 않게 되는지에 대한 설명도 수록되어 있다는 점에서 이 책이갖는 의의가 크다 할 수 있다.

 

그렇기에 앞 챕터에서 언급한 내용들에 대해서 어느 정도 친숙해졌고 이제unit Test가 무엇인지 학습하실 차례라면, 이 장을 꼼꼼히 살펴보시길 권한다.

 

TDD에 대한 개발론을 책에서도 언급하고 있으나, 이 내용을 책에 추가하기엔 그 분량이 방대하여 책에서는 생략되었으므로 따로 관련 책을 사서 학습하시거나 아니면한빛 미디에서 추천하는 TDD 관련 책을 읽어보시길 권장한다.

 

【 처음부터 제대로 배우는 스프링 부트를 읽고 나서 】

 

이 책은 스프링 부트 외에서 스프링 클라우드 스트림과 스프링 시큐리티와 같이 실무에서 자주 쓰이는 기술들에 대해서도잘 역은 책이다. 다만 스프링 클라우드 스크림과 스프링 시큐리티 자체만으로 상당한 양의 내용이 포함되기에해당 도서에서는 이를 심도 있게 다루기보단, 이런 것들이 있고 대략적으로 이렇게 쓰인다! 정도만 요약했기에 이를 전문화하기 위해서는 따로 학습이 필요하다.

 

, 스프링 부트를 처음 입문하는 사람. 스프링 부트를 어느 정도 알고 있으나 다시금 한번 정리하여 기초를 튼튼히 하고 싶은 분들이라면 이 책과 함께학습하시길 권장한다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

결론 : 추천합니다.

 

저자가 서문에서 쓴 말에 의하면

이 책은 스프링부트 책은 많지만 처음 사용하는 개발자에게 꼭 공유하고 싶은 내용을 담았다고 한다.

우리 모두는 다른 것을 다른 시간에 다른 방식으로 배우고 있습니다.

그리고 마지막 말에 의하면

훨씬 더 많은 기능이 있어서 두 세배 책의 범위를 늘리고 싶어하는 저자의 욕심도 보인다.

(그건 다음에 2 책에서 만나봤으면 ^^;;;)

 

나는 처음부터 다시 하는 맘(중고 신입?)으로,

챕터1~4까지 차근차근 책을 따라 직접 코드를 작성해봤다.

내용이 깔끔하고 번역도 섬세해서 따라하기가 참 유용했다.

다루는 것 : Spring Boot, (언어)Java, (DB)H2, HTTP Clinet(HTTPie),  JPA 등

( 코틀린은 소개만 하지 직접적으로 코드 예시로 다루진 않는다. )

H2는 따로 DB table을 만들지 않았는데 자동으로 다 해줘서 놀랬다.

HTTPie 대신 기존에 쓰던 postman으로 요청을 날려 응답값을 확인하였다. 

 

이후는 부분적으로 학습했다. 데이터, 스프링MVC, 테스트, 보안, 배포 등을 읽었다.

내겐 새로운 내용으로는 액추에이터, NoSQL사용법, 스프링 웹플럭스, 리액티브 프로그래밍이 있었다.
(굳이 이 부분들은 따라하지 않았다. 가볍게 지나쳤다.)


전반적으로 매우 깊이 있게 내용을 다루진 않고 이런게 있다고 소개한다.

나는 그런 간결함이 오히려 좋았다. 

다만, 각 @어노테이션의 내용에 대해서는 따로 학습이 필요하다. 

최근 스프링 부트를 다시 시작하여 리마인드가 필요한 분들에게 추천해주고 싶은 책이다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

처음부터 제대로 배우는 스프링 부트

 

한빛미디어의 "처음부터 제대로 배우는 스프링 부트"를 리뷰하게 되었습니다.

 

처음부터 제대로 배우는 스프링 부트

도구 선택부터 애플리케이션 보안과 배포까지 스프링 부트의 모든 것

www.hanbit.co.kr


책 소개

국내에서 가장 많이 사용되는 서버 프레임워크인 스프링 부트에 대한 튜토리얼을 할 수 있는 책입니다.

 

스프링 부트를 사용하면 톰캣을 내장 WAS로 제공하고 설정도 간편한데 대체 어떻게 그런 기능을 지원하는지 생각해보셨나요?

메이븐과 그래들 중 어떤 빌드 도구를 사용할지, 자바와 코틀린 중 어떤 도구를 사용할지 그리고 왜 선택했는지가 중요하다고 생각하는데 이 책에서는 각각의 특징을 이해하기 쉽게 설명해줍니다.

 

이후로는 서버를 개발하기 위한 여러 기술들을 하나씩 따라해보며 실습할 수 있도록 안내합니다.

REST API를 작성하는 방법부터, DB 연결, 테스트, 리액티브 프로그래밍과 배포까지 책을 따라하며 쭉 따라가면 서버 개발에 대해 어느정도 익힌 상태로 간단한 토이 프로젝트를 재밌게 개발할 수 있을 정도의 좋은 책이라고 생각이 듭니다.

 

개발을 하며 도움이 필요한 부분만 찾아서 보기에도 좋았습니다.

요새는 좋은 동영상 강의도 많지만 좋은 책들도 그만큼 많이 나와서 공부하기 정말 좋은 환경이 된 것 같아요.

 

스프링 부트에 대해 공부하시는 분들께 추천합니다.

 

굉장히 흐름이 빠른 편이다. 얇기도 얇은 편이고..

스프링부트 조차 모르는 사람을 위해 이게 뭔지, 장점은 뭔지 설명해주고 바로바로 예제를 수행해보고.

나름 얇은 책이라 빠르게 빠르게 넘어가는 편이다.

 

스프링 부트 입문자에겐 괜찮을 지도.

자바와 코틀린 언어를 둘 다 사용했는데 코틀린 언어는 더 모르기 때문에 패쓰했다.

 

 

 

근데 기본적으로 코틀린은 몰라도 자바는 알고 있어야 되는 것 같다.

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

사실 이 책은 읽고 싶은 책 목록에 있었던 책이다. 출간 됐다는 소식을 듣고 더 빨리 읽고 싶어했는데, 이렇게 서평을 통해 접할 수 있어서 반갑고 기대가 되는 책이었다. 어떻게 보면 대한민국의 자바 개발 문화가 점점 뒤로 밀려간다는 느낌이다. ChatGPT도 그렇고, 경쟁하는 타 언어의 무서운 성장도 그렇고, On-premise 개발환경이 아닌 이제는 Cloud Computing 환경으로 바뀌어 가는 것도 그렇고, 어느 것 하나 자바에게는 그다지 유리하지 않는 상황이다. 그럼에도 불구하고 배우려면 기초부터 제대로 배워야 한다는 신념 아닌 철학(강의하면서 개발하면서 알게 모르게 쌓아왔던)이다. 그러러면 주위에 좋은 개발 선배가 있어서 코드리뷰를 제대로 받거나 아니면 양서를 접해야 하는데, 어느  것 하나 사실 쉽지 않다. 

이 책은 역시라는 마음으로 읽어내려간다. 책 제목 그대로 '제대로'라는 단어가 어울리는 책이다. 스프링 부트를 처음 접하는 개발자부터 중급개발자까지 어깨 너머로 배우는 것이 아니라 제대로 된 양서를 통해 학습할 수 있는 책이다. 이 책 하나면 실무에서 꼭 필요로 하는 스프링 부트의 하나하나를 제대로 배울 수 있을 것 같다는 생각이다. 아쉬운 점은 책 분량때문 혹은 수준때문일 수 있다고 생각되지만, 스프링 배치나 스프링 클라우드도 다뤘으면 아는 아주 조금의 아쉬움이 있다. 자바를 가르치는 강사로서 개발자로서 자신있게 추천하는 책이다.

 

"처음부터 제대로 배우는 스프링 부트 : 자바와 코틀린으로 만나는 클라우드 네이티브 애플리케이션 구축"

자바와 코틀린을 사용하여 스프링 부트로 클라우드 네이티브 애플리케이션을 만드는 방법을 자세히 설명한 입문서입니다. 백엔드 개발자로서 이 책을 읽어가며 한 챕터 한 챕터마다 중요한 내용을 찾을 수 있었습니다. 책은 스프링 부트 프로젝트 구축부터 메이븐과 그레이들의 선택, REST API 및 JPA 등의 내용으로 시작하여 데이터베이스 접근과 애플리케이션 제작에 이르기까지 모든 단계를 상세하게 소개하고 있습니다.

스프링 부트를 사용하여 간단한 API 서버를 만드는 방법부터 데이터베이스 연결과 데이터 처리, 애플리케이션 보안, 테스트 등 다양한 내용을 다룹니다. 스프링 부트를 활용하여 네이티브 애플리케이션 개발과 배포를 단계별로 자세히 가르치며, 리액티브 프로그래밍, 클라우드 기반 애플리케이션의 디버깅, 테스트, 보안 유지 등 다양한 주제를 다룹니다. 이 책을 통해 스프링 부트에 대한 기술과 환경에 대한 포괄적인 이해를 얻을 수 있다고 생각합니다. 이 책은 스프링 부트에 대한 관심이 있는 사람이나 초보자에게 적합하다고 생각합니다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


Node.js 이외에 다른 언어로 Back-end 개발에 손을 대본지 꽤 오랜 시간이 흐른 것 같다. 

SSR 등의 이슈로 Node.js 관련 업무가 증가하면서, 스프링 부트 관련 코드들에 자연스레 관심이 생겼다. 

마지막으로 Java 코드를 짜본지 얼마의 시간이 흘렀는지 기억도 나질 않는다. 'ㅅ');

 

최근에 짬이 날 때마다 '스프링부트 핵심 가이드' 라는 도서로 조금씩 API 개발 및 개념 공부를 진행하고 있는데, 항상 개발이란게 그렇지만 몰랐던 개념이나 익숙하지 않던 뭔가를 알아가는 재미가 쏠쏠하다. 이후, 요 도서로 추가적인 무언가를 얻을 수 있으려니 하는 기대로 이 도서를 집어들었다.

 

1, 2 챕터는 스프링 부트에 대한 간략한 정보들, 빌드 도구 (메이븐, 그레이들), 개발 언어(자바, 코틀린)에 대한 매우 간단한 소개 정도이고...

 

REST API 개발 이슈/코드들은 3, 4 챕터부터 다루기 시작한다. 이 도서에서는 내게는 생소한 H2 DB와 연동하고 있는데, DB 특성을 모르더라도 기본 예제 진행에는 별다른 이슈가 없었다.

 

5 챕터에서 스프링 부트에 내장된 설정 기능, 자동 설정 리포트, Actuator를 사용하여 애플리케이션 환경 설정을 하는지 다루고 있는데, 스프링 부트 초보자 입장에서 이 부분이 좋았다. 'ㅅ')!

 

문제는 6 챕터부터는 초보자 입장에서 이해하기 어려운 용어들이 휙휙 나오고 빠르게 진행되는데, 내 입장에서는 이 부분이 좀 아쉬웠다. 등장하는 개념들이 적지 않은데, 이미 스프링 부트에 대한 어느 정도의 이해가 있지 않고서는 따라가기 어려울 것이라 느껴졌다.

 

이후는 스프링 MVC와 웹플럭스, 테스트 등을 다루고 있는데,

내 입장에서는 좀 더 다른 도서로 스터디 후에 돌아보면 좋을 것 같은 생각이 드는 책이었다. 'ㅅ')a 흠...

 

.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

스프링 부트에 대해 학습하고자 할 때, 필요한 것은 이론이나 개념을 설명하는 것뿐만 아니라 실제 상황에서 어떻게 활용할 수 있는지 알려주는 안내서이다. 스프링 데이터, 스프링 시큐리티, 스프링 웹플럭스와 같은 스프링의 핵심 모듈에 대해 실용적으로 알려준다. 스프링 부트의 철학과 간단한 코드로 어플리케이션을 개발하는 방법을 보여준다. 각 장은 이론적인 부분을 최소화하고, 실제 코드 작성을 통해 학습자가 직접 경험할 수 있도록 설계되어 있어, 개념을 빠르게 이해하는데 도움이 된다.

단순히 ‘어떻게’ 하는지를 가르쳐주는 것이 아니라 ‘왜’ 그렇게 해야 하는지에 대한 이해를 할 수 있도록 돕는 책으로, 확장 가능한 애플리케이션을 구축하는 방법을 소개하는 부분은 실제 세계의 문제를 해결하는 데 필요한 실용적인 지침을 제공하면서도, 스프링 부트가 지향하는 ‘관심사의 분리’와 ‘자동 구성’ 같은 원칙을 잘 따르고 있음을 느낄 수 있었다.

챕터 1 스프링 부트

  • 스프링 부트의 핵심을 담당하는 기본 사항에 대한 깊이 있는 이해를 구축할 수 있도록 도와준다. 챕터별로 진행하면서 도구의 선택, REST API의 구성, 데이터베이스 연동 방법 등 기초적인 내용부터 다양한 고급 기술까지 체계적으로 다룬다.

챕터 3 첫 번째 REST API

  • REST API의 중요성을 설명하면서, 실제로 API를 구축하는 과정을 상세하게 설명한다.

챕터 6 데이터 파고들기

  • 실제 데이터 작업을 위한 다양한 전략을 선보이면서, 이론적인 부분만이 아닌 실제 애플리케이션에서의 데이터 관리를 위한 구체적인 지침을 제공한다.
  • 엔티티 정의: 이 섹션에서는 스프링에서 엔티티를 어떻게 정의하는지, 엔티티와 테이블 간의 매핑, 관계 매핑 등의 내용을 다룬다.
  • 템플릿 지원: 스프링은 JDBC, Redis, MongoDB 등과 같은 데이터 액세스 기술에 대한 템플릿을 제공하여, 데이터 액세스 계층을 쉽게 구현할 수 있도록 지원하고 이러한 템플릿의 사용 방법에 대해 설명한다.
  • 저장소 지원: 스프링 데이터 저장소 지원은 데이터 액세스를 단순화하며, CrudRepository나 JpaRepository와 같은 저장소 인터페이스로 공통 CRUD 연산을 쉽게 수행할 수 있도록 한다.
  • @Before:
    • 이 부분은 스프링 테스트에서 사용되는 어노테이션으로, 테스트 메서드를 실행하기 전에 수행해야 할 작업을 정의할 때 사용된다.
    • 데이터 액세스 로직을 테스트할 때 필요한 설정을 초기화하는 데 사용될 수 있다.
  • 레디스로 템플릿 기반 서비스 생성하기:
    • 레디스를 사용하여 템플릿 기반의 서비스를 어떻게 생성하는지에 대한 예제와 함께 상세한 방법을 제공한다.
  • 템플릿에서 repository로 변환하기:
    • 기존에 템플릿을 사용하던 코드를 스프링 데이터 저장소를 사용하는 코드로 리팩터링하는 방법을 소개한다.
  • JPA로 repository 기반 서비스 만들기:
    • JPA(Java Persistence API)를 사용하여 데이터를 영속화하는 방법과 이를 위한 repository 기반 서비스의 생성 방법을 다룬다.
  • NoSQL 도큐먼트 데이터베이스를 사용해 repository 기반 서비스 만들기:
    • NoSQL 도큐먼트 데이터베이스를 사용하여, 스프링 데이터와 함께 repository 기반 서비스를 어떻게 만드는지 설명한다.
  • NoSQL 그래프 데이터베이스를 사용해 repository 기반 서비스 만들기:
    • 이 부분은 NoSQL 그래프 데이터베이스를 사용하여 데이터를 처리하고 repository 기반 서비스를 구현하는 방법에 대해 다룬다.

챕터 8 프로젝트 리액터와 스프링 웹플럭스를 사용한 리액티브 프로그래밍과 12 리액티브로 더 깊이 들어가기

  • 리액티브 시스템의 기본 원리부터 시작하여, 프로젝트 리액터와 스프링 웹플럭스를 통한 리액티브 프로그래밍의 실제 적용 사례에 대해 상세히 설명한다.
  • 리액티브 프로그래밍: 리액티브 프로그래밍의 기본 개념과 그것이 왜 중요한지, 그리고 리액티브 시스템을 구축할 때 고려해야 할 설계 원칙에 대해 설명한다.
  • 프로젝트 리액터:
    • 프로젝트 리액터는 리액티브 프로그래밍을 위한 스프링의 라이브러리로, 개발자가 비동기 및 논블로킹 애플리케이션을 쉽게 만들 수 있도록 도와주며 라이브러리의 핵심 개념과 사용 방법을 다룬다.
  • 톰캣 vs. 네티: 이 섹션에서는 서블릿 컨테이너인 톰캣과 비동기 네트워크 애플리케이션 프레임워크인 네티 사이의 차이점을 비교 분석한다.
  • 리액티브 데이터 액세스: 여기에서는 데이터베이스와의 비동기 통신을 가능하게 하는 리액티브 데이터 액세스의 개념과 구현 방법에 대해 설명한다.
  • 리액티브 Thymeleaf:
    • Thymeleaf는 서버 측 Java 템플릿 엔진이다.
    • 리액티브 프로그래밍 모델에 Thymeleaf를 어떻게 통합하는지를 설명한다.
  • 완전한 리액티브 프로세스 간 통신을 위한 RSocket:
    • RSocket은 리액티브 애플리케이션에서 사용되는 네트워크 프로토콜로, 양방향 스트리밍 데이터 전송을 지원한다. RSocket을 사용한 리액티브 시스템의 구현 방법을 다룬다.

챕터 10 애플리케이션 보안

  • 안전성과 보안에 대한 내용도 눈여겨볼 만한데, 챕터 10에서는 스프링 시큐리티를 활용한 인증 및 인가 메커니즘 구현에 대한 실용적인 접근을 소개한다.
  • 인증과 인가의 개념, 스프링 시큐리티의 활용, 그리고 보다 복잡한 보안 프로토콜의 구현에 대해 설명한다.
  • 인증 및 인가 부여:
    • 보안의 두 가지 핵심 요소인 ‘인증(authentication)’과 ‘인가(authorization)’의 개념을 소개한다.
    • 인증은 사용자가 자신이 주장하는 사람임을 증명하는 과정이며,
    • 인가는 인증된 사용자가 애플리케이션의 특정 자원이나 경로에 접근할 수 있는 권한을 가지고 있는지 결정하는 과정이다.
  • 스프링 시큐리티 살펴보기:
    • 스프링 시큐리티는 인증과 인가를 비롯한 여러 보안 기능을 제공하는 강력한 프레임워크입니다.
    • 스프링 시큐리티의 주요 구성 요소, 핵심 기능, 그리고 이를 활용하는 방법에 대해 세부적으로 설명한다.
  • 스프링 시큐리티로 폼 기반 인증 및 인가 구현:
    • 표준 폼 기반의 인증 방식을 구현하는 방법을 다룬다. 사용자의 자격 증명을 확인한 후 적절한 인가 처리를 수행하는 전체 과정이 담겨 있다.
    • 로그인 폼의 제출, 자격 증명의 검증, 그리고 세션 생성과 관리를 포함한다.
  • 인증 및 인가를 위한 OIDC와 OAuth2 구현:
    • OIDC(OpenID Connect)와 OAuth2를 사용한 보안 프로토콜 구현에 초점을 맞춘다.
    • OAuth2는 외부 서비스 제공자를 통한 인증을 처리하는 데 사용되며, OIDC는 OAuth2 기반의 인증 프로토콜로서, 클라이언트가 사용자의 ID 토큰을 받을 수 있게 해준다.
    • 여기에서는 이러한 프로토콜을 사용하여 애플리케이션에 더 강력한 보안 계층을 추가하는 방법을 상세히 설명한다.

챕터 11 애플리케이션 배포

  • 애플리케이션의 배포와 관련된 실제 조언을 챕터 11에서 제공하며, 실제 작업 환경에서의 스프링 부트 애플리케이션 구축에 필요한 노하우를 알려준다.
  • 실행 가능한 JAR(Java Archive):
    • 전통적인 Java 애플리케이션과 달리, 스프링 부트는 내장된 서버를 포함한 모든 종속성을 하나의 JAR 파일에 패키징하며 복잡한 배포 프로세스 없이도 독립적으로 실행 가능한 애플리케이션을 만들 수 있도록 한다.
  • JAR 확장:
    • JAR 파일에 추가적인 기능을 제공하거나, 애플리케이션을 더욱 유연하게 구성할 수 있도록 한다.
  • 컨테이너에 스프링 부트 애플리케이션 배포하기:
    • 컨테이너는 애플리케이션을 포함하고 실행하는 표준화된 유닛으로, 환경에 구애받지 않고 일관된 방식으로 애플리케이션을 실행할 수 있게 해준다.
    • 이미지 생성 및 컨테이너화된 환경에서의 애플리케이션 관리 방법을 설명한다.

이 리뷰는 한빛미디어의 나는 리뷰어다 이벤트를 통해 책을 제공받아 작성했습니다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

요즘 서평책을 선택 할 때 사내 스터디에 도움이 될 만한 책 위주로 골라 보고 있다.

최근 스프링으로 이런저런 작은 프로젝트도 하고 해서 스프링 책이 서평 목록에 있으면 했었는데

딱 좋은 책이 있길래 냉큼 신청을...

 

책을 펼쳐 처음부터 보는데 베타리더 리뷰에 반가운 이름이 똭! (형이 왜 거기서...ㄷㄷㄷㄷㄷㄷ)

 

책은 챕터1에서 스프링 핵심 기능 세가지를 소개 하는 것으로 시작하여 

도구 선택, REST API, 데이터베이스등의 가장 기본적인 내용으로 이어 진다.

이후에는 에플리케이션 설정과 검사, 데이터 파고들기(DB심화?), MVC, 리액티브 프로그래밍 이란 내용들을 다루고 있다.

챕터 9 이후 후반부로 넘어 가면 애플리케이션 테스트, 보안, 배포등 프로젝트 막바지에 다루는 내용들을 다루며

마지막 챕터에서는 리액티브 관련한 내용을 좀 더 심도 있게 다루고 있다.

 

위에 열거한 챕터 제목들만 보면 다루는 내용들이 여느 책들과 크게 다르지 않아 보인다.

하지만 개인적인 생각으로 이 책이 다른 책들과 다른점이라면 중요한 포인트를 잘 짚어서 이해하기 쉽게 알려 준다는 것이다.

특히 설명이 장황하지 않고 간결하며 쉽게 이해 할 수 있도록 하고 있어 더 좋은것 같다.

 

그런 특징은 챕터1에서 부터 잘 드러난다. 챕터1은 단 여섯 페이지 이다.

그 안에 "의존성 관리", "배포 간소화", "자동설정" 이라는 세가지 키워드로 스프링의 핵심 기능을 소개 한다.

스프링을 사용할 때는 별 생각 없었는데(그냥 개발 하기 바빳나...) 이렇게 정리된걸 보니 설명을 참 잘하고 있다고 느꼈다.

 

또 다른 차이점이라면 가려운 곳을 잘 긁어 준다고 해야 할까?

스프링을 시작 하면서 몇 가지 고민거리중 가장 대표적인것이 메이븐이냐? 그레들이냐? 중 선택 하는 문제 일 것이다.

결국은 개발자의 취향대로 하겠지만 책은 메이븐과 그레들 각각에 대해 설명하고 각각의 차이와 장단점을 비교 하면서

어떤 경우에 어느 툴을 선택하면 좋을지를 잘 안내해 주고 있다.

마찬가지로 자바와 코틀린중 어떤 언어를 선택하면 좋을지 설명하는것 같지만 언어는 그냥 개발자가 원하는거 선택 하는걸로....

 

이후 내용은 앞에서 전체 내용 다룰때 얘기한 것 처럼 REST API나 데이터베이스 등 일반적인 내용으로 이어진다.

역시 REST에 대한 설명등을 간략 하지만 이해하기 쉽게(나한텐 약간 아닌듯 하기도...) 설명 하고 있다.

간결하지만 충분한 설명과 복잡하진 않지만 부족하지도 않는 내용의 코드로 쉽게 따라하며 이해 할 수 있도록 되어있어 좋은것 같다.

 

그리고 그 뒤로 이어지는 내용중엔 리액티브 프로그래밍 관련한 내용이 나온다.

이건...나도 안해본거라...공부해야 할...

그 뒤에 보안관련 내용도 뭔가 새로워진 것 같아 공부해야 할...

배포도...예전엔 그냥 톰켓이었는데...뭔가 새로운것이...

 

마무리 해 보자면, 책은 스프링을 사용하는데 있어 초/중급 개발자를 대상으로 매우 좋은 책인 것 같다.

그리고 나처럼 예전에 스프링을 조금 사용해봤던 개발자에게도 좋은 책인 것 같다.

 

조만간 스프링 프로젝트를 시작 하게 된다면 이 책을 다시 신나게 펴 보고 있게 될 듯 하다.

해당 도서는 초보자도 접할 수 있을 만큼 쉽고 간결한 내용으로 구성되어 있습니다. 스프링 부트로 간단한 API 서버를 만드는 방법부터, 데이터베이스를 연결해 데이터 처리하는 방법, 애플리케이션 보안 및 테스트, 등 다양한 내용에 대해 다룹니다. ​ 첫 번째 챕터에서는 이 책의 핵심인 스프링 부트에 대해 전반적인 소개를 합니다. ​ 두 번째 챕터에서는 메이븐 vs. 그레이들, 자바 vs. 코틀린 도구들을 비교합니다.​ 그러면서 널리 사용되고 스프링 프레임워크의 공식 언어이기도 한 자바의 장점과, 간결하고 안전한 코드를 작성할 수 있는 코틀린 언어의 장점을 한눈에 볼 수 있게 구성하고 있습니다. 그뿐 아니라 메이븐과 그레이들 중에 어느 빌드 도구를 선택할지에 대한 인사이트를 제공합니다. ​이 외에도 데이터베이스에 대한 내용이 나오고, NoSQL에 대한 부분도 있습니다. - 네이티브 애플리케이션 개발 및 배포를 간소화하는 방법 - 반응형 애플리케이션을 분산 시스템으로 만드는 방법 - 개발자의 생산성과 애플리케이션의 이식성을 향상하는 아키텍처와 접근 방식 - 애플리케이션을 빠르고 안정적으로 배포하는 방법 - 애플리케이션과 시스템의 상태를 모니터링하는 방법 - 클라우드 기반 애플리케이션의 디버깅, 테스트, 보안 유지 ​ 전반적으로 위에 대한 내용을 다루며, 스프링 이니셜라이저에서 애플리케이션을 생성하는 순간부터 디버깅, 배포, 모니터링에 이르기까지 폭넓고 다양하게 스프링 부트에 대해 학습할 수 있는 도서입니다. 평소 스프링 부트에 관심이 있으셨거나, 찍먹해보고 싶은 분들에게 해당 도서 추천합니다 ! 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

스프링, 스프링 부트로 프로젝트를 주로 수행하는데 이번에 신기술 내용 확인 및 복습을 위해 "처음부터 제대로 배우는 스프링 부트" 책을 선택하여 읽어 보게 되었습니다. 

 

먼저 스프링 부트로 프로젝트를 수행하는 입장에서 "처음부터 제대로 배우는 스프링 부트" 책은스프링 부트의 기본 기술 및 요점을 정확히 설명하고 있었습니다. 

"처음부터 제대로 배우는 스프링 부트" 책은 총 12장으로 구성되어 있고 

Chapter 1. 스프링 부트 

Chapter 2. 도구 선택 및 시작 

에서는 스프링 부트 핵심 기능과 설정관련 메이븐, 그레이들에 대해 설명하고 있습니다. 스프링 부트의 가장 기본적인 부분과 환경설정을 설명하고 있습니다. 

 

​Chapter 3. 첫번째 REST API

Chapter 4. 데이터베이스 엑세스

Chapter 5. 애플리케이션 설정과 검사

Chapter 6. 데이터 파고들기

에서는 데이터 베이스 연결 중심으로 JPA 기반, MySQL, NoSQL의 접속 repository 기반의 변경사항 및 연결 부분을 설명하고 관련 기술을 확인할 수 있습니다. 

 

​Chapter 7. 스프링 MVC로 만드는 애플리케이션

Chapter 8. 프로젝트 리액터와 스프링 웹플럭스를 사용한 리액티브 프로그래밍 

에서는 MVC를 활용한 메시지, 웹 소켓기능을 확인할 수 있고 Thymeleaf 의 기능들을 확인할 수 있습니다. 그리고 DB연결을 실무에서도 사용하는 H2 기술 등을 확인할 수 있었습니다. 

 

​Chapter 9. 프로덕션을 위한 애플리케이션 테스트

Chapter 10. 애플리케이션 보안

Chapter 11. 애플리케이션 배포

Chapter 12. 리액티브로 더 깊이 들어가기

에서는 인증, 인가, 스프링 시큐리티 기능을 확인할 수 있었고 JAR 배포, 컨테이너에 스프링 부트를 배포하는 방법을 확인할 수 있었습니다. 특히 애플리케이션 보안은 중요하고 스프링 부트에서는 꼭 익혀야 하는 필수 기술을 확인할 수 있었습니다.  

 

총 12장에 거쳐서 스프링 부트에서 중요한 환경설정, 데이터베이스 연결, 배포, 시큐리티, REST API, 스프링 MVC 등을 확인하고 활용할 수 있었습니다.  해당 기술만 안다면 실무 프로젝트에서도 필요에 따라 해당 기술을 활용할 수 있다고 생각합니다.

 

제가 수행하는 프로젝트에서 사용하는것과 몇몇개는 일치하지 않았지만 전체적인 내용 및 기초 및 개념들은 정확했으며 놓치고 있던 핵심을 확실히 알 수 있었습니다. 

또한  "처음부터 제대로 배우는 스프링 부트" 책을 보면서 "배워서 바로 쓰는 스프링 부트2" 와 비교하면서 스프링 부트를 이해하고 각 기능중 활용성이 높은것을 판단하여 프로젝트에 적용할 수 있을것 같았습니다. 

 

"처음부터 제대로 배우는 스프링 부트" 책을 통해 전반적인 스프링 부트의 기술 및 환경을 알 수 있다고 생각합니다.  기본적인 자바 및 웹에 대한 기본기를 익힌후에 해당 책을 읽어보고 소스를 그대로 수행하면 스프링 부트를 익힐 수 있다고 생각합니다.

조금은 어렵지만 하나씩 따라하면 쉽게 개념을 잡을 수 있습니다.   

그리고 "배워서 바로 쓰는 스프링 부트2" 도 추천합니다. 각각의 빠진부분과 기본 기술을 확실히 익힐수 있습니다. 학습효과를 높이기 위해 두권의 책 모두 다 추천합니다. 

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.​

 

스프링 부트는 스프링 프레임워크를 기반으로 하면서도 간편한 설정과 개발환경을 제공하여 개발자들이 빠르게 웹 애플리케이션을 구축할 수 있도록 도와주는 플랫폼입니다. 또한 스프링 생태계의 다양한 라이브러리와 호환되며, 자체적으로도 다양한 기능을 제공하여 개발자들의 사랑을 받고 있습니다.

 

한빛미디어에서 출간한 "처음부터 제대로 배우는 스프링 부트"는 자바를 어느 정도 알고있는 개발자가 스프링 부트에 입문할때 참고할 수있는 도서 입니다. 목차부터 꼭 필요한 내용을 다룬것을 알수있으며 제가 의미있게 읽었던 목차들의 대략 내용은 다음과 같습니다.

 

CHAPTER 1 스프링 부트 소개

핵심 기능을 다룹니다. 여기에선 3가지 특징을 나열했구요.

의존성 관리 최소화, 배포 간소화, 자동 설정이 그 골자입니다.

 

CHAPTER 2 도구 선택 및 시작

메이븐과 그레이들, 자바와 코틀린을 비교해줍니다. CLI와 IDE를 적절히 혼용하여 사용하는 방법도 포함됩니다.

 

CHAPTER 3 첫 번째 REST API

개발자라면 누구나 다 아는 REST API를 스프링부터로 개발할때의 내용입니다.

초보자가 편한 주제로 언어를 실습하기 좋은 토픽인것 같습니다.

 

CHAPTER 4 데이터베이스 액세스

DB 접근을 위한 설정과 CRUD 작업 컨트롤러를 소개합니다.

스프링 부트는 개발자가 데이터베이스 액세스를 위해 설정을 별도로 작성하지 않아도 되도록 자동 설정을 지원합니다. 이를 "자동 설정 프라이밍"이라고 합니다. 이 부분에 대해 다루었습니다.

 

CHAPTER 6 데이터 파고들기

JPA를 다룬 챕터입니다. JPA(Java Persistence API)는 Java에서 관계형 데이터베이스와 객체 지향 프로그래밍 간의 데이터를 영속적으로 저장하고 조회하기 위한 API(인터페이스)입니다. JPA는 Java에서 ORM(Object-Relational Mapping) 기술을 표준화한 것으로, 데이터베이스 테이블과 자바 객체 간의 매핑을 쉽게 처리할 수 있도록 도와줍니다.

 

CHAPTER 7 스프링 MVC로 만드는 애플리케이션

스프링 MVC는 스프링 프레임워크의 웹 애플리케이션 개발을 위한 모듈 중 하나로, Model-View-Controller(MVC) 아키텍처를 기반으로 합니다. MVC는 웹 애플리케이션의 구조를 세 가지 역할로 분리하여 개발하는 디자인 패턴으로서, 각 역할은 서로 독립적으로 작동하며 유지보수와 확장성을 향상시키는데 도움을 줍니다.

 

CHAPTER 9 프로덕션을 위한 애플리케이션 테스트

스프링 부트에서 JUnit은 테스트 코드를 작성하고 실행하는 데에 매우 유용한 테스팅 프레임워크입니다. JUnit은 Java 언어로 작성된 코드의 단위 테스트를 쉽게 작성하고 실행할 수 있도록 도와줍니다. 

 

CHAPTER 10 애플리케이션 보안

인증과 인가의 차이 설명과 구현 방법에 대해 잘 나열하였습니다.

 

CHAPTER 11 애플리케이션 배포

WAR, JAR의 비교 및 실행 가능한 JAR 생성 방법과 확장 방법을 다룹니다.

컨테이너에 스프링 부트 기반 애플리케이션을 배포하는 방법은 현업에서도 유용하겠다란 생각이 들었습니다.

 

이 책은 스프링을 해본 개발자라면 더욱 쉽게 읽을 수 있는 도서입니다.

책에서는 스프링 부트에서 시작하여 세세한 사용 방법과 도구, 프로세스에 대해 매끄럽게 번역되었습니다.

스프링 부트 입문자 혹은 지식을 견고히 하려는 개발자에게 일독을 권합니다.

 

이 책에서는 자바를 사용해 스프링 부트를 처음 접하는 개발자들을 대상으로, 스프링 부트의 기본 개념과 사용법을 설명하고 실전 예제를 통해 응용하는 방법을 알아갈 수 있습니다.

 

 

이 책이 좋았던 점은 단순한 코드 실행에서만 그치지 않고, 동작과정을 자세히 설명해준다는 점입니다. 그리고 앞에서 설명한 책 내용처럼, 초반에는 빌드도구에 대한 설명, 자바와 코틀린 비교, API의 사용 이유 등 백엔드를 처음 접하는 사람이 읽어도 무리가 없는 내용으로 시작해서 후반에는 실질적인 개발과 테스팅, 배포 과정을 설명해주는 체계적인 책이라고 생각합니다.

처음부터 제대로 배우는 스프링 부트

 

백엔드 개발자는 자바로 개발하면 스프링, 파이썬으로 개발할 경우에는 장고나 fastApi를 사용하는 경우가 많습니다. 

 

시스템 규모가 크면 대부분 JVM 계열인 스프링으로 정착합니다.

 

스프링 부트를 처음 접하는 분들을 위한 책이 나왔습니다. 

 

바로 '처음부터 제대로 배우는 스프링 부트' 입니다.

 

가상머신을 주로 개발하는 VMware의 개발자가 쓴 책인데요.

스프링 부트로 리액티브 프로그래밍, Rest Api, DB연동, 테스트, 보안, 배포 등의 개념을 잘 정리한 책입니다. 

 

크게 2가지로 정리해 보도록 하겠습니다.

 

 

2.jpg

 

 

1) 자바 비중이 80% 이상

이 책의 대부분에 소스 코드는 자바로 이루어져 있습니다.

 

표지를 보면 '자바와 코틀린을 만나는...' 이라고 적혀져 있어 비중이 많을 것이라고 예상한 분들이 있을 텐데요.

몽고DB 부분 알려주는 부분에서 코틀린과 자바의 차이점 조금 알려주고 크게 다루지는 않습니다.

 

그만큼 자바를 이해하면 코틀린은 쉽게 이해할 수 있다는 점이죠.

 

현업에서 코틀린으로 개발할 때 코루틴 때문에 무조건 옮겨야겠다는 생각이 만들었습니다.

 

 

12.jpg

 

 

2) 깊이보다는 개념 정리로 위안으로 삼자.

이 책은 기존의 기술 서적들에 비해서 얇습니다. 

 

370페이지이기 때문에 각 챕터 내용을 개념 정리와 최소하게 알아야 할 내용들이 정리돼 있는데요.

 

그 이유는 장마다 책들을 만들어도 대부분 500페이지가 넘게도 되어져 있습니다.

 

대표적으로 JPA를 제대로 공부하려면 우아한 형제의 김영한 님의 책인 '자바 ORM 표준 JPA 프로그래밍'의 총 페이지는 7백 페이지가 됩니다. 

 

시큐리티 등도 각각 따로 책을 찾아서 보면 페이지가 상당히 많다고 느껴질 것  입니다. 

 

고로 이 책은 각 챕터 마다 핵심들이 정리가 잘되어져 있어서 크게 부담 없이 읽을 수 있습니다.

 

 

thom.jpg

 

 

PS

타깃 독자는 처음 백엔드를 스프링으로 하는 사람들에게 도움이 되는 책입니다.

 

유사한 책은 보안, 테스트, 리액티브 등이 없는 경우가 많은데요.

대부분 서비스 관점으로 다루지만, 이 책은 개념 정리 위주로 다루어서 내용이 알찹니다.

 

또한 면접을 준비할 때 버전별 이슈 등도 상세히 적혀져 있어서 취업을 준비하는 분들에게 추천해 드립니다.

 

최근 개발자 채용 시작이 닫히고 암흑기에 다가가고 있습니다.

하반기나 내년쯤에는 투자시장이 활성화되기를 기원합니다.

 

 

안녕하세요 브레드입니다 : ) 최근 개발 연수를 준비하며 자바 관련 공부를 시작했는데요, 시중에 스프링 부트 관련 서적은 많지만 좋은 교재를 찾는 것이 쉽지 않았습니다. 그러다 한빛미디어에서 얼마 전 "처음부터 제대로 배우는 스프링 부트" 라는 책을 발간했다는 소식을 듣고 직접 책을 읽은 소감을 리뷰를 해보고자 글을 쓰게 되었습니다.

책 소개

KakaoTalk_20230723_224033213.jpg

 

 

글쓴이 : 마크 헤클러 지음 / 오시영, 서정대 옮김

출판사 : 한빛미디어

스프링 부트는 자바와 코틀린 언어 모두 사용할 수 있는데요, 이 책에서는 스프링 프레임워크의 공식 언어인 자바와 간결하고 안전한 코드를 작성하 수 있는 코틀린의 장점을 한 눈에 볼 수 있게 구성이 되어있습니다. 또한 메이븐, 그레이들과 같은 다양한 빌드 도구 중 어떤 구성을 선택해야 할지에 대한 인사이트까지 제공하고 있습니다.

이 책에서 주요하게 다루고 있는 부분은 다음과 같습니다.

    • 네이티브 애플리케이션 개발 및 배포 간소화

    • 반응형 어플리케이션을 분산 시스템으로 만드는 방법

    • 개발자의 생산성과 어플리케이션의 이식성을 향상하는 아키텍쳐와 접근 방식

    • 클라우드 기반 어플리케이션의 디버깅, 테스트, 보안 유지

    • 어플리케이션을 빠르고 안정적으로 배포하는 방법

책 목차

  • CHAPTER 1 스프링 부트

  • CHAPTER 2 도구 선택 및 시작

  • CHAPTER 3 첫 번째 REST API

  • CHAPTER 4 데이터베이스 액세스

  • CHAPTER 5 애플리케이션 설정과 검사

  • CHAPTER 6 데이터 파고들기

  • CHAPTER 7 스프링 MVC로 만드는 애플리케이션

  • CHAPTER 8 프로젝트 리액터와 스프링 웹플럭스를 사용한 리액티브 프로그래밍

  • CHAPTER 9 프로덕션을 위한 애플리케이션 테스트

  • CHAPTER 11 애플리케이션 배포

  • CHAPTER 12 리액티브로 더 깊이 들어가기

책 특징

스프링 부트의 세 가지 핵심 기능은 1. 의존성 관리 간소화, 2. 배포 간소화, 3. 자동 설정입니다. 스프링 부트의 모든 기능은 이 세 가지 핵심 측면을 기반으로 한다고 볼 수 있죠. 하지만 스프링 부트가 처음이라면 다양한 옵션들과 환경들을 설정하는 것에 어려움을 느낄 수 있는데요, 이 책의 2장에서는 빌드 도구, 개발 언어와 편집기를 선택하는 것부터 개발자들을 위한 다양한 인사이트를 제공하고 있습니다.

 

3장 부터는 스프링 부트의 기본 기능부터 어플리케이션의 개발 방법을 설명하고 시연합니다. 어플리케이션 개발의 필수적인 개념인 REST API를 다루게 됩니다. API를 왜, 어떻게 사용하는지 부터 API를 만들기 위한 스프링 부트 프로젝트를 생성하는 법을 차근차근 배울 수 있습니다.

추천하는 대상

처음부터 제대로 배우는 스프링 부트에서는 개발 '도구의 선택부터 어플리케이션의 보안과 배포까지' 스프링부트의 모든 것을 경험할 수 있는 책이라고 할 수 있습니다. 자바와 스프링부트를 처음 접하는 모든 분부터 스프링부트의 다양한 기능을 제대로 활용해보고 싶은 개발자들에게 특히 추천드리고 싶습니다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

KakaoTalk_Photo_2023-07-23-22-52-05 001.jpg

 

 

‘처음부터 제대로 배우는 스프링 부트’는 스프링 부트와 그에 관련한 개념뿐 아니라 실습을 수행하며 체화할 수 있는 스프링 부트 지침서다.

회사 스터디에 들어가면서 Java 입문을 배우고 스프링 부트를 바로 공부한 상태라 이해하는데 굉장히 힘들었다.

책의 베타리더 리뷰에 스프링 프레임워크를 처음 사용해보는 초심자와 어느 정도 다뤄본 중급 사용자가 읽으면 좋겠다며 타겟 독자에 대한 평이 갈렸다.

스프링 부트에 대한 근본부터 나와있는 것이 맞으므로 스프링 프레임워크 초심자가 읽되, 초급 개발자가 읽기엔 무리가 있을 것도 같다는 생각이 든다. (물론 난 입문..)

 

여전히 나에겐 어려운 내용이었지만 그럼에도 아무 개념도 모르고 스프링 강의를 읽었을 때보다 훨씬 더 도움이 많이 되었다.

영상 강의를 들었을 때엔 기초 개념보다는 실습을 따라하는데 급급했던 것이다.

Maven과 Gradle의 차이도 알지 못한 채 그저 하라는 대로 Gradle로 설치했다.

책을 따라 가다보면 개념과 원리를 이해하는데 훨씬 도움이 되는 것 같다.

 

스프링 자체도 어려운데 Eclipse를 활용한 강의를 봐서 더 어렵게 느껴졌다.

다행히 이 책에서는 IntelliJ를 사용하니 부담을 조금 내려놓을 수 있었다.

 



 

 

스프링 부트의 세 가지 핵심 기능은 의존성 관리(dependency management) 간소화, 배포(deployment) 간소화, 자동 설정(auto configuration)입니다. 스프링 부트의 모든 기능은 이 세 가지 핵심 측면을 기반으로 합니다.

19쪽, 처음부터 제대로 배우는 스프링 부트.

 

 

Java 언어를 배우기 위해 간단한 코드(메뉴 추천, 구구단 등)만 짜보았기 때문에 스프링 부트의 이점에 대해 크게 와닿지 않았다.

미들웨어나 데이터베이스 연결 같은 일은 고려할 필요도 없었기 때문이다.

스프링 부트에 내장되어 있는 jar 파일 덕분에 자동 설정이 가능하단 것을 깨닫고 그 편의성에 대해 절감할 수 있었다. 이는 배포 간소화에 해당된다.

 

 

 

 

‘스프링 부트 스타터’는 거의 매번 동일한 방식으로 특정 기능을 제공한다는 입증된 전제를 바탕으로 제작된 BOM(Bills of Materials)입니다. BOM은 프로젝트 아티팩트 (라이브러리 등의 구성 요소)의 정보, 버전과 의존성 관리를 포함한 특수한 POM입니다. 여기서 POM은 빌드 도구에서의 의존성을 가져오고 프로젝트 빌드에 사용하는 정보와 프로젝트 구성이 담긴 파일입니다.

20쪽, 처음부터 제대로 배우는 스프링 부트.

 

 

기존에는 API를 만들 때마다 엔드포인트를 설계하고, 요청 수신 및 처리, 객체 간 변환, 하나 이상의 표준 형식으로 정보 교환, 특정 프로토콜로 데이터를 주고받는 일련의 과정을 수행해야 했다. 하지만 이 패턴이 ‘스프링 부트 스타터’에 반영 되어 아주 편리하게 사용할 수 있는 것이다.

 

‘설정보다 관습(convention over configuration)’은 자동 설정에 속하는 개념이다. 

데이터베이스를 자동으로 연결하고, 애플리케이션 종료에 따라 연결 또한 자동으로 종료할 수 있다. 

개발자가 최소한의 노력으로 쿼리를 자동으로 만드는 것이 큰 이점이라고 한다. 

간단한 컨벤션으로 코드를 쉽게 커스터마이제이션하여 복잡한 맞춤형 쿼리를 효율적이고 일관되게 생성할 수 있다.

 

앞서 언급한 것과 같이 스프링 부트의 개념은 의존성을 간소화하는 것은 물론 애플리케이션 기능 전체를 추가하는 데 필요한 작업을 크게 감축한다. 테스트, 유지보수, 업그레이드에 드는 오버헤드 또한 줄일 수 있다.

 

 



  • Maven: 메이븐의 엄격하고 때로는 독단적이기까지 한 선언적 접근법은 프로젝트와 개발 환경을 대단히 일관되게 만듭니다. 메이븐 방식을 따르면 일반적으로 문제가 거의 발생하지 않으므로, 빌드에 신경 쓰지 않고 코드에만 집중하게 됩니다.
  • Gradle: 그레이들은 프로그래밍/스크립팅 중심입니다. 따라서 그레이들로 빌드한 프로젝트에서 새로 출시된 버전의 프로그래밍 언어를 사용하면 종종 문제가 생깁니다. 그레이들 개발팀이 신속하게 대응하겠지만, 프로그래밍 언어의 최신 버전을 선호하거나 반드시 사용해야 한다면 빌드 문제가 발생할 여지가 있음을 염두에 두어야 합니다.

 

그레이들은 빌드 속도가 빠른데, 특히 대규모 프로젝트에서는 메이븐보다 훨씬 더 빠릅니다. 일반적인 마이크로서비스 프로젝트에서는 메이븐과 그레이들의 빌드 속도가 비슷합니다.

(중략)

JVM에서 사용 가능한 언어가 많지만, 그중 널리 사용하는 언어는 자바와 코틀린입니다. 자바는 JVM의 원래 언어이며, 코틀린은 JVM을 사용하는 비교적 새로운 언어입니다. 스프링 부트는 자바와 코틀린을 모두 완벽하게 지원합니다.

31쪽, 처음부터 제대로 배우는 스프링 부트.

 

 

예전에 스프링 강의를 보았을 때에는 무조건 진행자를 따라 Gradle을 설치하였다. 이 책에서는 개념을 요목조목 설명하고, 그 차이와 실 적용시의 장단점을 설명하여 이해가 쉬웠다.

 





SE-0c148f1c-2a48-468a-868a-3f434f795966.png

 

SE-b6cb6f2c-3806-4b08-bf91-bbb17f3930c0.png

 

입문자를 위해 코드 한줄 한줄 설명을 덧붙인다.

 

현재까지 개념에 대해 기초를 다질 수 있었으며, 환경을 설치할 수 있었다.

추후 실습을 통한 후기를 다시 가져오겠다.

 



 

KakaoTalk_Photo_2023-07-23-22-52-06 002.jpg

 

초급 개발자가 아닌 초급 스프링 부트 사용자에게 추천하는 입문서.

 

 

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

photo_2023-07-23_22-11-08.jpg

 

photo_2023-07-23_22-11-01.jpg

 

이 책은 자바를 초보 단계를 넘어선 분 대상으로 스프링 부트를 처음부터 제대로 배울 수 있도록 구성되어 있는 입문서이다. 스프링 부트를 처음 접하는 독자들을 고려하여 기본적인 개념부터 차근차근 설명되어 있어서 처음 배우는데 도움이 될 듯 하다.

 

친절한 설명으로 자바 초보자들을 스프링 부트 개념을 쉽고 친절하게 설명하고 있다. 어려운 용어나 개념은 최대한 피하고 간단한 예제를 통해 쉽게 이해할 수 있도록 구성되어 있다.

 

이론과 기능을 설명하는것에서 그치는 것이 아니라 저자가 관심있어 하는 것을 주제로 실체 웹 애플리케이션을 개발 하는 프로젝트를 진행하면서 각 파트에서 설명하고자 하는 기능을 설명 및 구현하고 있어 쉽게 따라 가도록 안내 하고 있다.

 

스프링 부트를 이용한 데이터베이스 연동, 테스트, 인증/인가. 배포, 리액티브 프로그래밍등 스프링 부트를 활용한 소프트웨어 개발의 처음과 끝을 안내하는 내용으로 이루어져 있다.

 

최근에 nestjs로 서버 개발을 하면서 Spring 생각이 많이 났었다. 그러던 중 리뷰어 기회가 생겨서 이 책으로 Spring boot를 다시 공부해보게 됐다.

서적의 제목이 '처음부터 제대로 배우는'이라, 입문 단계의 내용일 거라 생각하고 읽었는데 예상과 전혀 다른 내용이었다. 기본적인 REST API 작성법부터, Redis를 활용한 DB 연결 활용, 스프링 시큐리티, 웹플럭스 등을 사용한 보안, 리액티브 프로그래밍 등 폭넓은 내용이 나오는데, 활용 위주의 설명으로 Spring bean이나, IoC, 어노테이션 등의 Spring 핵심 원리에 대해서는 다루지 않으며, 독자가 어느 정도 알고 있음을 전제로 쓰여있다고 느껴졌다.

그리고 예제의 코드는 람다식과 제네릭, 메서드 체이닝을 적극적으로 사용하는, 짜임새 있는 선언형 자바, 코틀린 문법으로 작성되어 있었다. '처음부터 제대로 배우는' 이라는 제목을 보고 초심자가 읽기에는 다소 높은 수준의 내용이었다고 생각한다.

다만, 짜임새 있는 코드와 보안, 테스팅까지 폭넓게 아우르고 있는 구성을 통해, 이 책을 활용한다면 프로덕션 수준의 Spring boot 서버를 만들기에는 충분한 내용이 포함되어있다고 느꼈다. Spring boot가 아닌 Spring만을 활용해서 개발을 해봤다거나, 서버 프로그래밍 경험이 있는 독자가 Spring boot를 통해 WAS를 개발하려고 할 때 읽으면 적합한 책이 아닐까 한다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

처음부터_제대로_배우는_스프링_부트.jpg

 

'무엇을 상상하든 그 이상을 보게 될 것이다'라는 표현이 잘 어울리는 책입니다.

 

스프링 부트 하면 조금은 쉽게 스프링 프레임워크에 접근할 수 있다고 알려져 있습니다.

그리고, 다양한 자료에서도 쉬운 접근에 초점을 맞추고 있습니다.

하지만, 이 책에서 스프링 부트가 가진 힘은 그 정도로 단순하지 않다고 얘기합니다.

스프링 부트가 가진 본래 모습과 가고자 하는 방향을 보여줍니다.

 

스프링 부트에 익숙해지기

스프링 부트를 처음 접한다는 가정하에 내용을 풀어나갑니다.

무언가에 익숙해지려면 자주 대하거나 겪어봐야 합니다.

다양한 주제를 위해 여러 가지 프로젝트를 만듭니다. 그때마다 프로젝트 초기화 단계를 보여주며 무엇을 해야 하는지 알려줍니다. 이러한 방식으로 스프링 부트 환경을 계속 접하게 합니다.

'초기화 단계가 있어요' 하고 알려주고 넘어가는 게 아니라, 프로젝트마다 초기화를 언급하므로 스프링 부트에서 얼마나 큰 역할을 하고 있는지 알려줍니다.

스프링 부트에 익숙해지기를 바라는 배려가 느껴집니다.

 

데이터와 함께하다

데이터를 다루지 않는 애플리케이션은 거의 없습니다. 데이터를 위해 애플리케이션이 존재한다고 해도 과언이 아닐 정도라 생각합니다.

관계형 데이터베이스 엔진은 여전히 중요하고 익숙해져야 할 대상임은 틀림없습니다. 많은 경우 관계형 데이터베이스에 집중하고 있습니다. 그러나, NoSQL 데이터베이스가 있다는 것 또한 알고 있습니다. 다만, 사용할 일이 상대적으로 적어서인지 다루는 비중이 상대적으로 낮을 뿐입니다.

 

관계형과 NoSQL 데이터베이스를 동급으로 두고, 스프링 부트에서 사용하는 간결하고 강력한 방법을 알려줍니다.

거의 비슷한 형태로 다양한 데이터베이스와 작업이 가능하다는 것을 보여줍니다.

스프링 부트가 가진 강력함을 조금이나마 느낄 수 있습니다.

 

지금이 전환할 때

동기식 처리 방식으로는 부족한 경우가 점점 많아지고 있습니다.

우리는 벌써 비동기식 처리를 지나 리액티브 시스템을 적용하는 세상과 만나고 있습니다. 겉으로 드러나는 부분이 많지 않아서인지 잘 느끼지 못할 뿐입니다.

저자도 말하지만 리액티브 프로그래밍 자체만으로도 내용이 방대합니다. 하지만, 방대하다는 이유로 외면할 순 없습니다. 중요한 개념을 이해하고 필요한 만큼 알아가며 이해도를 넓혀가자고 합니다.

스프링 부트로 만든 프로젝트를 재구성하여 리액티브 파이프라인을 구축하는 모습을 보여줍니다.

군더더기 없는 설명에 빠져들듯 따라갔습니다.

 

 

스프링 부트가 가진 편리함에 그치지 않고,

스프링 부트가 가진 강력함을 알려줍니다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

스프링으로 하나하나 해줘야 했던 것들을

혁신적으로 가볍게 만들어놓은 스프링 부트를

개념부터 코드를 따라 가볍게 배워서

스프링 부트를 부프링 부트답게 사용할 수 있도록 도와주는 책이다.

 

 

처음부터제대로배우는스프링부트.jpg

 

스프링 부트의 핵심 기능들을 간결하고 정확하게

왜 이렇게 하는지, 철학까지 이해를 시켜준다.

 

복잡한 세부 사항들도

기술적인 통찰력과 노하우로 쉽게 풀어주며

필요한 레퍼런스도 챙겨주어 더욱 쉽게 이해할 수 있다.

 

프로젝트 생성부터 설정, DB, JPA, 시큐리티, 

테스트, 배포까지 후루룩 섭렵할 수 있고

더불어 리액트까지 버무려주니 금상첨화 같다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

스프링 부트는 스프링에 익숙해지는데 필요한 러닝 커브의 x축을 매우 짧게 만들었습니다. 마법사가 만들어 주는 코드에 최근에는 챗 GPT를 이용해 개발하면 프런트엔드 HTML과 백엔드 코드를 순식간에 만들어 낼 수 있으며, 초보자들에게는 아마도 다른 어떤 웹 프레임워크보다도 챗 GPT를 활용하기에 좋은 프레임워크일 것입니다.

 

<< 러닝 커브 >>

 

img[1].png

 

 

또한 스프링 부트는 마법사가 코드를 잘 만들어 주고, 어노테이션 등으로 노출되는 메서드 등이 명확하게 표시되기 때문에 망각 커드 또한 잘 떨어지지 않습니다. 러닝 커브의 X축이 짧고 망각 커브 곡선이 떨어지지 않기 때문에, 스프링 부트는 최근 가장 널리 사용되는 웹 프레임워크로 선택받고 있습니다.

 

<< 망각 커브 >>

 

img[2].png

 

 

저자는 무려 스프링을 개발한 마크 헤클러입니다. 스프링 부트로 REST API 작성, 데이터베이스 다루기, 테스트, 보안, 배포와 같은 전반적인 개발 과정을 다루며, 이를 이용해 웹앱을 빠르고 효율적으로 개발하는 방법을 알려줍니다.

 

웹앱 개발 경험이 없는 개발자나, 스프링이나 스프링 부트가 뭔지는 알지만 본격적으로 접해보지 않은 분들에게는 웹앱의 기본적인 측면을 충분히 다루고 있으므로, 내용이나 분량 면에서 매우 적합할 것입니다.

 

다만, 책의 분량이 얇은 만큼 실무로 깊게 들어갔을 때 마주치는 많은 주제를 커버하지는 못합니다. 따라서 스프링을 이용한 실무 경험이 어느 정도 있는 개발자가 스프링 부트에 대해 알고 싶을 때, 혹은 스프링 부트를 이용해 어느 정도 크기의 프로젝트를 수행해 본 개발자들에게는 적합하지 않습니다.

 

이 책은 개발서로는 분량이 적은 편에 속하는데, 일부 설명과 예제가 필요 이상으로 장황하게 표현되어 있기도 합니다. 예를 들어 359페이지에는 getCurrentACPositions() 테스트를 실행해 의도적인 오류를 발생시킨 결과를 10페이지에 걸쳐 출력 내용이 기술되어 있는데, 아마도 대부분의 독자들은 10페이지를 그냥 넘길 것 같은 의미 없는 내용에 속한다.

 

이 책의 가장 큰 단점은, 6장부터 함께 만들어 가는 PlaneFinder 서비스를 대부분의 독자들이 아마도 쉽게 만들 수 없을 거라는 것입니다. PlaneFinder.net에 접속해 본 독자들은 같은 서비스를 만들 수 있다는 기대를 하고 있을 텐데, 데이터를 구할 수 있는 방법을 상세히 알려주지 않아 실질적으로 6장부터의 실습은 어렵습니다. 데이터가 있다는 가정을 하고 스프링 부트의 개발 방법과 노하우에 집중해서 읽을 수 있다면 문제는 아닐 수 있지만, 대부분의 개발자들은 눈보다는 손으로 읽고 습득하고 싶어 하기 때문에, 이 부분은 매우 아쉬운 부분입니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

이 책은 스프링을 해본 사람이라면 Spring Boot를 금방 읽힐 수 있는 책입니다. 책에서는 Spring Boot가 무엇인지, 왜 필요한지, 어떻게 사용할 수 있는지에 대해서 기술하고 있습니다. 특히 항목별로 설정하는 방법을 설명하는 부분이 저에겐 큰 도움이 되었습니다. 최신 전자정부 프레임워크를 사용해야 하는 경우 그 안에 Spring Boot 2가 들어있기 때문에 이 책을 참고서로 활용하기에 좋다고 생각합니다. 이 책의 번역은 매끄럽게 잘 되었고 빠르게 읽는데 불편한 부분이 없었습니다. 굉장히 완성도 있는 책이라고 생각합니다. Spring Boot에 대해서 빨리 익히고 싶은 사람에게는 이 책을 보는 것이 가장 빠른 방법일 것입니다.

 

스프링 부트를 최근에 학습하기 시작했습니다.

자연스레 스프링 부트 책에 관심이 가더라고요.

최근에 5월 8일에 출간된 Spring Boot Up & Running : 처음부터 제대로 배우는 스프링부트 책을 보게 될 기회가 생겼습니다.

목차를 보면 JPA, Template Engine, Reactive Programming, WebSocket, NoSQL, Spring Security, Redis Template 등을 배울 수 있더라고요.

애플리케이션 개발에 필요한 기술을 빠르게 습득할 수 있을 것 같아서 읽기 시작했습니다.

 

책은 전체적으로 흐름이 빠른 편이에요.

이론을 설명한 뒤 바로 예제 소스 코드로 넘어가 결과까지 확인시켜 줍니다.

각 장 별로 주제가 명확하게 나뉘어져 있습니다.

그래서 실습하고 공부하기가 편했고 어느 장에 무슨 내용이 있었는지 기어에 잘 났습니다.

다른 기술 서적에 비해 총 페이지가 380 페이지 정도로 얇은 편이라 진도 나가기에도 수월했네요. ☺️

마지막엔 클라우드 네이티브 쪽인 컨테이너로 배포하는 방법을 설명하는데요.

도커를 활용하여 컨테이너 이미지로 빌드하여 관리하는 법을 알려줍니다.

 

총평을 하자면, 스프링 부트를 입문하려는 분들께 가볍게 볼 만 한 책입니다.

책이 가볍고 다양한 주제를 얕게 알려주고 있습니다.

스프링 부트 애플리케이션 개발이 어떻게 이뤄지는지 알고 싶은 분들이나, 최신 스프링 부트 기술의 동향을 파악하려는 분들께 추천드려요.

다만, 딥한 기술을 기대하신 분들은 해당 주제만을 다루고 있는 다른 기술 서적을 추천 드리고 싶네요.

 

부제에 자바와 코틀린으로 만나는 클라우드 네이티브  애플리케이션 구축이라고 되어있는데, 개인적으로는 해당 내용이 빈약하다고 느꼈어요.

물론 코틀린 언어도 잠깐 소개하지만, 자바 언어와 같은 비중으로 코틀린 코드로 스프링 부트 애플리케이션을 다루고 있지 않아서 의아했던 부분입니다. 대부분 자바 언어로 책에 예제 코드가 이루어져 있다고 보시면 됩니다.

클라우드 네이티브도 내용이 빈약하다고 느꼈어요. 관련 내용이 도커로 이미지 빌드하는 것 밖에 없고 인프라를 활용한 클라우드 네이티브 구축 내용은 거의 없는 정도입니다. 쿠버네티스나 AWS, GCP 환경에서의 배포까지 궁금하신 분들에겐 적절치 않다고 생각되네요.

 

전체적인 책의 비중이 스프링 부트 애플리케이션에 치중이 되어 있어서, 부제와 살짝 다른 결이라 누군가에겐 당황할 수 있을 것 같아요.

개인적으로 중간에 Redis, WebSocket 으로 실습한 이후에는 리액티브에 치중된 느낌이 강했습니다.

각 장 별로 주제가 분리되어 있긴 하지만, 마지막 장에 리액티브 심화 장이 있는 걸로 봐서는 리액티브에 신경을 썼다고 느껴지더라고요! 

 

제가 생각하기에 알맞은 부제로는 '다양한 최신 기술을 쓴 스프링 부트 애플리케이션 구축' 이 적절하다고 생각합니다.

마지막으로 말하자면, 스프링 부트 애플리케이션을 빠른 시일 내에 개발하려고픈 분이나, 다양한 스프링 부트 기술을 빠르게 알고 싶은 분들께 추천드립니다. 각 장 별로 내용이 분리되어 있어 앞에서 차례대로 보지 않아도 된다는 점이 장점이었습니다.

 

긴 리뷰 글 읽어주셔서 감사합니다.

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

역시 오라일리.

개발 입문자들에게 추천하기 좋은 책이다. 다만 스프링 부트는 자바의 웹 프레임워크이기 때문에 완전 개발을 하나도 모르는 사람에게는 비추천한다. 기본적인 자바 지식이 있는 입문자들에게 추천한다.


추가적으로는 나처럼 이미 사용중이지만 기계적으로 사용하거나 알고는 있으나 개념을 다시 한번 정리하고싶은 기 개발자들에게도 추천한다. 


코드 샘플들이 많아서 글을 읽고 활용하는 법에 대해 이해하기가 쉽다.


코틀린은 사용해본 적이 없는데 이 책을 읽으면서 잠깐 맛이라도 볼 수 있어서 흥미로웠다. 이번에 배우고 다시 한번 정리한 내용들로 개인 토이 프로젝트를 구축해보고 싶다.


스프링 웹플럭스같은 부분은 잘 모르고 있었는데 추가적으로 개념, 사용에 대해 알게 되어서 좋았던 책이다.

역시 새그림 책, 벌레 그림책(다 오라일리 (O'REILLY) 도서)은 언제든지 읽어보는 것을 추천!

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

 

 백엔드의 필수적인 요소, 자바 웹 개발 프레임워크인 스프링 부트는 스프링 프레임워크를 보다 쉽게 사용할 수 있도록 만들 프레임워크입니다. 이는 스프링에서 제공하는 다양한 기능 예를 들자면 스프링 MVC, Data, JPA, Security 등 다양한 기능을 자동으로 설정하며 개발자가 별도로 설정 파일을 작성하지 않고 빠르고 간단하게 애플리케이션을 개발할 수 있습니다. 

 

이 책은 앞서 말한 스프링 부트의 자주 사용되는 핵심 요소들을 보여주기 위해 각 장마다 예제를 통해 스프링에서 체험할 수 있는 다양한 기능들의 실사용 예시를 제공하고 있습니다. 첫 장부터 Maven과 Gradle, Java와 Kotiln을 설명하며 애플리케이션 환경을 다양한 방법으로 구현할 수 있다고 설명합니다. 이후 REST API를 실습하기 위해 GET, POST를 실습하고 이러한 데이터 통신을 통해 DB를 구축하는 방법을 배웁니다. 

 

그 이외에도 NoSQL을 사용한 DB 불러오기, 갱신하기와 MVC와 웹소캣을 통한 통신 시스템이라던지, 리액티브 프로그래밍을 배우고, 애플리케이션 테스트를 위한 단위 테스트와 슬라이스 테스트, 로그인 구현 시 보안 필수 과정인 OAuth2 구현, 거기에 애플리케이션 배포까지 체험할 수 있는 예제들을 꽉꽉 눌러 담았습니다. 

 

또한 코드를 편하게 따라 치면서 실습할 수 있도록 책에 코드 내용과 해당 내용이 자세하게 설명되어 있고, 부가적인 설명들도 해당 내용이 끝나기 전 따로 요약되어 있어 주의할 점이나 예제에 대한 상황 설명이 자세하게 나타나 있어서 좋았습니다. 개인적으로는 스프링을 사용하다가 스프링 부트를 처음 접하시는 분이나, 스프링 부트를 이미 배웠지만 정확한 개념을 다시 한번 더 잡아보고 싶은 초보 개발자들에게 추천해 드리는 책입니다. 

 

<< 이 글은 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. >>

 

자바와 코틀린으로 만나는 클라우드 네이티브 애플리케이션 구축

 

마크 헤클러 지음

오시영, 서정대 옮김

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

2023년 7월

2023 나는 리뷰어다 활동의 여섯 번째 리뷰

 

뜨거운 여름을 잠시 식혀주는 빗줄기 속에 리뷰할 책은 "처음부터 제대로 배우는 스프링부트(Spring Boot Up & Running)"이다.

 

 

스프링은 대한민국의 웹 개발자 시장에서 굉장히 많은 부분을 차지하고 있는 프레임워크이다.

많은 자바 개발자들이 스프링을 사용하여 웹 개발을 해왔고, 최근에는 코틀린으로 스프링을 사용하며 개발하는 추세이다.

 

그리하여, 스프링과 관련된 도서들은 굉장히 많다.

코드로 배우는 스프링 웹 프로젝트 - 자바 공부를 막 끝낸 개발자 분들이 스프링 입문을 위해 시작하는 책이다.

토비의 스프링 - 스프링을 개발하기 위한 교과서와도 같은 책이다.

등등의 좋은 책들이 너무나 많고, 과연 이 책은 어떤 경쟁력을 갖고 있는지 봐야 할 부분이다.

 

우선 목차를 살펴보자.

CHAPTER 1 스프링 부트
_1.1 스프링 부트의 핵심 기능
_1.2 마치며

CHAPTER 2 도구 선택 및 시작
_2.1 메이븐 vs. 그레이들
_2.2 자바 vs. 코틀린
_2.3 스프링 부트 버전 선택하기
_2.4 스프링 이니셜라이저
_2.5 스프링 부트 CLI 거침없이 사용하기
_2.6 통합 개발 환경(IDE) 사용하기
_2.7 main()을 향한 여정
_2.8 마치며

CHAPTER 3 첫 번째 REST API
_3.1 API를 왜 사용하고 어떻게 사용할까요?
_3.2 REST가 무엇이며, 왜 중요할까요?
_3.3 API, HTTP 메서드 스타일
_3.4 GET으로 시작하기
_3.5 믿으라, 그러나 검증하라
_3.6 마치며

CHAPTER 4 데이터베이스 액세스
_4.1 DB 액세스를 위한 자동 설정 프라이밍
_4.2 앞으로 얻게 될 것
_4.3 데이터 저장과 조회
_4.4 추가적으로 다듬기
_4.5 마치며

CHAPTER 5 애플리케이션 설정과 검사
_5.1 애플리케이션 설정
_5.2 자동 설정 리포트
_5.3 액추에이터
_5.4 마치며

CHAPTER 6 데이터 파고들기
_6.1 엔티티 정의
_6.2 템플릿 지원
_6.3 저장소 지원
_6.4 @Before
_6.5 레디스로 템플릿 기반 서비스 생성하기
_6.6 템플릿에서 repository로 변환하기
_6.7 JPA로 repository 기반 서비스 만들기
_6.8 NoSQL 도큐먼트 데이터베이스를 사용해 repository 기반 서비스 만들기
_6.9 NoSQL 그래프 데이터베이스를 사용해 repository 기반 서비스 만들기
_6.10 마치며

CHAPTER 7 스프링 MVC로 만드는 애플리케이션
_7.1 스프링 MVC는 무엇을 의미할까요?
_7.2 템플릿 엔진으로 사용자와 상호작용하기
_7.3 메시지 전달
_7.4 웹소켓으로 대화(conversation) 생성하기
_7.5 마치며

CHAPTER 8 프로젝트 리액터와 스프링 웹플럭스를 사용한 리액티브 프로그래밍
_8.1 리액티브 프로그래밍
_8.2 프로젝트 리액터
_8.3 톰캣 vs. 네티
_8.4 리액티브 데이터 액세스
_8.5 리액티브 Thymeleaf
_8.6 완전한 리액티브 프로세스 간 통신을 위한 RSocket
_8.7 마치며

CHAPTER 9 프로덕션을 위한 애플리케이션 테스트
_9.1 단위 테스트
_9.2 @SpringBootTest
_9.3 슬라이스 테스트
_9.4 마치며

CHAPTER 10 애플리케이션 보안
_10.1 인증 및 인가 부여
_10.2 스프링 시큐리티 살펴보기
_10.3 스프링 시큐리티로 폼 기반 인증 및 인가 구현
_10.4 인증 및 인가를 위한 OIDC와 OAuth2 구현
_10.5 마치며

CHAPTER 11 애플리케이션 배포
_11.1 실행 가능한 JAR
_11.2 JAR 확장
_11.3 컨테이너에 스프링 부트 애플리케이션 배포하기
_11.4 스프링 부트 애플리케이션 검사를 위한 유틸리티 컨테이너 이미지
_11.5 마치며

CHAPTER 12 리액티브로 더 깊이 들어가기
_12.1 리액티브는 언제 사용할까?
_12.2 리액티브 애플리케이션 테스트
_12.3 리액티브 애플리케이션 진단 및 디버깅
_12.4 마치며
타이틀만 올리고 싶었지만, 세부 목차를 보는 것이 중요하기 때문에 다 넣었다.
 
1장은 스프링 부트의 특징 설명을
2장은 스프링 부트 개발에 들어가기 전에 어떤 언어와 도구를 사용할지를
3장에서 5장은 REST API를 만들고 DB 연결을 하며 자동설정과 어노테이션의 기본을 살펴보고
8장과 12장은 리액트를 다루며 기본 개념을 깊이 있게 파고들고
9장에서는 스프링 부트에서 테스트뿐만이 아닌 테스트에 대한 저자의 관점을 볼 수 있다.
 
대부분의 스프링 책들의 구성과 순서가 비슷하지만 p.380정도의 분량에도 불구하고 있을 건 다 있다.
본 책에 구성 된 내용을 어느 정도 이해하고, 사용할 수 있다면 좋은 백엔드 개발자의 밑거름이 될 것이라 생각된다.
 
chatGPT는 이 책을 이렇게 설명한다.
 
초보자부터 전문가까지 모두가 이해하기 쉽게 작성되고 각 장에 실제로 실행 가능한 코드가 제시되어 개념을 이해하기가 쉽습니다. 게다가 스프링 부트의 기본 개념만이 아니라 클라우드 네이티브 애플리케이션을 구축하는 기술도 설명합니다. 스프링 부트는 기초부터 따라 하면서 학습하게 구성되었지만, 자바나 IDE 환경 설정과 관련된 부분은 선지식을 요합니다.
 
사실, 책을 보면 알겠지만 초보자를 위한 책이라 보기는 좀 어렵다. 어느 정도 자바와 스프링으로 개발한 경험이 있는 개발자가 보기에 좋은 책이라 생각이 된다.

1장을 보면 알겠지만 저자가 스프링 부트에 대한 이해의 깊이가 있다는 것을 알 수 있기에 어쩌면 초보자 분들에게는 어려울 수도 있다.

 

책의 내용을 흡수하기도 쉽지 않겠지만, 내용의 깊이가 있기에 책 외에 다른 레퍼런스들을 찾아가며 공부할 수밖에 없다.

 

그럼에도 불구하고, 굉장히 좋은 책이기에 스프링에 대해 또 다른 책을 갈구하시던 분들이라면 꼭 보시길 추천드린다.

 

Love Yourself.

 

1_표지.jpg

 

2_목차.jpg

 

 

 

책의 제목처럼 자바와 코틀린을 기반으로 스프링 부트를 사용하는 책입니다. 기본 문법은 어느정도 숙지하고 읽기 좋을 것 같습니다.  이 책은 번역이 잘되어있는 편인데요. 자바 버전과 스프링부트 버전을 최신 버전(스프링 부트 3)으로 고려해서 수정된 것으로 보입니다. 원서를 검색해보면 2021년 출판, 예제 프로젝트 및 코드가 Boot 2.4, Java 11 로 되어있습니다. 이를 지금 연도에 맞게 역자 분이 버전을 맞춰준 것 같습니다.

 

 

 

3_2챕터.jpg

 

 

그리고 다양한 자료와 상세한  주석 등이 달려있어서 꽤 실용적인 도서입니다. 자바로 프로젝트를 어느 정도 진행해본 분들이면 참 좋을 것 같다는 생각이 드는 책입니다. 스프링을 왜 써야하고, 그 장점은 무엇인지 큰 그림을 그려주게끔 서술이 되어있습니다. 이런 부분이 무턱대고 스프링으로 개발하는 자바 개발자들에게 좋은 내용이지 않을까 싶습니다.

 

 

4_2챕터.jpg

 

5_6챕터.jpg

 

 

 

 

재밌는 점 중 하나는 실습 코드를 소개한 다음, 뒤에서 그 코드를 '리팩토링'하면서 보여주는데요. 리팩토링이 잘 녹아있어서, 실제 깃허브에서 코드를 가져올 때, 브런치를 잘 확인해서 대조해보면 꽤 좋은 공부가 될 것 같습니다. 

 

 

유의할 점은 스프링을 1도 모른다면, 보기 난해할 것 같습니다. 책의 제목은 처음부터 제대로 배운다고 하지만, 제가 볼땐 조금은 스프링에 대한 간단한 강의 등을 듣고 보는 게 낫지 않을까 싶습니다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

총평
- 이 책은 자바, 코틀린으로 만들 수 있는 스프링 부트 클라우드 네이티브 애플리케이션 구축을 입문자의 시선에서 자세하게 설명해 준 책이다.


- 백엔드 개발자 취준생으로서 한 챕터 한 챕터마다 주옥같은 내용들로 이루어져 있다. 스프링 부트 구축, 메이븐, 그레이들 선택부터 REST API, JPA 를 시작으로 데이터베이스 접근, 애플리케이션 제작을 하나부터 열까지 알려주고 있다.


- 그리고 들어만 보았던 리액트 프로그래밍에 대해 처음으로 접해 보았다. 아직 완벽하게 알지는 못하지만, 나중에 다시 한번 회독하며 익힐 필요성을 알게 해 주었다. 사실 이 부분을 보았을 때에는 잘 알아듣지 못하는 부분도 분명 많았다. 아직 내 역량의 부족함을 깨달았고, 더 열심히 공부해야 겠다는 생각이 들었던 부분이었다.


- 또한 JAR로 빌드하여 컨테이너, 이미지로 만들어 배포하는 것 또한 한 번 더 익힐 수 있었다. 애플리케이션을 구축하는 것 만큼 혹은 그 이상으로 배포 및 운영 또한 매우 중요한 부분이다. 개발자는 사실 개발을 하는 것보다 운영을 어떻게 더 잘 할 수 있을까 고민하는 직업이라고도 생각한다. 이 부분을 보면서 입문자에게 맞춰 써진 책이긴 하지만, 배경지식이 많이 없는 개발자들에게는 힘들 수도 있는 책이라고도 생각이 되었다. (이 부분 말고, 다른 부분들에 있어서도 마찬가지긴 할 것이다. 나는 스프링에 대해 어느정도 이해가 있지만, 리액티브에 대해서는 전무했기 때문에 그럴지도 모른다(?) 정도의 생각이다.)


- 테스트 부분이 특히 인상적이었는데, 테스트의 중요성은 애플리케이션 개발자 들이라면 모두 공감할 수 있는 부분이라고 생각한다. tdd 사용 방향에 대해 다시 한번 깨우칠 수 있었다.


- 나중에 여기서 공부한 내용을 바탕으로 개인 프로젝트를 진행할 생각이다. 이 책을 읽을 수 있게 해준 나는 리뷰어 한빛 미디어 팀에게 감사 인사를 전한다.

스프링 부트에서는 자바와 코틀린 언어 모두 사용할 수 있다. 이 책은 스프링부트에 관심이 있는 사람들에게 도움을 줄 수 있는 책으로 스프링 부트의 시작부터 개발, 디버깅, 배포, 모니터링에 이르기까지 모두 담고 있다.

 

- 네이티브 애플리케이션 개발 및 배포를 간소화하는 방법

- 반응형 애플리케이션을 분산 시스템으로 만드는 방법

- 개발자의 생산성과 애플리케이션의 이식성을 향상하는 아키텍처와 접근 방식

- 애플리케이션을 빠르고 안정적으로 배포하는 방법

- 애플리케이션과 시스템의 상태를 모니터링하는 방법

- 클라우드 기반 애플리케이션의 디버깅, 테스트, 보안 유지

 

Chapter 1. 스프링 부트

스프링 부트의 핵심 기능은 의존성 관리 간소화, 배포 간소화, 자동 설정 입니다.

1. 의존성 관리 간소화

대부분의 기본적인 의존성은 기능 구현을 위해 추가로 설정해야 하는 수많은 의존성을 포함합니다.

Rest API는 아래와 같은 의존성을 포함합니다. 특정 형식으로 응답하는 코드(JSON, XML, HTML 등), 요청된 포맷의 객체를 마샬링/언마샬링하는 코드, 요청을 처리하고 다시 응답을 반환하는 코드와 다양한 유선 프로토콜을 지원하는 코드입니다.

spring-boot-starter-web 같은 단일 스타터를 추가하면 단일 애플리케이션에 필요한 기능을 모두 제공합니다. 단일 스타터에 포함된 여러 의존성 안에 들어 있는 각 의존성 내의 여러 라이브러리 버전이 모든 의존성에 맞게 포함됩니다.

 

2. 배포 간소화

오래전부터 애플리케이션 서버에 자바 애플리케이션을 배포하는 과정은 복잡합니다. 스프링 부트는 번거로운 배포 프로세스의 많은 부분을 한 단계로 간소화했으며, 단일 파일을 원하는 곳까지 복사하거나 cf push 까지 진행한다고 고려하더라도, 두 단계로 줄일 수 있습니다. 모든 의존성이 포함된 단일 스프링 부트 JAR는 배포를 용이하게 합니다. 모든 의존성을 수집해 배포하는 대신 스프링 부트 플러그인이 모든 의존성 결과를 JAR 에 압축합니다. JAR가 있으면 JVM 환경에서 애플리케이션 실행이 가능합니다.

 

3. 자동 설정

스프링 부트는 자동 설정이 있어, 생산성을 향상시키기 때문에 개발자에게 도움을 줍니다. 스프링 부트는 ‘설정보다 관습’이라는 정신을 추구합니다. 그래서 문서화로 확립된 단순한 규칙에 따라 작업을 수행한다면, 작성해야 하는 설정 코드가 최소화되거나 아예 없어집니다.


Chapter 2. 도구 선택 시작

빌드 시스템, 프로그래밍 언어, 도구 모음, 코드 편집기 등 스프링 부트 애플리케이션을 만들 때 사용하는 몇 가지 옵션을 살펴봅니다. 스프링 부트 프로젝트 빌드 도구로 메이븐과 그레이들 모두 지원합니다.

 

1. 아파치 메이븐 vs 그레이들

메이븐은 엄격하고 때로는 독단적이기까지 한 선언적 접근법으로 프로젝트와 개발 환경을 대단히 일관되게 만듭니다. 메이븐 방식을 따르면 일반적으로 문제가 거의 발생하지 않으므로, 빌드에 신경 쓰지 않고 코드에만 집중합니다. 그레이들은 프로그래밍/스크립팅 중심입니다. 따라서 그레이들로 빌드한 프로젝트에서 새로 출시된 버전의 프로그래밍 언어를 사용하면 종종 문제가 생깁니다.

그레이들은 빌드 속도가 빠른데, 특히 대규모 프로젝트에서는 메이븐보다 훨씬 더 빠릅니다. 일반적인 마이크로서비스 프로젝트에서는 메이븐과 그레이들 빌드 속도가 비슷합니다.

 

2. 자바 vs 코틀린

자바는 JVM의 원래 언어이며, 코틀린은 JVM을 사용하는 비교적 새로운 언어입니다. 스프링 부트는 자바와 코틀린 모두 지원합니다. 스프링 코드가 대부분 자바를 기반으로 하므로, 스프링 부트 애플리케이션을 자바로 만들면 이점이 많습니다. 코틀린은 자바의 사용성을 개선하기 위해 만들었으며, 간결함, 안전성, 상호 운용성, 도구 친화적인 언어입니다. 코틀린은 자바와 동일한 바이트코드 출력으로 컴파일하고 자바 소스 파일과 코틀린을 모두 포함하는 스프링 프로젝트를 만들고 두 컴파일러를 쉽게 호출하기 때문에, 한 프로젝트에서도 둘 중 적합하다고 판단한 언어를 사용하면 됩니다.

 

Chapter 3. 번째 REST API

마이크로서비스에서는 기능을 작고 응집력 있는 청크로 분할해 디커플링합니다. 따라서 더 빠른 배포와 용이한 유지보수가 가능한 유연하고 튼튼한 시스템을 구축하게 됩니다. 어떤 마이크로서비스 분산 시스템에서는 통신이 핵심입니다.

Restful API는 주로 HTTP 메서드를 기반으로 합니다.

• POST

• GET

• PUT

• PATCH

• DELETE

 

이는 생성(POST), 읽기(GET), 업데이트(PUT & PATCH), 삭제(DELETE)와 같이 리소스에 수행하는 일반적인 작업입니다.

 

GET

스프링 MVC는 뷰가 서버 렌더링된 웹페이지로 제공된다는 가정하에, 데이터와 데이터를 전송하는 부분과 데이터를 표현하는 부분을 분리해 생성합니다. 이러한 MVC 여러 부분을 연결하는 데 @Controller 어노테이션이 도움됩니다. @RestController 어노테이션은 @Controller와 @ResponseBody를 하나의 어노테이션으로 합쳐 쓴 것입니다. 결합해 하나의 어노테이션을 사용함으로써 코드를 단순하게 만들고 의도를 더욱 명확하게 표현하게 됩니다.

대부분의 애플리케이션은 프론트앤드 UI를 통해 백엔드 클라우드 리소스를 사용자에게 보여줍니다. 거의 모든 시스템의 중심 기능인 리소스 생성, 읽기, 갱신, 삭제(CRUD)를 일관된 방식으로 할 수 있습니다.

 

@RequestMapping 어노테이션과 HTTP 메소드와 일치하는 다양하고 편리한 어노테이션을 살펴보았습니다.

• @GetMapping

• @PostMapping

• @PutMapping

• @PatchMapping

• @DeleteMapping

 

Chapter 4. 데이터베이스 엑세스

스프링 부트는 개발자가 계속해서 반복적으로 수행하는 코드와 사용 패턴의 80~90%를 최대한 단순화하는 것을 목표로 합니다. 사용 패턴을 식별하면, 적절한 기본 구성을 사용해 필요한 빈을 자동으로 초기화합니다.

 

기존 ArrayList를 이용해 목록을 저장하고 관리했던 단일 애플리케이션 방식은 단점이 있습니다.

첫째, 회복탄력성이 떨어집니다. 애플리케이션 또는 애플리케이션이 실행중인 플랫폼에 장애가 발생하면 애플리케이션이 실행되는 동안 수행된 변경 내용이 모두 사라집니다.

둘째, 애플리케이션 규모를 확장하기 어렵습니다. 사용자가 많아져서 애플리케이션을 확장하기 위해 추가로 인스턴스를 만들어 사용하면, 새로 생긴 인스턴스는 해당 인스턴스만의 고유한 커피 목록을 가지게 됩니다. 서로 공유가 되지 않습니다.

 

스프링 부트 애플리케이션에서 DB에 엑세스하려면 다음 사항이 필요합니다.

• 실행중인 DB

• 프로그램상에서 DB 엑세스를 가능하게 해주는 DB Driver

• 원하는 DB에 엑세스하기 위한 스프링 데이터 모듈

 

Chapter 5. 애플리케이션 설정과 검사

애플리케이션은 오류가 일어나기 마련이고 대부분은 간단한 방법으로 해결이 됩니다. 그러나 문제를 정확히 해결하려면 근본원인을 파악해야 합니다.

코드 디버깅은 애플리케이션 내 동작을 구축, 식별, 분리하는 한 단계에 불과합니다. 동적이고 분산된 애플리케이션이 많아지면 다음 작업을 수행해야 합니다.

• 애플리케이션의 동적 설정과 재설정

• 현재 설정과 출처의 확인과 결정

• 애플리케이션 환경과 헬스 지표 검사와 모니터링

• 실행 중인 애플리케이션의 로깅 수준을 일시적으로 조정해 오류 원인 식별

 

스프링 부트는 애플리케이션의 동적 설정과 재설정을 가능케 하는 다양하고 강력한 매커니즘을 제공합니다. 심지어 애플리케이션 실행 중에도 설정과 재설정이 가능합니다.

 

@Value

@Value 어노테이션은 설정을 코드에 녹이는 가장 간단한 접근방식 입니다. 패턴 매칭과 SpEL(스프링 표현 언어)을 기반으로 구축되어 간단하고 강력합니다.

 

@ConfigurationProperties

속성을 정의하고 관련 속성을 그룹화해서, 도구로 검증 가능하고 타입 세이프한 방식으로 속성을 참조하고 사용합니다. 애플리케이션의 application.properties 파일이 보통 애플리케이션 기본값을 정의하는 데 사용되므로, 기본 지정 기능이 없어도 생각외로 유용합니다. 다양한 배포 환경에서 환경마다 다른 속성값이 필요한 경우, 속성값은 다른 소스(ex, 환경변수 or 명령 줄 매개변수)를 통해 애플리케이션 환경에 적용됩니다.

 

스프링 부트는 자동설정을 통해 많은 작업에서 개발자를 대행합니다. JVM의 유연성 덕분에 여러 방법 중 하나인 디버그 플래그로 자동 설정 리포트를 간단히 생성합니다. 포지티브 매치와 네가티브 매치를 보여주며 문제가 있을시 수행하지 않는 동작과 이유를 보여줍니다.

 

액추에이터는 무언가를 움직이게 하거나 제어하는 기계장치를 의미합니다. 스프링 부트 2.0으로 완전히 새로운 액추에이터는 수많은 주요 모니터링 시스템의 일관된 외관 메트리스를 제공하기 위해 마이크로미터 인스트루먼테이션 라이브러리를 활용하는데, 이 방식은 SLF4J의 다양한 로깅 메커니즘과 유사합니다. 이는 주어진 스프링 부트 애플리케이션 내 액추에이터를 통해 통합, 모니터링과 노출 범위를 확장합니다.

 

Chapter 6. 데이터 파고들기

데이터는 고려할 게 많은 복잡한 주제입니다. 가령 데이터 구조, 다른 데이터와의 관계, 데이터 처리, 저장, 조회, 데이터베이스 제공업체, 메커니즘 등을 고려해야 합니다. 어떤 형태로든 데이터가 없으면 모든 애플리케이션이 무의미합니다. 데이터를 저장하지 않고, 조회하지 않으며, 데이터를 서로 연결하지 않는 애플리케이션은 별 가치가 없습니다.

스프링 데이터는 “기본적인 데이터의 저장의 특수한 속성을 유지하면서 데이터에 엑세스하는 친숙하고 일관된 스프링 기반 프로그래밍 모델을 제공하는 것”이라고 합니다.

 

스프링 데이터는 다양한 복잡성(추상성) 수준에서 스프링 부트 애플리케이션이 사용할 수 있는 다양한 메커니즘과 데이터 엑세스 옵션을 제공합니다.

우선 도메인 클래스를 하나 정의한 후에 데이터 사용 범위, 클라이어느가 사용하는 외부 API, DB 종류를 고려해 데이터베이스와 추상화 수준을 정합니다. 스프링에서는 이런 작업을 할때 템플릿 or 레포지터리 중 하나를 사용합니다.

 

Chapter 7. 스프링 MVC 만드는 애플리케이션

REST 상호작용, 메시지 플랫폼, 기타 통신 방법과 함께 스프링 MVC를 사용해 스프링 부트 애플리케이션을 만드는 방법을 설명하고, 템플릿 언어 지원을 소개합니다.

템플릿 엔진은 사용자의 브라우저에서 실행되고 표시될 최종 페이지를 생성하는, 이른바 서버사이드 애플리케이션을 위한 방법을 제공합니다. 뷰 기술은 기술마다 접근방식이 다르지만, 일반적으로 다음을 제공합니다.

• 예상 결과를 생성하기 위해 템플릿 엔진이 사용할 입력을 정의하는 템플릿 언어 또는 태그 모음

• 요청된 리소스를 수행할 뷰/템플릿을 결정하는 뷰 리졸버

 

스프링 부트가 뷰 기술을 활용하여 사용자 브라우저에 페이지를 생성하고 보여주는 방법을 소개했고, 스프링 부트가 템플릿 엔진 처리 없이 HTML과 자바스크립트를 사용해 정적 컨텐츠를 처리하는 방법도 소개했습니다. 이외에도 스프링 클라우드 스크림과 RabbitMQ를 사용해 메시징 플랫폼의 활용법과 웹소켓 연결과 핸들러 코드를 구현하였습니다.

 

Chapter 8. 프로젝트 리액터와 스프링 웹플럭스를 사용한 리액티브 프로그래밍

스프링 부트와 프로젝트 리액터를 활용해 SQL과 NoSQL 데이터베이스를 사용한 데이터베이스 엑세스를 구동하며, 반응 유형을 Thymeleaf 같은 뷰 기술과 통합하고, RSocket을 사용해 프로세스 간 통신을 한 차원 높은 수준으로 제고하는 방법 등을 소개합니다.

스레드 처리 수를 초과할 경우 블로킹으로 인해 응답 대기에 빠지는 경우가 발생합니다. 이를 해결하기 위해서는 전통적은 해결 방법은 더 많은 인스터스 제공이지만, 이 해결책은 스레드 압박을 해소하는 동시에 다른 문제를 야기합니다. 리액티브 프로그래밍은 이런 확장성 문제를 해결하기 위해 만들어졌습니다.

 

리액티브 시스템의 특징

• 응답성(Responsive)

• 회복력(Resilient)

• 탄력성(Elastic)

• 메시지 가반(Message Driven)

 

리액티브 스트림의 핵심요소

• API : 게시자, 구독자, 구독, 처리자

• 사양

• 구현 예제

• 기술 호환성 키트

 

Chapter 9. 프로덕션을 위한 애플리케이션 테스트

테스트의 다양한 측면 중 각 애플리케이션의 프로덕션 준비성을 극적으로 향상시키는 스프링 부트 애플리케이션 테스트의 기본요소를 중심으로 진행됩니다. 다룰 주네는 단위테스트, @springBootTest를 사용한 애플리케이션 전체 테스트, JUnit을 사용한 효과적인 단위 테스트 방법, 스프링 부트 슬라이스 테스트를 적용해 주제를 분리함으로써 테스트를 간소화하는 방법입니다.

단위 테스트는 코드 단위를 가능한 한 작게 분리하고 합리적으로 정의해 유효성을 검사하는 방법입니다. 테스트 결과의 개수는 코드 단위의 크기와 복잡성에 따라 기하급수적으로 늘어납니다. 단위 테스트 내 기능 수를 줄이면 단위 테스트 관리가 더 용이해집니다. 단위 테스트를 성공적으로 충분히 구현한 후에 통합 테스트, UI/UX 테스트 등을 추가해야 합니다.

테스트 클래스는 기본적으로 애플리케이션 클래스와 이름이 일치하도록 지정해 구조에 일관성을 부여합니다. 예를 들면 기본 앱 클래스의 이름이 MyApplication이면 기본 테스트 클래스는 MyApplicationTest가 됩니다. 일반적으로 테스트를 먼저 작성하고 그 테스트를 통과하도록 코드를 작성하는 테스트 주도 개발(TDD)을 권장합니다.

 

Chapter 10. 애플리케이션 보안

인증과 인가의 개념을 이해해야 보안 애플리케이션을 구축하고 사용자 확인과 접근 제어를 위한 기반을 마련하게 됩니다. 스프링 시큐리티는 인증과 인가를 위한 옵션을 HTTP 방화벽, 필터 체인, IETF와 W3C 표준의 광범위한 사용, 교환 옵션과 같은 메커니즘과 결합해 애플리케이션 보안성을 높입니다. 스프링 시큐리티는 바로 사용 가능한 동시에 보안을 중시하는 사고방식을 채택합니다. 부트의 강력한 자동 설정을 활용해 개발자 입력과 사용 가능한 의존성을 검증함으로써 최소한의 노력으로 스프링 부트 애플리케이션의 보안을 극대화합니다.

 

인증 : 어떤 것(가령 신원, 예술작품, 금융거래)을 실제, 사실 또는 진짜로 보여주는 행위, 프로세스나 방법, 무언가를 입증하는 행위나 과정

ex) 누군가 자신이 주장하는 사람임을 증명하기(신분증)

 

인가 : 권한을 부여하는 행위 및 수단

ex) 누군가 특정 리소스나 작업에 접근할 수 있는 확인하기

 

스프링 시큐리티는 OIDC(OpenID Connect)와 OAuth2를 통해 인증과 인가를 제공합니다. OAuth2는 클라우드 기반 서비스, 공유 저장소, 애플리케이션 같은 지정된 리소스에 사용자의 제3자의 인증 수단을 제공하기 위해 만들었습니다.

 

Chapter 11. 애플리케이션 배포

소프트웨어 개발 과정에서 배포는 애플리케이션 프로덕션으로 진입하는 단계입니다. 애플리케이션이 최종 사용자에게 약속하는 기능에 관계없이, 배포되어 해당 사용자가 실제로 애플리케이션을 사용하기 전까지는, 개발했더라도 사실상 완성품이라기보다는 습작에 가깝습니다. 애플리케이션 배포까지 진행돼야 마무리가 됩니다. 많은 개발자가 스프링 부트 애플리케이션을 WAR 파일이나 JAR 파일로 생성할 수 있다는 사실을 압니다. 대부분의 개발자는 WAR 옵션을 건너뛰고 실행가능한 JAR 파일을 생성하는 많은 이유를 알고 있으며, 그 반대의 경우는 거의 없다는 점도 잘 알고 있습니다. 많은 개발자가 깨닫지 못한 것은 스프링 부트의 ‘실행 가능한’ JAR를 빌드할 때도 다양한 요구사항과 사용 사례를 충족하는 배포 옵션이 많다는 사실입니다.

 

스프링 부트의 실행 가능한 JAR는 독립적이며 테스트 가능하고 배포 가능한 단일 단위로 최대의 사용성과 다양성을 제공합니다. 생성과 반복이 빠르고 환경 변화에 따라 동적으로 자체 구성 가능하며, 배포와 유지, 관리가 매우 간단합니다. 스프링 부트 JAR는 스프링 부트 메이븐과 그레이들 플러그인 덕분에 또 다른 유용한 기능이 있습니다. 바로 완전히 실행 가능한 JAR를 생성하는 기능입니다. 애플리케이션을 작동하려면 여전히 JDK가 필요합니다.

 

Chapter 12. 리액티브로 깊이 들어가기

리액티브 프로그래밍은 개발자가 분산 시스템에서 리소스를 더 잘 활용하게 하며, 심지어 강력한 확장 메커니즘을 애플리케이션 경계를 넘어 통신 채널로 확장합니다. 리액티브 프로그래밍에서 일반적으로 사용하는 선언형 접근 대신, 명시적이고 순차적인 비즈니스 로직을 사용하기 때문에 명령형 자바라 불리는 자바 개발자라면 리액티브 기능을 사용하는데 많은 수고가 따릅니다. 리액티브 스프링 부트 애플리케이션을 배포할 때 발생하는 문제를 테스트하고 진단/디버깅 하는 최신 기술을 소개하고, 운영 환경으로 전환하기 전에 웹플러스/리액터를 사용해 작업하는 방법을 살펴봅니다.

이 책은 스프링 부트에 대해 관심이 있거나 처음 시작하는 분들에게 추천해줄 수 있는 책으로, 내용이 기본 개념부터 다양한 코드 예제를 통해 많은 것을 담고 있습니다. 또한 클라우드 네이티브 애플리케이션을 구축하기 위한 프로젝트라면 이 책을 추천드립니다.

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

스프링에 대해 공부하다보면 자연스럽게 스프링 부트에도 관심이 가는 것이 당연한 일일 것이다. 이 책은 그런 독자에게 스프링 부트를 꼭꼭 씹어 알려주는 선생님과도 같은 책일 것이다.

 

이 책은 스프링 부트를 사용하여 간단한 api 서버를 만드는 방법, 데이터베이스를 연결해 데이터를 처리하는 법, 애플리케이션 보안, 테스트 등을 다루고 있는 책이다. 저자는 독자가 알았으면 하는 내용들을 네모 칸에 별도로 알려주는데 초보자 혹은 그 이상에게도 상당히 주옥같은 조언들이 담겨 있다.

 

또한 한 개념을 설명할 때마다 예시 코드를 따라 작성하는데 정말 책 제목처럼 기초를 탄탄히 다질 수 있는 책이다. 또한 좋은 코드들이 많아 저자의 깃허브와 책의 소스 코드를 살펴보면서 부족했던 자바 문법을 발전시킬 수 있었다.

 

개인적으로 애플리케이션 테스트 부분이 흥미로웠는데 항상 관심만 가지고 있던 테스트 주도 개발의 방향성과 사용법을 일부 깨닫게 해주는 좋은 예시가 많았다. 덕분에 앞으로 있을 프로젝트에서 사용하는 데 있어 많은 도움이 될 것이다.

 

다만 책에서 정말 자세히 용어에 대한 설명을 해주지만 스프링에 대한 기본 지식이 없는 개발자들에게는 익숙하지 않은 개념과 단어가 어려울 수 있다고 생각한다. 때문에 어느정도 스프링에 대해 알고 난 후 이 책을 보면 더 많은 학습 효과를 얻을 수 있을 것 같다.

 

### 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

내가 읽었던 책으로 되어 있는 Spring Boot 관련 서적 중 가장 최신 버전을 다루고 있고 가장 부담 없이 읽기 쉬웠다.

 

우선 원서는 2021년 출판되었고 예제 프로젝트 및 코드가 Boot 2.4, Java 11 베이스로 작성되어 있다고 한다. 하지만 이 책은 놀랍게도 최신 메이저 버전인 Spring Boot 3로 예제 코드가 작성되어 있다. 즉 역자 분께서 최신 트렌드에 맞게 바꾸셨다는 건데 이 부분이 굉장히 좋았다. 특정 프레임워크, 특히 오픈소스 프레임워크의 사용법을 다룬 책을 읽는 것은 조금 조심스럽다. 운영 체제, 네트워크 등 기반 기술이 되는 것들에 대한 책과 다르게 오픈소스는 워낙 변화가 빠르다. 그렇다 보니 책이 작성된 시점과 실제로 독자가 이를 읽는 시점의 버전의 간극이 커서 책의 use case가 잘 동작하지 않거나 최신 트렌드에 잘 맞지 않는 지식을 다루는 경우도 있게 된다. 옛날 기술을 다루는 최신 책이 되는 경우도 종종 있다.

 

그렇다 보니 최신 메이저 버전인 Boot 3를 베이스로 Boot와 엮어서 사용하는 여러 가지 기술들에 대해서 필요한 만큼의 설명과 적절한 예제 코드로 구성이 되어 있어 부담 없이 읽었다.

 

실무에서 메인으로 사용하고 있는 기술 스택인 만큼 나름대로 이 책에 대한 높은 기대를 가지고 읽었는데 기대 이상으로 만족스러웠고, 간단하게라도 Spring Boot를 사용해 보신 분께 한 번 정도 정독하는 것을 적극 추천한다. 

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

이번에 소개할 도서는 스프링 부트 입문 도서이다. 

 

책은 빌드 도구와 언어 그리고 IDE 를 선택하는 것부터 시작한다.

그 다음 REST API, DB, 스프링 MVC, 애플리케이션 보안 및 배포에 대해 전반적으로 다루고 있다.  

 

 

처음부터 제대로 배우는 스프링 부트

 

 

이전에 스프링 배우면서 재밌었던 부분은 @RequestMapping에서 HTTP 메서드 별로 다르게 매핑할 수 있도록 제공하는 애노테이션이였다.

같은 URI 여도 HTTP 메서드 마다 @GetMapping@PostMapping 등을 지원하여 번잡한 코드를 줄이고 URI 도 깔끔하게 만들수 있다는 장점이 맘에 들었다. 

 

이 도서에서도 이런 경험을 느낄 수 있도록 자세한 예시코드와 설명들이 포함되어 있다.

 

 

 

 

스프링을 처음부터 제대로 배우고 싶은 사람들에게 추천하고 싶은 책이다:)

 

"한빛미디어 <나는 리뷰어다>활동을 위해서 책을 제공받아 작성된 서평입니다."

 

IMG_1458 중간.png

 

 

나는 기술 서적을 볼 때 독자 대상에 맞게 잘 쓰였는 가를 보는 편이다.

10년 차 이상 개발자로써 spring 책을 몇 번 봤지만 잘 쓴 책들도 많지만 너무 어렵게 설명되어 있는 책들도 있다.

그런 면에서 이 책은 정말 대상 독자에 맞게 내용을 잘 정리되어 있고 핵심을 잘 알려주고 있다.

 

위에서 언급한 것과 같이 이 책은 내용이 잘 정리되어있기 때문에 기술 서적임에도 내용이 술술 잘 읽힌다.

이렇게 잘 읽히는 것은 번역자들의 노력도 있다고 생각한다. 때로는 내용이 너무 좋지만 번역의 단어 선택이 어색하여 

읽는 중간중간 뚝뚝 끊기는 경우도 간혹 있기 때문이다. 

이러한 이유로 학부 시절에 교수님들이 원서를 읽으라고 하시는 경우도 많았다. 

그때는 싫었지만  번의 이상한 번역서들을 보면 이해할 있다.

 

IMG_1455 중간.png

 

 

1장의 마치며 내용이다. 마치며 또한 그 장의 핵심 내용을 아주 간략하지만 확실하게 내용을 전달해주고 있다.

 

책의 제목인 처음부터 제대로 배우는 스프링 부트와 같이 

스프링 이니셜라이저의 시작, 애플리케이션의 시작, REST API를 통한 애플리케이션의 개발, 

데이터를 다루는 방법…. 그리고 배포까지의 과정을 잘 설명하고 있다.

특히나 2.7 main 향한 여정의 오류발생의 원인과 최상위 어노테이션에 대한 언급은 정말 간단하지만 친절함이 느껴진다.

 

IMG_1457 중간.png

 

처음에 서술한 것과 같이 이 책은 초중급 개발자가 읽기 좋게 잘 쓰여있다. 

또한 고급 이상의 개발자에게도 부담없이 읽을  있으며  동안 놓치고 있던 내용들을 짚어보는 기회가  수도 있을듯 하다.

스프링, 스프링 부트  관련 서적은 정말 많다.

인터넷 서점에서 '스프링' 으로 검색을 하면 무수히 많은 서적이 노출된다.


그런데 이 책은 다른 도서와 비교했을 때 얇지만, 담고 있는 내용이 얇지 않다.

오히려 꽉 찬 느낌이다.


1장부터 이 책은 스프링 부트의 3가지 핵심 기능으로 "의존성 관리 간소화", "배포 간소화", "자동 설정" 로 정의한다.

이어서 IDE 환경 설정을 다뤄서 누구나 동일 환경에서 학습할 수 있도록 안내 한다.


더욱이 스프링 부트 기능을 활용한 실습 코드를 간단히 알려주고,

상세 내용은 다음 장에서 깊이 다루는 방식으로 우리를 안내한다. 


그리고 처음 실습 코드를 소개하고, 이후에 코드를 이렇게도 수정할 수 있다고 '리팩토링' 방식도 보여주고 있다.

또한 책에서 다루는 실습의 전체 코드는 깃허브에서도 확인할 수 있는데, 리팩토링도 하고 있으니 각 챕터별 브랜치를 나눠서 이전/이후를 쉽게 구분할 수 있도록 세심한 배려를 하였다.


특히 각 장마다 마지막에선 '마치며' 라는 항목을 두고 주요 내용을 정리하고 있어서

독자로 하여금 잊지 않도록 찝어 주고 있다. 마치 과외할 때 과외 선생님이 잊지 말라고 당부하는 느낌이 든다.


전체적으로 책을 보면서 참 재미있게 읽었고, 앞에서도 말했지만 책이 다루는 깊이도 얇지 않은 책이었다.

이 한 권으로 스프링 부트를 모두 마스터했다. 라고 할 수 없겠지만 확실한 것은 이 책을 통해 스프링 부트를 활용한 개발 프로젝트를 접해볼 수 있다는 것이다.


스프링 부트를 이제 막 다루거나 스프링 부트에 대해 좀 더 알아보고 싶다는 분들에게 딱 알맞는 책으로 추천한다.


  "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."



스프링 부트 책은 시중에 매우 많이 있습니다. 

이책의 장단점 및 대상 독자분들에 대해서 리뷰를 해보려고 합니다.

 

책의 표지를 우선 소개해드리고 싶었습니다.

표지에서 언급된 키워드가 이 책의 포인트이고, 저자의 책 구성 방향을 잘 설명하고 있습니다.

 

 

책 표지에서 언급된 키워드를 살펴보면, 책의 특징은 아래와 같습니다.

  • 처음부터 제대로 배우는 (Up & Running) : 중급자를 대상으로도 좋다는 의미 (추천사 참고)
  • 자바와 코틀린을 함께 경험할수 있다. 
  • 클라우드 네이티브를 경험할수 있다.
  • 저자분이 VMWare 개발자 분이시며, 자바개발자 및 코틀린 구글 개발자 전문가 입니다

 

■ 인트로는 쉽게..

 

 

 

■ 선택사항

 

 

 

■ 구체적으로 책 내용 살펴보기

springboot에 대해서 전반적인 부분을 언급합니다. 가장 기본이 되는 CRUD처리 및 API에 대해서 설명은 기본이고

설정, 레디스, 몽고DB등 다앙한 접속, MVC, 프로덕션, 리액터와 웹플럭스를 사용한 리액티브 프로그래밍, 배포, 보안등에 대해서 언급합니다.

보통 책이 모든 기능을 다 설명하면, 이것이 메뉴얼같은 느낌이 들기도 합니다.

하지만 그중에 가장 많이 사용하고 핵심이 되는 개념이 있고, 많은 Annotaion중에 기본적이라고 생각하는 중요하고 많이 사용하는 부분이 있습니다. 여기서 이책의 장점이 있는것 같습니다. 가장 중요한 개념을 빠르게 학습하고 이해한다면, 그것을 바탕으로 가지치기가 가능합니다.

 

 

 

처음 Spring이나 Springboot를 사용할때, 뭔가 주입식으로 알게 되는것이 @Annotation이다.

거의 반복하는 패턴으로 사용하기 때문이다.

 

p.53

 - @Controller : MVC의 여러부분을 연결하는데 사용됩니다. 데이터를 전송하는 부분과 데이터를 표현하는 부분(view)을 분리해서 생성하는데, 이것을 연결해주는 역활을 합니다.

@Controller는 @Component의 스테로오타입 별칭입니다. 

저희가 많이 사용하는 어노테이션인 @Component, @Controller, @Repository, @Service에 대해서 모두 해당 jar에 있습니다.

@Controller가 붙은 클래스는 Model객체를 받습니다. Model객체로 표현 계층에 모델기반 데이터를 제공합니다.

또 ViewResolver와 함께 자동해서 랜더링 뷰를 처리합니다.

 

 

 

해당 어노테이션의 소스를 보면, Controller, Repository, Service모두 @Component를 기본적으로 포함하고 있습니다.

 

 

 

 

@RestController의 구성요소 : Controller + ResponseBody

 

 

@RequestMapping 

 - @GetMapping, @PostMapping .....

 

 

- REST 구성시, API의 http 상태값에 대한 고민도 되어야 합니다.

 

 

 

 

■ DB Access

 - @Entity : JPA어노테이션입니다. (javax.persistence)

 - @Repostory : Spring Data에 정의

 - JPARepository , CrudRepository

 

 

- P.82 데이터 테스트를 위한 방법

1) CommandLineRunner, ApplicationRunner를 활용한 방법

2) 람다를 이용하는 방법

3) @Component클래스와 @PostConstruct 메소드를 이용하는 방법

 

■ 설정과 검사

- @Value : application.properties의 내용을 사용하는데 보통 환경변수처럼 ${}형태로 재사용이 가능하다

	// 초기값을 설정할수 있다.@Value("{test-key : initValue}")

 

- @ConfigurationProperties : @Value의 유연하지만, 단점을 보완함, 그 클래스의 속성을 앱 환경에 추가

@ConfigurationPropertiesScan을 이용해서 추가함

	@ConfigurationProperties(prefix="greeting")

- 자동 설정 리포트

 

 

- 액추에이터 : 스프링부터에서 수행되는 다양한 정보를 취득가능하다.

https://incheol-jung.gitbook.io/docs/study/srping-in-action-5th/chap-16.

 

CHAP 16. 스프링 부트 액추에이터 사용하기 - Incheol's TECH BLOG

"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"

incheol-jung.gitbook.io

 

■ 다양한 데이터 환경 구성하기

"스프링데이터"를 사용해서 처리하는 다양한 방법

 

 

p. 125. 많이 사용하는 lombok에 대한 어노테이션 설명

p. Neo4j를 이용한 서비스 개발하기 내용이 있습니다.

 

 

 

 

■ 비동기로 처리

 

 

 

■ 추가적인 사항

- ApplicationContext에 대한 중요한 정리 (p.239)

 

 

 - Spring Security를 통한 인증 보안

 - jar를 통한 배포 방안,처리 방법등에 대한 내용으로 구성되어 있습니다.

 

전반적으로 SpringBoot를 사용하는데, 필요한 개념을 초급,중급 모두 도움이 되는 구성되어 있고, 여러가지 고민되는 요소에 대해서 

정의를 하는 방향이 흥미롭고 도움이 많이 됩니다. 사용법에 대한 설명도 있지만, 왜 사용해야 하는지에 대한 공감대 형성을 통해서 지금 기술의 발전이 어떤 방향이고, 해당 부분은 SpringBoot를 통한 해결방안이 잘 제시되어 있습니다.

 

 

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. 

정말 제목 그대로 제대로 스프링 부트에 대해 담은 책이다. 것도 지금 많이 사용하고 있는 기술(?)들로 이루어져 있어 처음 스프링 부트에 대해 공부하며 어떤 어떻게 시작해야 할지 막막한 사람이라면 읽기 좋은 책이다. 자바만 4년째 쓰고 있는 나도 읽으면서 새롭게 알게된 부분도 많이 있고, 기본 개념에 대해 다시 공부할 있어 좋았다. 자바 개발자라면 누구나 스프링을 사용하는데, 대체 사용하는 이유에 대해 틀로 설명을 해주고, 스프링 부트의 강력한 기술들에 대해 자세한 기초 지식과 예시, 코드들을 보여준다. 다양한 기술을 다루는 만큼 설명이 깊진 않지만 핵심은 담겨 있어 어떤 공부해야 할지에 대한 가이드 역할을 해줄 있다.

 

총평

- 책의 난이도 : ★★☆☆

- 추천 별점     : ★★★★

- 추천 독자     : 최신 자바 스트링 부트를 학습하고 싶다면 추천한다.

- 지은이          : 마크 헤클러 저 / 오시영, 서정대 역

- 출판사          : 한빛미디어

- 예제소스 : https://github.com/springboot-up-and-running/SpringBootUpAndRunning-Spring-Boot-3

 


이 책은 자바와 코틀린을 기반으로 스프링 부트를 사용하는 책이다. 나는 아직 스프링부트를 잘 알지는 못하지만 개발 공부를 시작하면서 자바로 공부를 하고 있다. 아주 기초적인 문법만 아는 수준이다.

그렇기에 이 책은 단순히 시작하는 사람이 읽기에 좋다고만 할 수는 없었다. 하지만 읽기에 전혀 불편하지도 않았다. 그래서 내 기준으로 난이도와 추천 별점을 줬다는 지극히 주관적인 평가를 밝힌다.

 


이 책의 장점은 다음과 같다.

 

첫째는 번역책이지만 역자가 굉장히 적극적으로 번역했다는 것이다. 아래 사진에서 볼 수 있듯 역자의 코멘트가 굉장히 많다. 그래서 책에서 다소 확확 넘어가는 것들이나 부족한 설명들을 충분한 각주로 채워주고 있었다. 설명이 부족하면 보충해주고 중간중간 단계를 건너뛰면 그것을 보충해주는 내용을 많이 넣었다.

 

 

 

 

   

그리고 적극적이라는 이유는 추가적으로 코드에서도 들어나는데 원작은 자바 11에 스프링부트 2.4를 쓰고 있으나 한글 번역책은 실습코드를 자바 17에 스프링부트 3.0.2로 변경했다. 그래서 최신 트랜드를 잘 반영하고 있었다. 또한 책에서는 자바 17 코드를 보여주고 있지만 책의 원서에 있는 자바 11의 코드도 링크를 걸어놨으니 필요에 따라 확인해볼 수 있다.

 

 

두번째는 충분한 코드와 실습에 대한 사진 자료가 풍부하고 Note등의 팁도 많다는 것이다. 다양한 자료로 설명하고 내용도 충분하기 때문에 초보자라도 어느정도 따라감에 많은 서포트를 해준다. (그렇다고 엄청 세세하다고는 못하겠다)

 

 

 

 

장점은 이정도 인 것 같다.

책의 구성은 다음과 같다. 

3장에서 REST API를 직접 만들어본다. 각각의 API 항목별로 코드가 있기 때문에 실습하기 좋다.

4장에서는 데이터베이스를 연결해본다. 그리고 9장에서는 테스트, 10장에서는 스프링 시큐리티, 11장에서는 배포를 학습하는 등 실제로 중요하고 꼭 알아야 할 개념 위주로 순서에 맞게 배열해두었다.

 

책은 총 12개의 챕터로 나눠져있으며, 챕터 간에 필수적인 설명을 우선적으로 하고 있다. 다만, 책의 분량상 모든 것을 다루었다고 할 수는 없지만 이 책에 있는 내용만 학습하더라도 기본적인 내용은 모두 습득했다고 보는게 알맞는것 같다.

 

자바와 스프링부트를 이용하는 학습자라면 이 책을 한 번 꼭 읽어보기 바란다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

※ 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

이번 도서는 스프링 부트를 처음 공부해볼 분들을 위한 좋은 입문서이다.

이미 스프링 부트로 개발을 하고 있는 나에게도 스프링 부트에 대해 알지 못했던 부분들을 공부해보고 이해할 수 있어서 동무이 된 책이었다.

스프링 부트를 소개할 때에 항상 이야기하는 핵심 기능을 짧게 훑어보고 이후부터는 실제로 스프링 부트를 셋팅하기 위한 여러 가지 선택적 요소들을 다루고, 차이점을 통해서 각 요소들의 선택의 도움을 준다.

특히나 스프링 부트를 처음 사용해볼 분들을 위해 스프링 이니셜라이저를 통해서 프로젝트를 쉽고 빠르게 구성할 수 있는 방법을 통해 이 책을 공부하면서 그 기능을 하나하나 사용해보면 좀 더 개발하는데에 도움이 될 것으로 보인다.

이후에는 REST API에 대한 기본 개념과 함께 REST API를 보편적으로 사용하게 된 이유와 중요성을 소개하며 스프링 부트를 통해 REST API를 개발하는 방법을 쉽게 소개한다.

이후에는 스프링 부트에서 데이터베이스를 연동하여 데이터를 관리하기 위한 방법을 다룬다.

특히 의존성을 추가하고, 예시 코드를 통해 데이터베이스를 연동하여 데이터를 관리하는 방법의 기초 작업을 알 수 있기 때문에 스프링 부트를 처음 접해보는 분들에게는 도움이 될 수 있을 것이다.

하지만 나와 같이 이미 스프링 부트를 접해보신 개발자에게는 약간 쉬운 내용일 수 있다.

6장부터는 좀 더 심화 내용을 다룬다.

자주 사용되는 설정과 관련된 애노테이션과 액추에이터, 그리고 NoSQL을 연동하여 통해서 서비스를 개발하는 방법과 템플릿 엔진을 통해서 메시지를 출력하고 웹 소켓을 사용하는 방법에 대해서 다룬다.

특히 웹플럭스틀 사용하는 방법을 다루는 내용에서는 토이 프로젝트에서 잠깐 사용해보았는데, 이 책을 통해서 개념을 좀 더 이해해보고, 사용방법을 배울 수 있는 기회였어서 이 부분은 나에게 도움이 되었다.

특히 서비스를 운영하는 데에 있어서, 스프링 시큐리티를 사용하여 인증과 인가를 처리하는 방식을 배우고, 애플리케이션을 실행하기 위한 배포 방식도 포함되어 있다.

이 책은 애플리케이션을 생성하고 개발하고, 배포와 모니터링하는 일련의 과정을 공부해볼 수 있어서 스프링 부트를 처음 공부해보시는 분들에게도 많은 도움이 될 것이다.


"<한빛미디어 나는 리뷰어다>" 활동을 위해서 전자책을 제공받아 작성된 서평입니다.

제목 : 처음부터 제대로 배우는 스프링 부트


- 한 줄 평가

맛있어서 계속 먹고 먹고 또 먹고 나중에 또 생각나는 맛집 음식같은 가이드북


- 대상 독자

스프링 부트를 사용 해봤거나 사용하고 있는 스프링 개발자, 스프링 부트를 접해보지 않았거나 처음 보는 개발자는 약간 어렵지 않을까 싶음.

 

- 책의 내용 및 구성

1. 약 380p, 12챕터로 구성

2. 스프링 부트의 주요 기능을 다루는 동시에 이 기능들을 애프리케이션에 유용하게 활용하는 방법들을 소개

3. 깃허브 의 브랜치들로 각 장의 예제 실습 파일을 확인할 수 있으며 springboot 3.0.2, java 17을 활용

4. 2장까지 '스프링 부트를 어떻게 시작해야 하는지' 간략하게 설명하고, 이후 스프링 부트를 동작시키는 코드들에 대한 해설을 여러장에 걸쳐 설명하며, 후반부에는 최근엔 어떤 기술들이 사용되고 있는지 등을 설명

 

- 책에서 눈에 띄는 점

1. 프로젝트 예제로 설명하면서 진행할 때, 예제 코드를 제공해주기 때문에 넘어갈 수 있는 의존성과 같은 내용들을 포함해서 특정 장만 읽어도 어렵지 않음.

2. 보통 스프링 서적들의 '테스트' 하면 '너는 이미 알고 있다'라는 느낌으로 간략하게 몇 장 찍어 먹고 넘어가는 느낌이었지만, 여기서는 테스트를 왜 해야 하는지부터, 어떻게 하는지까지 간략하면서도 알아보기 쉽게 설명하고 있음.


3. 대부분의 서적에도 존재하는 'TIP' 또는 'NOTE' 항목의 존재와 동시에 중요하거나 독자가 알았으면 하는 내용들은 네모의 칸에 별도로 정보를 서술함.


- 총평

 어떤 내용을 덜어내고 어떤 내용을 포함해야 할 지 고민하고 또 고민한 흔적이 보이는 책이다. 대부분의 후기에서 느낄 수 있듯이 각 장을 읽어 내려가다보면 간략하면서도 핵심을 알려주기 위한 노력한 느낌이 든다.

 내가 알고 있는 정보를 모르는 사람에게 설명해야 할 때, 어떻게 설명해야 하는가와는 다른, 책에서만이 느낄 수 있는 묘미이자 개발 능력과는 별개의 작가로서 역량이 아닐까 싶다. 저자는 그저 설명만 하는것이 아닌 이런 점들을 염두하고 내용들과 챕터들을 배치한 것이 아닐까 싶다.

 순서에 상관없이 바로 관심이 가는 장을 골라봐도 되지만 '저자의 통찰력을 엿볼 수 있는 1장은 꼭 읽어보길 권한다'는 옮긴이의 말을 보고 1장을 두어번 더 읽어 보았지만 무슨 통찰력을 말하는지 이해할 수 없었다. 하지만 다른 서적을 읽다보니 말하고자 하는 내용의 '핵심'이 무엇이고, '그것을 어떻게 풀어 쓸 것인가'를 말 또는 문장으로 옮겨 적는 것은 매우 어렵고 그 내용이 '누군가를 이해시키기 위한 것'이라면 더더욱 어려운 것이라는 걸 알게 되었다.

 '의존성 관리 간소화', '배포 간소화', '자동 설정' 이 핵심내용 세가지를 간략하고도 쉽게 풀어써 1장에 배치함으로써 독자들이 스프링 부트를 설치하고 실행시키는 것보다 본질적인 '스프링 부트를 왜 써야 하는가' 를 알려주고 싶었던 것 같다.

 그에 반해 2장은 좀 아쉬웠다. '도구의 선택' 이라는 말과는 무색하게 이미 책에서 사용해야 할 기술은 지정되어 있는데 이 장이 필요했던걸까 하는 의문이 든다. 여러 선택지를 알려준 것은 고맙지만 이 책의 독자들이 대부분 '스프링 부트'를 알고 있는 개발자들이라 생각이 들기 때문에 이런 내용은 커뮤니티 정보 게시글 같은곳에 어울리지 않을까 싶었다.

 스프링 부트를 사용한지 3년이 넘어간다. 사실 버전이 올라가면서도 어떤 기술들이 생기고 없어지는지는 관심이 없다. 그저 잘 돌아가면 된다고 생각할 뿐이다. 하지만 이런 안일한 생각은 예기치 못한 버그가 발생했을 때, 문득 필요하다고 생각하는 기술이 이미 널리 알려져 있지만 나만 모를 때 등 기초와 기본을 알지 못하면 몸과 마음이 고생한다는 것을 연차가 쌓여가면서 더더욱 뼈저리게 느끼고 있다.

 

 책 자체가 두껍거나 레퍼런스를 지향하고 있는 느낌이 아니기 때문에 엄청나게 코어하고 하드하게 파고들진 않는다. 하지만 '이정도는 알아야 스프링 부트를 쓴다~' 하는 느낌으로 기본적이고 기초를 탄탄하게 다질 수 있는 좋은 내용들로 꽉 차있음에는 분명하다고 생각한다.


스프링 부트의 핵심적인 내용들로 11개의 챕터를 꽉꽉 채워놨으며 입문자 뿐만 아니라 경력자들도 한번씩 훑어보면 아주 좋을 내용들로 잘 구성이 되어있으니까 꼭 한번 읽어보시기를 권장드립니다 ~

역자가 상세한 해설을 더해 한국의 개발자들에게 내놓은 선물 같은 책이 책을 받아 들고 마지막 페이지를 넘기는 순간까지 / 바다 건너 외국의 어떤 개발자가 쓴 기술 서적을 읽는 중 / 그 내용을 한국의 독자가 정확히 이해 못 하는 부분이 있을까 걱정하는 어느 번역가에게 / 친절한 과외를 받는 듯한 느낌이었다.It is [ ].빈칸에는 [개념(Concept)] 또는 [실체(Entity)]가 들어갈 수 있다. 혹은 그것을 서술, 상상, 요약하는 추상화의 목적물로 만들어내는 언어의 조각으로 [관념(Idea)]이 들어갈 수 있다. 우리가 세상의 어떤 것을 만날 때, 그 방법으로 누구나 생각할 수 있는 일반적이고 추상적인 형태로서의 존재 이미지인 개념(컨셉)과 실제로 존재하는 실체(객체, 개체, Entity)가 있다. 그리고 그것을 추상화하여 언어의 조각들을 모아 관념(Idea)을 통해 다른 사람의 생각으로 전달하거나 실체 (아마도 여기서는 Code 가 될 듯하다.)로 재 탄생할 수 있게 해주는 책이 있다면 선택을 하지 않을 이유가 없지 않을까 싶다.자바 언어를 공부했거나 현업에서 사용한 경험이 있다면 누구나 한 번은 스프링 프레임워크를 접했을 것이고, 그것을 접한 후 자연스럽게 스프링 부트를 만나게 된다. 아이러니하게도 스프링 부트는 스프링을 사용하는 개발자가 매번 작업해야 하는 일을 손쉽게 진행하도록 돕는 부가 기능의 합인데도 불구하고 스프링부트가 제공하는 수많은 편의 기능을 모른 채 쓰지 못하거나, 자동으로 구성해 주는 내용을 직접 관리해야 하는 포인트 부분에서 방법을 몰라 고생하는 일이 많아 보였다.스프링부트의 핵심 기능인 의존성 관리, 배포 간소화, 자동 설정 (또는 마법, 마술이라고 해도 된다.) 세 가지를 우선 개념(컨셉)을 설명하고, 실체(코드)를 통해 독자로 하여금 직접 코드를 작성하고 연동하고 실습하도록 시연을 보여주는 책이다. 그리고 매 챕터 마지막에는 이러한 개념과 실체를 정리하며 관념(정리, 그리고 내재화)을 독자의 것으로 만들어준다. 아주 충실하게 말이다. 글을 이어가며 이 말을 증명해 보겠다.이 책은 우선 믿고 보는 O`RIELLY의 Spring Boot Up And Running이라는 제목의 한국어 번역판이다. 한국어 제목은 ‘처음부터 제대로 배우는 스프링 부트 - 자바와 코틀린으로 만나는 클라우드 네이티브 애플리케이션 구축’이다. 이 책을 받아 들고 마지막 페이지를 넘기는 순간까지 바다 건너 외국의 어떤 개발자가 쓴 기술 서적을 읽는 중에 그 내용을 한국의 독자가 정확히 이해 못 하는 부분이 있을까를 걱정하는 어느 번역가에게 매우 친절한 과외를 받는 듯한 느낌이 들었다.이 책의 원 저자인 마크 헤클러 (Mark Heckler)는 서문에서 스프링 부트를 다루는 능력이 서툴든 능숙하든 전 세계 도처의 개발자들과 만나 상호작용을 할수록 자신의 지식(실력)이 늘었다고 고백한다. (프로그래밍 영역으로 확장해도 그렇다.) 우리는 다른 것을 다른 시간에 다른 방식으로 배우고 있다 하며 이 책을 구상하게 된 배경이라고 언급한다. 성숙한 혹은 경험을 해 본 경력자에게도 ‘원래 되는 것’이라는 생각을 넘어 ‘왜’라는 영역을 단단히 설명하고 있으면서, 처음 사용하는 개발자에게도 공유된다면 반드시 필요하고 큰 도움이 될 거라는 소개와 함께 주요 기능을 활용하는 방법을 안내한다.이 책의 실습내용 소스코드는 원서가 제공하는 소스코드(깃허브)와 번역서에 업데이트된 내용을 위한 소스코드(깃허브)가 역자의 노력에 의해 함께 제공된다. 원서가 전달되고 번역서가 서점에 배포될 때는 시차도 있고 역서의 구성이 원서와 페이지까지 동일할 수 없기 때문에 혼란스럽기 마련인데, 동시제공 방법으로 독자를 배려했다.소스를 개선하면서(리팩토링) 만나게 되는 오류화면을 IDE가 보여주는 그대로 지면에 담고, 그것을 해결하기 위해 과감하게 x 표시를 하여 사라져야 하는 부분을 지우고, 새로 작성해야 하는 부분을 형광펜(책에서는 물론 음영처리)으로 보기 좋게 표시해 주는 저자의 센스가 지금까지 만나보지 못한 개발자 친화적인 저술 방법이다. 현재 본인이 집필 중인 책에 이 방식을 도입해야겠다는 생각을 해본다.처음에는 스프링 부트의 핵심기능을 설명하며, 의존성관리와 배포, 자동 설정에 대한 이야기를 한다. 이때 각각의 기능들이 어떻게 동작하는지에 대한 설명과 함께 관리, 배포, 자동 설정(이라고 쓰고 마법)은 잊고 개발자는 자신의 코드를 작성하는데 집중하면 된다고 전한다. 커스텀할 수 있지만 그럴 필요 없다며, 대부분의 것들이 ‘설정보다 관습 Convention over Configuration’이라는 정신에 기반한다는 것을 보여준다. 이는 스프링 설정에 고통받아본 개발자라면 특히 Spring 3 혹은 그 이전에 xml에 의해 좌절해 본 개발자들에게 환호할 일이다.다음은 메이븐 vs 그래들의 내용이다. 흔히 빌드 도구라 알고 있지만, 빌드를 하기 위한 여러 라이브러리의 의존성 관계를 관리해 주는 도구라고 표현해도 나쁘지 않다. 메이븐이 오래전에 출시되었다고 구시대의 도구라고 생각하지만 메이븐의 선언적 접근법이 프로젝트를 일관성 있게 유지해 주기 때문에 오히려 문제가 발생되지 않는 장점이 있다는 내용을 함께 알려준다. Better 문제가 아닌 Choosing의 문제뿐이라는 것이다.JDK의 선택에 있어 가장 빠르게 설치하는 방법(SDK Man)이라든가 IDE 선택에 있어 어떤 IDE를 선택해도 좋지만 (어느 한편을 들 수 없지만) 자신은 인텔리제이(IDEA)를 사용하고 있다고 전한다. (리뷰를 작성하는 본인도 여러분에게 인텔리제이를 권한다.) 빌드 시스템, 도구 또는 프로그래밍 언어 어떤 것이든 지원하는 놀라운 유연성을 강조하면서 논쟁의 여지가 없으니 우리는 애플리케이션을 만드는데 집중하자는 이야기로 마무리된다.데이터베이스 파트로 넘어갈 거라고 생각되는 영역에서 우선 REST API를 설명한다. REST API를 모두 알고 있을 것이라 생각되고 (이 리뷰를 찾아볼 정도라면..), 이때부터 이 책의 진가가 드러나기 시작한다. 개념(컨셉)을 설명하고, 실체(코드, 시연)를 보여주고, 관념(생각 또는 기억으로 남는 정리의 글)으로 마무리 짓는 패턴이 시작된다.아울러, 원 저자는 REST 원칙에 대한 소개하는 설명을 마칠 때 즈음 30년(’1994) 전으로 거슬러 올라가는 역사를 설명하려다 더 깊이 파고들지 않겠다며 다음 챕터로 넘어가는데, 역자는 그것마저도 응? 왜? 하며 언급된 내용이 담긴 논문의 저자와 제목을 “옮긴이_” 라 붙은 풋노트에 적어놓았다.번역을 하다 보면 의외로 우리말로 번역하기 힘든 단어 혹은 용어가 있는데, 그럴 때는 가장 근접한 소리 표시로 한글로 옮기는 경우가 많다. 의역을 해서 옮기는 경우 또 다른 의미로 잘못 전달 거나 원 단어가 가진 고유의 뜻이 사라지는 상황이 발생할 수 있기 때문이다. 역자는 본래의 단어를 최대한 살린 채 독자로 하여금 그 뜻을 직접 찾아볼 수 있도록(68p 참조) 위키디피아의 링크를 친절하게 남겨준다. 이 책에서 만나는 모든 용어를 처음 만나게 될지 모르는 독자에 대한 세심한 배려가 아닐 수 없다. 번역기간이 상당히 지체되었다는 말을 전해 들었을 때 생긴 의문은 책을 읽는 동안 이해와 감사가 함께 찾아왔다.이어 살펴보면, 초보자들도 그리고 경력자들도 이해하기 쉽도록 데이터베이스를 연결하고(4장), 애플리케이션을 구동하고 살펴보면서 각 레이어 별로 백업 계획(장애 대비)에 대한 언급도 놓치지 않는다.(5장), 데이터가 가치를 만들기 위한 측면에서 데이터베이스 엔진을 간결하고 강력하게 다룰 수 있는 방법으로 Spring Data를 소개한다.(6장), 데이터를 사용자와 상호작용할 수 있도록 템플릿 엔진을 활용하는 방법과 웹소켓 대화(Conversation)의 생성 과정을 보여준다.(7장), 다음에는 수많은 스레드를 감당하는 시스템 구성 방법으로 전통적인 모놀리틱 대규모 시스템 대신 활용되는 프로젝트 리액터와 웹플럭스를 사용한 리액티브 프로그래밍에 대한 섹션도 빠트리지 않았다. 사실 이게 주인공인 듯싶다.(8장).실제 프로덕션으로 운영하기 앞서 테스트에 대한 마크 헤클러(저자)의 의견과 함께 단위 테스트, 애플리케이션 테스트, 슬라이스를 차례로 안내하고(9장), 애플리케이션의 보안에 대한 안내에는 스프링 시큐리티에 대한 자세한 설명과 함께 구현법을 보여준다.(10장). 그리고 최근의 MSA 추세에 맞춘 최적화된 JAR 구성과 컨테이너 이미지 배포 내용까지 담았다. 인텔리제이(IDEA)에서 컨테이너 이미지를 만드는 방법도 상세히 나와있다. 찐 개발자다.(11장). 마지막으로는 그래도 걱정이 되었는지 우리가 흔하게 접한 명령형(Imperative)과는 결이 다른 선언형(Declative)으로 사용하는 리액티브 프로그래밍에 익숙하지 않은 개발자를 걱정하면서 한 챕터를 더 채웠다. 심지어 역자도 주석(Foot Note)을 적극 활용하여 독자들에게 원저자가 하고 싶어 하는 내용을 빠짐없이 전달하고자 노력하는 모습이 보였다. (337p, 주석이 본문보다 길다.)Maven, Gradle, REST, API, HTTP METHOD… 404. 502 놀이에 한참인 개발자들….익숙한 단어를 가지고 마치 은어처럼 즐기는 일은 행복한 일이지만, 이러한 것들을 처음 접하는 개발자라면, 용어가 어려운 것이 아니고 영어가 어려운 것도 아니고 우리 인간의 언어자체가 원래 어렵다는 말을 전하고 싶다. 특히 기술 서적에 서술된 내용을 정확하게 전달하기 위해 애쓴 역자의 노력은 마치 소스코드에 달린 상세한 주석처럼 각 페이지 하단에 풋노트로 상세히 적혀 있다. 지금까지 이렇게 친절한 번역서를 본 적이 없다. 49 페이지의 하단을 보자. 이는 번역서가 아닌 번역해설서의 지위로 봐도 무방하다. 내용은 선수들을 위한 내용이지만 입문자를 배려한 흔적이 곳곳에 담겨 있다. 그래도 책 구매가 망설여진다면 53, 358, 368p 하단을 보자. 무엇을 공부해야 하는지 알아야 하는지 혹시 놓친 부분이 있는지 친절하게 살펴준다. 입문자는 감사할 일이고, ‘이런 게 있었어?’ 하는 경력자라면 부끄러울 일이다. 내가 그러하다.알고 있었지만 정확히 무엇인지 몰랐던 IETF, RFC… 개발자라면 당연히 알고 있을 것이라고 생각하고 작성되는 수많은 중급 이상자 대상 문서들에서 볼 수 없었던 배려가 곳곳에서 드러난다. 마치 학교에서 수업(잘 듣지 못한 영어 수업)을 듣고 와서는 과외 선생님에게 교재를 친절하게 다시 설명 듣는 느낌마저 든다. 이 역자 분은 개발자 입문 혹은 학생들을 위한 용어 사전 스타일의 책을 출간한다면 입소문 만으로 ‘베스트셀러’가 될 거 같다.책에 대한 이야기는 그만하고 이제 책을 다 읽은 나의 생각을 적어본다.지금부터가 리뷰다. 여기까지는 그저 시동을 걸었을 뿐…..저자 Mark Heckler의 책 출간 관련 인터뷰 영상을 보면 커피를 사랑하고 비행기 타는 것을 좋아하는 것 같다. 인터뷰 중간중간 커피를 같이 들자며 미소를 지으며 카메라에 들이댄다. 자연스럽게 같이 커피를 마시게 되는 매력이 있다. 소스코드의 예시가 그렇다. 제시한 소스 코드의 도메인이 커피로 시작해서 비행기(에어크라프트)로 끝이 난다. 심지어 실시간 데이터를 전달하겠다고 보여주는 리액티브 관련 챕터에서는 무려 실시간 항공 데이터다.그의 트위터( @mkheck ) 에 보면 그가 얼마나 비행에 진심인지 알 수 있다. 더 장난끼 넘치는 사진이 많으나 ㅎㅎ 책의 권위(?)를 위해 이 사진으로 소개한다.일을 하지 않을 때는 사랑하는 아내와 함께 비행기를 타고 아름다운 경치를 바라보는 비행을 즐긴다 한다. 나도 그러하고 싶다. ‘혼자보다는 둘이 낫지 않은가’ 하며 그의 아내에 대한 사랑에 감탄하고 있을 때에도 그는 직업 정신을 끝까지 놓지 않았다. 비행을 할 때는 펼쳐지는 풍경에 포커스(이때 눈치를 챘어야 했다. ㅠ)를 맞춘다. 그러다 비행기 계기판이 피드백을 주면 바로 비행기 내부로 포커스를 옮긴다. 그것이 아날로그든 디지털이든 신뢰할 수 있고 실패하지 않는(피드백 수치의 정확성 확보를) 피드백이라면 우리는 그것을 믿고 비행기 운전을 할 수 있다고 이야기한다. 날씨가 좋지 않더라도 (피드백 값이 정확하다면) 비행기를 운행할 수 있다 하면서 신뢰할 수 있는 고품질의 소프트웨어라는 것이 얼마나 중요한지 특히 실패하지 않는 것의 중요성을 이야기한다. 로맨틱가이에서 프로그래머까지 순식간에 모드 전환하는 이 이야기는 스프링 부트가 데이터베이스에서 데이터를 찾아오는 단계를 제시하며 동시에 모든 일에는 백업 계획을 2~3단계 이상 유지해야 한다는 말로 이어진다. (본문 4,5 챕터 연계)스프링 데이터를 소개(챕터 6)할 때는 JPA, JDBC 같은 기본 외에도 NoSQL… 심지어 메모리 DB에서도 완전한 추상화를 기반으로 프로젝트가 빌드되는 놀라운 경험을 보여준다고 소개한다. 이어 데이터를 생성하는 면에서 유용하지만, 라이브만큼 훌륭한 데이터는 없다며 항공 데이터를 샘플로 하여 풀어가는 책의 내용을 보다 보면 이 사람은 성공했다는 느낌을 매우 강하게 받는다. 덕업일치를 넘어 삶의 즐거움까지도 책에 담아 표현하는 자유…이어지는 내용을 보면 테스트에 대한 언급이 있다. 이는 개발자들에게도 끊임없는 논쟁거리 중 하나인데 그가 생각하는 ‘기본 개념을 설정하는 것이 이치에 맞다’는 이야기를 한다. 아울러, 격리(Isolation)와 슬라이스(Slice)가 과도하면 안 된다는 지점에서 이를 근거로 테스트가 과하면 낭비가 발생한다는 말을 한다. 어떤 기능이나 범위를 테스트하기 위해 과하게 슬라이스(분리? 책을 읽고 나서야 이 부분을 이해했다. 9장) 하는 과정에서 오히려 낭비할 (공간? 시간? waste of them이라고 들리는데 뭐라는지 모르겠다 ㅠ ) 것들에 대한 우려를 나타냈다. 결국 어떤 것이 적합한(Suitable) 한 방법인지 묻는 말에 그는 ‘옵션을 가져야 한다.’ 이야기한다. (현답이로다.!!!)매우 구체적이고 작은 기능을 테스트하여 원하던 정확한 응답을 받아야 할 때, 혹은 워크스테이션 (서버나 시스템 단위로 해석하면 될까) 단위로 확장하고 싶을 때, 혹은 구체적으로 부분을 파악하고 싶을 때 문제가 발생한다면 다시 한번 생각해 보자. 확장 또는 축소에 대한 옵션을 쥐고 있어야 한다는 뜻으로 받아들였다.스프링부트(feat. 스프링)가 어떻게 동작되어야 하는가라는 질문에는 프레임워크 방식으로 하던가 혹은 전혀 그렇게 하지 않던가~ 로 해야 한다고 이야기한다. 그러기 위해 가장 먼저 설명한 것이 종속성 관리다. 스프링 부트의 주요 기능을 설명하며 스프링 부트가 고집을 부리는 (? 더 강한 말이 필요하지만 억지라는 말은 양보를 하지 않는다는 말이니 고집이라는 말을 써 본다. 제안?이라는 말을 붙이기에는 또 아무것도 안 하면 먼저 해버리는 면도 있으니 참 어려운 단어선택.) 규칙이 있더라도 사용자가 원하는 다른 방향을 언급해 주면 (간단한 설정 혹은 속성 입력) 완전히 유연하게 돌아간다. ( 경험해 보면 기절한다 ) 아울러, 스프링 부트는 프로덕션 수준의 애플리케이션을 매우 빠르게 실행하고 통합할 수 있지만, 수많은 자동 컨피규레이션 기능을 살펴보고 학습하면 ‘방대하다’고 소개하면서, 이는 개발자가 선택할 수 있는 수많은 것들이 함께 주어진다는 것이고 간단한 속성 변경만으로 또는 CLI에 의해 쉽게 작동된다는 것을 의미한다. 개발자에게 축복이다.마크헤클러는 책을 쓰는 과정을 설명하는 인터뷰의 말미와 본 책의 끝 부분에 같은 이야기를 담았다. 스프링 부트의 개념을 소개하고 시연을 통해 실체를 보여주면서도 매 순간 고민을 했다는 이야기말이다. 힘든 과정임을 설명하면서도 자신에게 허락된 시간이 확장된다면 그 작업의 시간도 같이 늘어난다는 이야기를 전했다. 3개월이 주어지면 3개월, 6개월이 주어지면 6개월이라는 이야기를 한다. 책의 범위를 두 배나 세 배로 늘리고 싶다며 책에 넣고 싶은 자료의 양은 항상 넘쳐났고, 시간이 아무리 많아도 시간이 충분하지 않았다는 말을 한다. 포함하고 싶었던 내용을 잘라내야 했다고 말하는 내용에서 그는 아쉬운 책이라기보다는 완성된 책을 위해서 어떤 고민과 어떤 결단이 있어야 현명한 방법인지를 알려주었다. 우리도 매 순간 같은 고민을 하지 않았나 하고 돌아본다. 예를 들면 이 책을 살까 말까. 읽을까 말까. 책 한 권을 완성하는데도 끝이 없는데, 읽는 우리가 단 하나의 책으로 지식을 완성할 수 있을까라는 고민을 해도 되는 것인가?라는 생각을 해본다. ‘꼭 전문가가 될 필요는 없으며 개념을 이해하고 어떻게 서로 맞춰지는지 이해하길 바란다’고 말한 그의 당부를 되새겨 본다.세줄 요약.+ 스프링부트를 알고 있는 모든 개발자는 반드시 읽어야 한다고 생각하는 책을 만난 것이다.+ 스프링부트 핵심 전문가가 꼭 필요하고 중요하다 판단한 핵심적인 내용을 담아 내놓은 책.+ 역자가 상세한 해설을 더해 한국의 개발자들에게 내놓은 선물 같은 책.언젠가 기회가 된다면 그와 만나 커피를 한 잔 하고 싶다. 유쾌한 농을 던지면서 개발자 후드티를 벗을 것이다. 영어 공부를 해야겠다.— 코로나라는 역병이 돌기 전 즈음 ‘Pivotal Summit 2019 Seoul.’ 행사를 통해 한국에 와 발표를 한 영상을 찾아보게 되었다. 그때 미리 알았더라면 꼭 찾아가서 ‘당신 참 쿨하고 멋진 개발자다.’ 라며 엄지 손가락을 멋지게 올려 주었을 거 같다. 영상을 보면 매우 유쾌하고 즐거운 분임을 알 수 있다. 등장하자마자 나는 조쉬 롱이 아니라고 하면서 후드티를 벗는다. 공항(에어포트)에서 그 둘을 혼동 한다(? 또는) 가끔 실수를 한다(? 아 못알아 듣겠다 진짜. 영원한 고통. 잉글리쉬 ~)는 농담이 여기서부터 있었다니 놀랍다. (하늘을 나는 것에 진심인 그다.) 발표주제는 이 책이 결국 도달하고자 했던 내용인 리액티브에 관한 발표이니 꼭 한 번 찾아보도록 하자. 유튜브를 바보 취급하는 사람이 간혹 있는데, 멋지고 쿨한 영상을 찾아보면 보석처럼 빛나기도 한다. (아주 가끔)

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
처음부터 제대로 배우는 스프링 부트
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
처음부터 제대로 배우는 스프링 부트
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
처음부터 제대로 배우는 스프링 부트
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실