본문 바로가기
서평활동

#그림으로 배우는 스프링 6 입문

by DanteMustDie 2024. 4. 15.
728x90

시작 전...

2월에 작성했던 요즘 개발자 서평이 베스트 서평으로 뽑혔다.

우연한 기회로 처음 작성 한 서평인데 바로 베스트라니 아주 감개무량하다. 🫡

3월은 파이널 프로젝트를 진행하느랴 바빠서 참여를 못했지만, 4월은 프로젝트 마무리 후 여유를 조금 되찾아서 다시 또 서평을 진행해보고자 한다. 디테일한 내용을 담지는 못하지만 이렇게 남기는 서평이 읽어보고자 하는 예비 독자로 하여금 꼭 도움이 되었으면 좋겠다.

최신 스프링부트 3버전의 입문서가 벌써..?

필자는 이번 파이널 프로젝트를 진행하면서 스프링부트 3.2버전을 선택했는데, 현업에선 버전업으로 인한 호환성 문제로 인해 쉽게 최신버전으로 올리지 못한다. 게임은 패치를 통해 버전업하면 이전 것도 되도록이면 다 지원되는데 무슨소리냐? 하겠지만, 이건 게임이면서 서비스를 접하는 이용자일때 이야기이고 회사에선 기존에 작성 된 리팩토링도 비용이고 일부 코드(클래스, 메서드 등)는 완전히 개편되면서 비권장 (deprecated) 되기 때문에 개발자 입장에선 여간 난처한 것이 아니다. 

스프링부트 3 자체 출시는 22년 12월인데 3.2버전은 23년 11월 말에 출시했다. 파이널 프로젝트 시작은 12월, 책 1쇄 발행은 24년 3월 29일이니 3개월만에 후딱 출시한 것이다. 보통 도서 출간은 오래 걸리는걸 감안하면 엄청 빠르게 나온 것이고 바뀐점이나 초보 개발자로 실무 입문을 하기위해 필요한 내용만 알짜배기로 나온 것이 아닐까? 하는 추측을 했다.

첫 인상은 그림으로 배운다길래 동화처럼 쉽게 쓰였을꺼라 생각이 들었다.
요즘 개발서 답게 부록 cd를 동봉하거나 하는게 아닌, 깃허브 링크를 제공해준다.

첫인상

이번에도 마찬가지로 옮긴이의 말을 먼저 살펴보았는데 '스프링이 어떻게 내부적으로 동작하는지 이해 필요... 이해하지 못해 의미없는 코드를 넣거나 오류를 유발하는 개발자를 많이 보아' 라는 상당히 뼈아픈 사실(?)들을 그대로 기록을 해둔 것을 보아 이 말에 공감이 되는 사람이라면 본인을 포함해 이 경험을 겪어본 사람들일 것이다.  이 문구를 보고 이 책은 분명 도움이 될꺼라 생각이 들었다.

실무 경험이 있다면 한번쯤은 겪어볼만한 이야기가 담겨있다.
필요로 하는 사전지식과 도서 작성 개발환경이 나와있다.
기본편에는 REST API, DI, 트랜잭션 ,타임리프 눈에 띄는 알짜배기 키워드들

[일러두기] 에서 기초 항목에 대해 무엇이 있을까 살펴 보았는데 책 두께에 비해 내용이 굉장히 실하다(?)

의존성 주입 (DI), 트랜잭션의 개념 및 트랜잭셔널 애노테이션, REST API의 개념과 백엔드 개발자여도 백오피스로 간간히 쓸 수 있는 타임리프 프론트 템플릿 엔진의 내용까지 꽉차게 나온다.

심화편에선 테스트코드, 예외처리 중심으로 디테일하게 나와있다.

이에 비해 심화편에선 실제 진짜 서비스 회사에서 필요로 하는 예외처리와 테스트코드를 중심으로 자세히 설명되어 있는 것을 알 수 있는데 특히 테스트 코드가 취업시장에서도 중요하게 여기는 요소중 하나이다. 이해하기 쉽게 풀어쓰자면 젠가로 탑을 쌓아가고 있는중인데 내가 참여해서 조심스럽게 하나씩 더 끼워넣는 것으로 비유를 들 수 있다.

