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

 

마크 헤클러 지음

오시영, 서정대 옮김

 

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

 

 

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.

코틀린으로 리팩터링하기

덩컨 맥그레거, 냇 프라이스 지음

오현석 옮김

 

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

 

 

2023년 2월

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

 

새해 들어 첫 리뷰할 책은 "자바에서 코틀린으로" 이다.

주종목이 자바 스프링인 본인으로서는 미래를 대비해 꼭 필요한 책이라 할 수 있겠지.

그래서 리뷰를 신청하게 되었습니다?

 

2021년 2월에 처음으로 나는 리뷰어다 활동을 시작했는데, 벌써 햇수로 3년째이다.

과연 올해도 리뷰어가 될 수 있을까 싶었는데, 그래도 꾸준히 올린 덕분에 올해도 선정해 주신 것 같다.

(한빛미디어!! 항상 사랑합니다!!)

 

그렇다면 본인의 개발자 경력도 그렇다는 이야기인데... 과연 내가 3년 차 개발자인가 싶다.

 

아무튼. 리뷰를 시작해 보자.

 

"이 책은 코틀린을 써서 컴퓨터 프로그래밍을 짜는 방법을 가르쳐주지 않는다."

 

이 책을 공부하고자 하는 개발자님이시라면 책의 목적이 이렇다는 것을 알아야 한다.

 

이 책은 기존 자바 코드를 코틀린으로 변환하면서 코틀린 언어를 가르쳐주고, 기존 자바와 코딩 지식을 활용해 더 빠르게 코틀린을 채택하고 싶어 하는 자바팀을 위해 고안된 책이다.

 

동기가 충분하고 경험이 많은 자바 개발자는 대부분 코틀린 언어의 기능을 아주 빠르게 배울 수 있다고 저자는 생각하고 있다.

이 책은 코틀린의 장점을 살릴 수 있도록 사고방식과 설계방식을 조정하도록 돕고, 자바식 사고방식의 코드를 코틀린식 사고방식의 코드로 마이그레이션 하는 방법을 보여주는 책이다.

 

책이 어떻게 구성되어 있는지 보자.

전형적인 자바 프로젝트의 몇 가지 측면을 어떻게 개선할 수 있는지를 살펴보며,

'자바의 방식'에서 '코틀린의 방식'으로라는 패턴의 제목으로 정리한다.

 

코틀린을 사용하면 자바에서 사용하기 힘든 접근 방법을 쉽게 쓸 수 있게 하거나 자바에서는 흔히 사용되는 접근 방법을 사용하지 않게 권장함으로써, 여러분의 설계를 실수할 여지가 더 적고, 더 간결하며, 더 도구 사용에 유리한 방향으로 이끌어 준다.

 

결국엔 안전하면서도 두 언어가 섞인 코드 기반을 계속 유지해 나갈 방법을 사용해 점진적으로 자바를 코틀린으로 리팩터링 한다.

 

목차를 정리해 보자.

 

1 소개
2 자바 프로젝트에서 코틀린 프로젝트로
3 자바 클래스에서 코틀린 클래스로
4 옵셔널에서 널이 될 수 있는 타입으로
5 빈에서 값으로
6 자바에서 코틀린 컬렉션으로
7 동작에서 계산으로
8 정적 메서드에서 최상위 함수로
9 다중식 함수에서 단일식 함수로
10 함수에서 확장 함수로
11 메서드에서 프로퍼티로
12 함수에서 연산자로
13 스트림에서 이터러블이나 시퀀스로
14 누적시키는 객체에서 변환으로
15 캡슐화한 컬렉션에서 타입 별명으로
16 인터페이스에서 함수로
17 목에서 맵으로
18 열린 클래스에서 봉인된 클래스로
19 예외 던지기에서 값 반환으로
20 I/O 수행에서 데이터 전달로
21 예외에서 값으로
22 클래스에서 함수로
23 여행은 계속된다

 

자바의 방식에서 코틀린의 방식으로 라는 패턴의 제목으로 정리되어 있으며, 자바개발자라면 친숙한 용어들이 나열되어 있다.

 

자바에서 코틀린으로 넘어가는 개발자들은 코틀린을 대충 살펴보고는 쉬운 언어라고 생각하고, 코틀린 문법으로 작성한 자바 코드를 작성하기 쉽니다. 하지만 코틀린의 결에 맞게 코드를 작성하면 전통적인 자바 객체 지향 코드보다 더 안전하고, 유지 보수하기 쉽고, 더 간결하면서 보기 좋은 코드를 작성할 수 있다.

 

이 책을 통해, 자바식 사고방식과 다른 코틀린식 사고방식을 접하고 얻어갈 수 있다면 이 책을 읽는 개발자에게 큰 도움이 될 수 있는 책이다.

 

코틀린을 공부하고자 하는 자바 개발자분들이여. 이 책은 꼭 거쳐가도록 하자.

 

코틀린의 결을 얻어 갈 때까지.

 

Love Yourself.

+ Recent posts