처음 배우는 스프링 부트 2

 

처음 배우는 스프링 부트 2 - 8점
김영재 지음/한빛미디어


왜 읽었나?

새로운 기술, 유행들이 넘쳐나는 세상이다. 하지만 내 작업 환경은 고인 우물 속이라 그 바깥 세상이 늘 궁금하다. 서점에서 스프링 배치 관련 책들을 보다가 OAuth2와 스프링 배치를 같이 다룬 책을 발견했다. OAuth는 소셜 로그인이라 하여 많이들 쓰고 있는 기술인 걸로 알고 있었는데, 구현까지 다룬다고 하니 훅 땡겼다. 스프링 배치도 스프링 부트에서는 어떻게 사용하는지, 멀티 스레드로 잘 사용하기 위해서는 어떻게 해야 하는지 궁금했다. 

내용도 게시판을 시작으로 확장해 가는 구조여서 쉽게 읽을 수 있을 것 같았다. 스프링 부트도 익히고, 덤으로 OAuth2와 스프링 배치까지 마스터할 수 있지 않을까 하는 기대감.


스프링 부트란?

"Just Run", 간단한 설정만으로 빠르게 실행할 수 있다. 주요 특징은 다음과 같다. 

  • 임베디드 톰캣, 제티, 언더토우를 사용하여 독립 실행이 가능한 스프링 애플리케이션 개발
  • 통합 스타터를 제공하여 메이븐/그레이들 구성 간소화
  • 스타터를 통한 자동화된 스프링 설정 제공
  • 번거로운 XML 설정을 요구하지 않음
  • JAR을 사용하여 자바 옵션만으로도 배포 가능
  • 애플리케이션의 모니터링과 관리를 위한 스프링 액츄에이터 제공

책을 읽고 난 후 스프링 부트에 대한 느낌을 한 단어로 표현하자면 '줄임말'이라고 하고 싶다. 스프링 프레임워크를 잘 알지만, 스프링 부트를 모른다면 두툼한 원서를 보며 개발하는 기분일 것 같고, 스프링 부트를 잘 안다면 잘 정리된 A4 용지에 정리된 내용을 보고 개발하는 기분일 것 같다. 

스프링 부트를 이용한다면 목적지에는 더 빨리 도착하겠지만, 누군가 만들어준 스프링 부트 환경에서 개발을 하는 상황이라면 답답할 것 같다. 개발은 빨리 하겠지만, 개발 능력은 오히려 퇴보하지 않을까?


OAuth2

OAuth는 토큰을 사용한 인증을 제공하는 표준 인증 프로토콜이다. 페이스북, 구글, 카카오는 '권한 부여 코드 승인 타입'을 사용하는데, 웹 서버 형태의 클라이언트를 지원한다. 이를 이용하면 회원 가입 없이 소셜 미디어 계정으로 인증할 수 있다. 

스프링 시큐리티에서 OAuth2를 지원하기 때문에 스프링 부트 시큐리티를 이용하면 쉽게 적용할 수 있다는 장점이 있다. 


REST와 RESTful

REST와 RESTful의 차이에 대해 정리할 수 있어서 좋았다.  

정의

  • REST는 웹의 장점을 극대화하는 통신 네트워크 아키텍처이며, REST의 구현 원칙을 제대로 지키는 시스템을 RESTful이라고 한다. 

REST의 목적

  • 구성요소 상호작용의 규모 확장성
  • 인터페이스의 범용성
  • 구성요소의 독립적인 배포
  • 중간적 구성요소를 이용한 응답 지연 감소, 보안 강화, 레거시 시스템 인캡슐레이션


RESTful 제약조건 

  • 클라이언트-서버(client-server)
  • 무상태성(stateless)
  • 캐시 가능(cacheable)
  • 계층화 시스템(layered system)
  • 코드 온 디맨드(code on demand)
  • 인터페이스 일관성(uniform interface)


스프링 부트 배치

멀티 스레드에 관해서는 기본적인 것만 간단히 다룬 것 같아 많이 아쉬웠다. 병렬 처리할 때 문제점과 해결 방법도 많이 다뤘으면 좋았을 텐데. 


시대에 뒤쳐지고 있구나

  • JSON을 위한 유용한 도구
    • 크롬 JSON 뷰어 플러그인, HAL 브라우저
  • 코드 다이어트를 위한 롬복 프로젝트
    • 자바 컴파일 시점에 특정 어노테이션에 해당하는 코드를 추가/변경하는 라이브러리이다. 코드 경량화와 가독성을 높여준다. 정말 훌륭하다. 

이렇게 훌륭한 도구들이 있는데도 몰랐다니, 부끄럽다. 롬복은 아주 예전에 이클립스 플러그인 중 하나였던 것 같은데. 그 롬복이 맞나? 너무 오랜 시간 고인 물에 머물러 있는 것은 아닌지, 끓는 냄비 속에 개구리가 내 모습은 아닌지 두려워졌다. 


다 읽고 난 후 

스프링 부트를 통해 손쉽게 만들어지는 서비스들을 보니, 놀랍다. '컴포넌트', '레디 메이드'와 같은 단어들이 떠올랐다. 자동차를 워낙 잘 만들어 놨으니, 자동차 내부를 잘 몰라도 운전만 잘 하면 목적지에 쉽게 도착할 수 있는 세상이 왔구나. 머지 않은 미래에는 프로그래밍에서도 자율 주행차 같은 기술이 나오겠지. 난 어디로 가야 하나?


댓글 쓰기

0 댓글