즉, 기존에 운영중인 서비스에 내 코드를 끼워넣으면서도 동일하게 에러가 발생하지 않고 안정된 동작을 보장해야 하는데 그 보장 역할을 전부까진 아니지만 테스트코드가 상당 수 해준다. 프로젝트 진행하면서 시간에 쫓겨 많이 작성하진 못했지만 테스트 코드는 매우 여러방면으로 중요하다. 요즘 이러한 기술서의 표준 '개념서' 라인업이 ~ in Action 시리즈인데 여기서 JUnit in Action도 있다지만 아직 개정판이 나오지 않았다. 그런 점에서 최신 방식의 테스트 코드 작성법을 알 수 있다는건 큰 메리트라고 생각한다.

전에도 이야기 했지만 업계에 따라 전혀 준수가 되지 않는 대한민국의 현실도 어딘가는 있다.... 😥 그렇기에 이 책이 나오고 보다 준수되는 분위기가 되기를 바라는 것이 아닐까?

조금 더 살펴보자

첫 1.1을 열어보면 이 책의 메인인 '스프링' 이란 무엇인가? 의 대한 내용이 이해하기 쉬운 단어들로 잘 기술되어있다.

초심자 입장에서 스프링이라 하면 보통 스프링 프레임워크 하나만 있는 것으로 생각 할 수도 있는데, 스프링은 그 자체의 생태계가 있어 이를 '스프링 에코시스템'이라고도 부르며 그 중 하나가 스프링 프레임워크, 그 외 DB와 접점을 갖는 스프링 데이터, 보안관련인 스프링 시큐리티 등등이 있다.

이 스프링을 필두로 SPA, 웹 애플리케이션, MPA의 대한 정의와 설명이 나오고 이어서 MVC 패턴의 기본인 컨트롤러, 뷰, 서비스, 리포지터리 등의 설명이 나온다. 엔티티까지 나오는 것을 보니 JPA 기반임을 예측 할 수 있었다.

그 후 점점 내용의 심도가 깊어지는데, 이때 중요한점은 여느 기술서들도 마찬가지라 당연하지만 책 분량이 압축 되어있는 만큼 앞에 나온 용어 설명을 잘 기억하고 이해하고 있어야 뒤의 내용을 이해 할 수 있다는 것이다.

초반은 이정도만 살펴보고, 이제 중반을 둘러보았는데 가장 궁금했던 '그림으로 배우는' 이 얼마나 쉽게 되어있을까? 였는데 불행인지 다행인지 동화같은 귀여운 그림들로 되어있는 설명이 아닌 UML이나 플로우차트, 코드로 구성되어있는 설명들이다. (개발서에 이상한걸 기대하지 말자) 요즘은 JSP가 아닌 타임리프로 보통 처리를 하기 때문에 이에 대한 기초 문법과 스프링 서버와 데이터를 어떻게 주고 받는지 자세히 설명이 나와있다.

개인적인 생각이지만 웹서비스의 보편적인 플롯은 '게시판'이고, 이 글을 읽고있는 티스토리 공간도 게시판인점을 생각하면 게시판을 만든 후 데이터를 어떻게 가공하느냐가 기초이므로 이것만 할 줄 알아도 첫발은 성공적으로 떼는 것이라 주로 게시판을 예시로 많이 나오는 것 같다. 특수직종이 아닌 웹서버 개발자 신입이라면 보통 입사 후 많이 하는 것도 CRUD긴 하다.

이어서 많이 쓰이는 웹서비스 구조, 아키텍처 하나를 예시로 들어 자세히 상술되어 있는 것도 마음에 드는 부분이다. 처음엔 하나만 잘 익히기에도 빠듯하다 😥 아, 당연하지만 스프링 시큐리티의 대한 내용도 나와있다! DB Connection은 ORM을 바로 쓰진 않고, 가장 기본적인 JDBCTemplate를 활용해서 적혀있다. 이부분이 쪼..끔 아쉽긴한데 ORM도 추상화의 한편이므로 기초를 다루는 도서에는 안어울려서 안적지 않았을까? 싶다.

