psdmer***
2020-05-29

이 책은 스프링 5 기본과 개념, 최신 업데이트된 프레임워크 전반을 단계별로 접근합니다. IoC 컨테이너 같은 스프링 기초부터 스프링 데이터, 스프링 AOP, 스프링 메시징, 스프링 웹 MVC, 스트림 API, 스프링 시큐리티, RESTful 웹 서비스, 반응형 프로그래밍, 함수형 프로그래밍, RxJava 2, 스프링 웹플럭스, 리액터 등 고급 주제까지 다룹니다.
이번에도 스프링이지만, 지금까지 본 책들과는 다른 스프링이다.
배워서 바로 쓰는 스프링 프레임워크
예전에는 자바를 배우고, 스프링을 배우고, 스프링 MVC 를 익히면 기본적인 스캐폴딩을 익힌 것으로 여겨도될만큼 많은 것을 할 수 있었다. 하지만 최근에는 스프링이 버전 5까지발전하는 과정에서 많은 기능들이 추가되고 단순한 웹 개발에서 벗어나 전문적인 백엔드 API 서버로의활용도를 높이는 한 편, 다양한 방면에서 두루 활용되고 있다. 그리하여어느 덧 스프링 자체로써의 Deep 한 활용과, 스프링 부트의Quick 한 활용의 두 갈래로 나뉘어져 지금까지 자바 개발의 한 표준으로써 큰 힘을 발휘하고 있다. 이번에는 스프링부트를 잠시 뒤로 하고 스프링 자체에 대해 쓰여진 책 ‘배워서바로 쓰는 스프링 프레임워크’ 라는 책을 살펴본다.
스프링은 이제 더 이상 Simple 하지 않다. 스프링을 경량 컨테이너라고 표현하던 시절은 이제 뒤로 하자. 컨테이너자체는 여전히 가벼운 편이지만 개발자가 배워서 활용할 수 있는 범위가 넓어졌다. 배워야 할 것들이 더많아졌다는 사실이다. 불과 수 년 전에 KSUG 세미나 등에서마치 개화기의 신문물처럼 쏟아져 소개되던 내용들이 이젠 스프링의 기본 스펙이 되거나 표준화 작업이 완료되어 활용되고 있음을 이 책을 통해 다시금확인하게 된다. 이 책 타이틀에 ‘Advanced’ 라는단어가 들어가야 옳았다고 생각한다. 실습 몇 번 하면 스프링을 마치 다 알게 되는 것처럼 제목을 지어놓고 책 지면을 전부 코드로 채워 놓고 따라하라는 식의 책만 보다가 이 책을 보게 되면, 디테일한 설명에감탄하고, 설명하기 어려운 부분을 ‘과감히’ 라 쓰고 ‘요령’ 으로피하기만 하는 책들은 더 이상 손에 집어 들지 않게 될 거라 믿는다.
우선 어떤 스프링 책을 보더라도 거쳐야 하는 환경설정, DI, AOP 에대한 이야기는 ‘다음’ 버튼을 연타하여 넘기자. 초반에는 너무나 당연한 내용들이 나온다. 스프링 책이니 당연하겠고, 물론 AOP 에 대한 설명도 충실하다. 아울러 이 책에 대한 칭찬을 하자면, 요즘 겨우 손바닥만한 작은사이즈로 한 페이지에 30라인도 안되는 부실한 내용으로 옆에 두고 타이핑을 하려고 하면 한 손은 책이넘겨지지 않게 붙들고 있어야 하는 불편함을 주는 책들이 많다. 그러나 이 책은 그러한 책들과 확연히다르게 시원 시원하게 넓은 페이지에 여백을 줄이고 내용을 꽉 채워 890 여 페이지를 단단하게 채워놓은 책이기에 결코 가볍지 않은 내용을 장점으로 이 책을 칭찬하고 싶다.
본 게임(?)은 1/3 지점에서부터시작된다. 스프링 데이터는 그동안 RDB 에서 SQL 를 작성하고 mapper 를 통해 작업하던 것들은 이제 버리고처음부터 JPA 를 소개하고 이어서 Querydsl 과의통합을 설명한다. 이어서 JMS 를 설명하고 특히 스케쥴링에대한 부분에 관심이 많은데, 개인적으로 RxJava 를 기본적인지식없이 맞아 들였을 때, 혼란을 겪었던 동기,비동기,Sync/Async, Cache 부분에 대한 설명이 상세히 기술되어 있다. 내지식으로 흡수할 수 있는가? 는 별개의 문제로 두고 말이다. 불과몇 년 전에 외계인이 지구에 와서 이야기 하는 것 같던 기술들이 이제는 기본서에 한 세션을 당당히 차지하고 있는 것들을 보면 새로운 분야라도 늘학습의 끈을 놓아서는 안되겠다는 생각이 다시금 든다.
한 때 스터디를 진행할 때 어노테이션에 대해서 너무 많고, 혼란스럽다는이야기를 들은 적이 있는데 이는 JSR 표준과 스프링 어노테이션, 그외 3rd 파트의 라이브러리에서 제공하는 어노테이션과 심지어 개인이 직접 만들어내는 어노테이션 등 출처가 다양해서 그러할진데, 가칭 어노테이션 닷 인포 같은게 있어서 ㅎㅎㅎ 검색하면소개해주는 웹사이트가 있으면 어떨까 하고 생각해본다. 그만큼 시간이 흘러감에 따라 알아야 할 것들이많은데, 이 책에서 각 세션마다 표 형태로 설명하고 있으니 기본서라고 생각하고 한 번은 꼭 완독을 하길바란다.
그 다음은 REST API 를 설명하고 이어서 RxJava 가 소개되는데, 반응형 스트림을 공부하면서 아직 용어가확립되지 않아서 스터디 구성원 사이에서도 용어를 통일하느라 애쓴 기억이 있는데 이번 책에도 어찌할 수 없는 언어 이질감이 들었다. 이 책에서 딱 하나 아쉬운 부분이라고 하면 이 부분이지 않을까 한다. 억지로단어를 직역하기 보다는 어쩌면 명사는 그대로 두고 발음을 적어 주는게 관심을 갖고 추가적인 학습을 하는 이로 하여금 구글 검색 키워드를 쉽게 도출하도록배려하는게 아닐까 하는 개인적인 희망사항을 적어본다.
이제 수단적인 모든 내용을 마무리하고 궁극적으로 그래서 무엇을 할 것인가에 대한 대답을 이 책 역시 마지막 세션으로할당했다. 데이터베이스를 연결하고, 서비스를 만들게 될 것이고, 스프링 부트도 짧지만 언급해준다. 이 책을 요약하자면 스프링을 처음접한 사람에게는 어울리지 않고, 스프링을 단순 경험에서 만족하지 않고 탐구하고 깊이 배우고 싶은 사람에게추천한다. 경험이 없거나 기초 지식이 부족한 사람은 책의 두께와 압도적인 많은 내용에 짓눌릴 것 같다. 시중에 가볍게 공부하라고 하는 책 많으니 경험을 해보고, 갈증을느낀 다음 이 책을 펼쳐 보길 바란다. 커피 같은 책이다. 처음엔이 쓴 걸 왜 마시는가? 하다가, 어느 새 옆에 없으면 가슴이답답하고 머리가 아프고 심장이 뛰지 않는 것 같은 고통을 주는 책… 커피 한 잔 옆에 두고 마음의 준비를단단히 하고 읽어보자.
내가 받은 고통을 여러분도 ………….. 후르흐흐흐 ~