간단한 이미지와 실제 코드를 넣음으로 이해를 돕도록 작성되었다.
심도있는 구조( Architecture ) 까지는 아니지만, 기본적인 플롯에 대해서도 자세히 설명되어 있다.

종반에는 기대했던 테스트 코드의 대한 설명이 아주 꽉차게 나와있다. 특히 JUnit은 기초적인 레시피를 제공 할 뿐 편의성있는 테스트 코드를 짜려면 Mockito나 기타 라이브러리를 자아아알 써야 하는데, 이의 대한 설명도 만족스럽게 나와있다. 감히 말하지만 이전 서평에도 썼던 "요즘 개발자" 하려면 이 테스트 코드를 아주 잘 써야한다. 요즘 구인구직 정보를 봐도 우대사항에 테스트코드의 중요성을 보는 기업들도 있을정도니... 파이널 프로젝트 시작전에 이 도서를 먼저 볼 수 있었으면 테스트 코드의 대한 개념과 활용을 잘 이끌어 올렸을꺼란 생각이 들었다.

이 외로 보편적으로 많이 쓰였던 세션의 대한 이야기, 스프링 시큐리티의 시큐리티 컨텍스트에 대한 이야기도 나오며 마지막에 부록이 나오며 마무리된다. 종반에 다른 내용들도 좀 나오지만, 종반 분량의 절반이 거의 테스트코드가 아닌가? 싶다.

왠지 이 저자는 테스트 코드에 '진심' 일 것 같다.

소감

자바를 잘 알고 기본적인 웹의 흐름을 이해하고 있는 사람이 스프링을 활용한 제대로 된 서버 개발자로 입문 하고싶다 하면 이 책을 마음편히 접해서 읽어도 되겠다 싶을만큼 내용이 알차다. 특히 테스트 코드의 대한 내용이 아주 꽉차있어서 사실 이부분만 해도 책값 뽕뽑는거 아닐까 하는 생각이 든다.

물론 '바이블' 이라 일컫는 토비 스프링처럼 자바의 기초부터 아주 꼼꼼히 알려주는건 아니지만, 과유불급이라고 초심자 입장에서 너무 깊게 설명하면 오히려 머리 아프고 이해도 안되고 개발의 재미도 못느낀다. 그런점에서 이 도서는 그 밸런스를 적절하게 잘 잡은편이라 느껴진다. 책이 빨리 출간 된 것을 감안했을 때 디테일하게 스프링 부트 3.2에 대한 설명이 잘 녹아있는가? 하면 그렇지 못하지만 알아야 할 내용들은 알차게 나와있다.

애초에 제목부터 '입문' 이기 때문에 3.x에서 3.2로 업데이트되면서 어떻게 바뀌었고 내부 구조가 어떻게 되어있는가? 하는건 중요하지 않다. 이것은 입문 후 숙달되고나서 수준있는 개발자가 되면 스스로 알아보게 되어있다. 이 책의 중요한점은 최신 버전으로 세팅 했을 때 버전이 안맞아 책을 보고 따라 할 수 없는 그런 불상사가 발생하지 않는다는 점이고, 최신 버전의 스프링에선 이렇게 쓴다는 것을 빠르게 습득 할 수 있다는 점이다. 기껏 열심히 보고 따라쳤는데 내 문제가 아닌 환경 차이로 인해 에러가 발생하면 샘솟았던 공부욕도 팍 죽어버린다.

필자도 막상 프로젝트는 스프링부트 3.2를 썼지만 이것의 대한 활용과 이해를 제대로 하진 못했다 느꼈는데 이번 기회로 이 책을 완독하며 기초공사를 좀 더 튼튼하게 다져야겠다 하는 마음이 샘솟는다.

테스트코드.. 테스트코드!!  아 ~~~~~~~~~~ 테스트코드!!!!!!!!

 

"본 서평은 한빛미디어 <나는 리뷰어다> 활동을 위해 책을 제공받아 개인의 의견을 자유롭게 작성한 서평입니다."

반응형

'서평활동' 카테고리의 다른 글

#실전 레디스  (0) 2024.06.23
#요즘 개발자  (3) 2024.02.26