[서평] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스

인트로


세 번째 기술서 서평이다. 자바스크립트 책 두 권을 읽으며, 뷰와 앵귤러로 웹서비스 개발에 참여했다. 이후 운영 업무가 많아져 기술 공부에 다소 소홀했다. 여러 책을 뒤적인 이유도 있다. 어쨌거나 한 달여 만에 또 기술서 한 권을 읽었다.

깃허브 책을 뒤적이다가 파이썬 책을 뒤적였다. CODEF는 스프링과 뷰를 주로 사용하는데, 기술 스펙이 딱 맞는 책을 골라서 역시 뒤적였다. 이 책은 100페이지 정도 봤는데, 너무 재미가 없어 당황스러울 정도였다. 그러던 중 이 책을 만났다.

<스프링 부트와 AWS로 혼자 구현하는 웹 서비스>는 마소 기자 시절 만났던 이동욱님이 쓴 책이다. 동욱님은 나와 협업을 꽤 많이 했는데, 마소에 글을 2번 기고했고, 내 인터뷰 시리즈인 ‘개터뷰’에도 참여했으며, 마소콘 연사로도 함께했다. 여러모로 나와 인연이 있는 저자다.

특히, 개터뷰를 진행하며 저자의 매력에 빠졌다. 기자 시절 내가 가장 즐거웠던 일 중 하나가 또래의 멋진 사람들을 만나 이야기를 나누는 것이었다. 동욱님은 그 중에서도 특히 기억에 남는 개발자다.

이 책을 펼쳐 든 이유는 단지, 동욱님이 쓴 책이어서였다. 책을 쓰느라 고통받는 것은 알고 있었고, 마침 스프링을 공부해야 했기에 눈에 띄었다. 마침 커뮤니티 STEW에서 만들고 싶은 웹사이트가 생겼는데, 이 책은 코드부터 빌드, 배포까지 따라 할 수 있는 목차가 마음에 들었다.

책을 집어 든 것은 지인에 대한 호기심이었으나, 책장을 넘길수록 지금 내게 꽤 적절한 책임을 알게 됐다. 그렇게 이 책과 20시간을 함께했다.

서평


1. 이 책을 읽고 뭐가 나아졌나?

커뮤니티 STEW에서 간단한 웹사이트를 기획하고 있다. STEW 독서소모임을 위한 웹사이트인데, 멤버들이 모임에 참여하고, 서평을 등록하는 등의 시스템을 구축하는 것이다.

CODEF 홈페이지와 어드민을 만들며 프론트엔드를 경험했으니, 웹사이트 구축을 위해 백엔드 기술이 필요했다. 나는 자바 개발자로 스프링과 MySQL을 활용한 CRUD가 가능하지만, 초기 웹서버를 구축하고, 배포 및 운영하는 등의 지식은 부족하다. 때문에 내가 어떤 부분을 알고 있고, 어떤 부분을 더 공부해야 하는지 인지해야 했다. 즉, 백엔드에 관한 초급 지식이 필요했고, 이를 위한 초급 서적이 필요했다.

<스프링 부트와 AWS로 혼자 구현하는 웹 서비스>는 ‘이 책은 스프링 부트를 이용해 혼자서 서비스를 구축해 보고 싶은 분들을 대상으로 합니다’라는 문장으로 책을 시작한다.

나는 십수 개 모바일 SI 프로젝트를 경험했고, API 서비스인 CODEF를 개발 및 운영하는 개발자다. 하지만 혼자서 소프트웨어를 만든 경험은 도밍고컴퍼니 시절 만든 <도밍고 뉴스>가 전부다. 그것도 초기 웹서버 구축은 주변 지인의 도움을 받았다.

내가 만들 STEW 독서소모임 웹서비스에서 자바로 비즈니스 로직을 구현하는 것은 큰 무리가 없을 것이다. 처음부터 화려한 UI를 만들 생각은 없으니 지금 알고 있는 프론트엔드 기술만으로도 적절할 것이다. 다만, 백엔드 환경을 구축하고, 배포 및 운영하는 기술은 부족했다.

이 책을 읽고 내가 백엔드 어느 부분을 몰랐는지 알게 됐다. 나는 지금 AWS EC2를 사용하고 있지만, 리눅스 서버에 워드프레스 몇 개만 구동하고 있다. 책 후반부 AWS와 배포 관련 파트에서 Jar를 어떻게 배포하는 것이 좋을지 가볍게 훑어볼 수 있었다. 또한, 가벼운 웹서비스 아키텍처를 어떻게 구현해야 하는지 머릿속에 그릴 수 있게 됐다.

2. 실무에 당장 적용할 수 있었던 파트는 어디인가?

CODEF는 스프링으로 백엔드를 구현했다. API 서버와 웹서버 모두 스프링이다. 이 책을 읽고 당분간 스프링 환경은 내가 건들지 않는 게 좋겠다는 생각을 하게 됐다. 수십 개 골뱅이(어노테이션) 앞에서 나는 힘 없이 무너져내렸다.

스프링 부트 코드를 직접 타이핑하며 읽었는데, 어노테이션만 봐서는 정확히 어떤 기능을 제공하는지 쉽게 인지되지 않았다. 특히 JPA는 이 책을 통해서 처음 접했는데, JPA 관련 어노테이션은 사용하게 된다면 깊이 공부를 한 뒤 적용해야겠다 생각했다.

후반부 배포 자동화 부분 개념은 알고 있었다. 또한, CODEF는 젠킨스를 활용한 CI/CD를 적용했고, 현재 현업에서 사용하고 있기 때문에 이해가 어렵지 않았다.

다만, 직접 쉘 스크립트를 짠 적은 없기에 STEW 독서소모임 웹사이트를 구축하게 되면 다시 펼쳐볼 부분이다.

3. 놀랍지만, 전혀 안 쓸것 같은 파트는 어디인가?

심히 고민 중인데, 이 책의 주제인 스프링 부트 자체를 내 프로젝트 백엔드로 사용할지 모르겠다. 토이 프로젝트는 가볍게 시작해야 하는데, 스프링 부트가 스프링보다 가볍다지만 내 느낌은 여전히 무겁다.

책에 있는 샘플 코드만으로도 내가 만들고 싶은 토이 프로젝트의 대부분 기능을 제공하지만, 앞으로 지속해서 업데이트 할 웹서비스인데 골뱅이 앞에서 정신을 차릴 수 있을지 모르겠다. 또한, 대체재가 많은 만큼 역시 고민이 된다.

전혀 안 쓸 것 같진 않다만, 이 책 한 권만 봐서는 스프링 부트가 내 프로젝트에 적절한지 고민이 된다.

역시, 더 공부해야겠다.

함께 식사했던 동욱님과 나

4. 불편했던 파트는 어디인가? (오탈자 등)

‘-습니다’ 문체보다는 ‘-다’ 문체를 선호하지만, 읽는 데 큰 불편함은 없었다. 몇몇 코드에 오류가 있었는데, 깃허브 이슈로 오류를 보완하는 것이 오히려 인상적이었다.

다만, 편집에 약간 아쉬움이 남는다. 더 다듬을 수 있는 문장도 몇몇 보였지만, 책 사이즈를 왜 작게 한 것인지 의문이다. 가로 사이즈가 작아서 코드가 보기 불편하게 인쇄됐는데, 400페이지의 두꺼운 책인 만큼 사이즈를 좀 키우고 페이지를 줄였다면 어땠을까 한다.

물론 깃허브에 코드를 공개한 만큼 타이핑에 큰 어려움은 없었지만, 다소 아쉬움이 남는다.

5. 이 책을 누구에게 추천하고 싶은가?

기본적인 자바 문법을 아는 초급 개발자에게 추천한다. 특히, 학생 개발자는 이 책을 잡고 천천히 따라서 끝까지 타이핑해 보길 추천한다. 나 역시 스프링 부트 코드는 모두 타이핑했다. 깃허브에 코드가 모두 공개됐다지만, 직접 타이핑하며 익힌 감각은 결코 무시할 수 없다.

최근 출판된 책인 만큼 본문에 사용된 AWS 등 서비스 UI도 크게 바뀐 게 없다. 맘 편히 따라 하면 된다.

총평


프론트엔드 기술서 두 권, 백엔드 기술서 한 권. 먹어 치운 기술서가 기술력을 보증하진 않는다. 하지만 모르는 것을 알게 됐고, 뭘 모르는지도 알게 됐다. 중요한 것은 성장하는 환경과 공식을 만드는 것이다. 그런 면에서 이 책은 적절했다.

지인 찬스로 동욱님에게 독자 상담도 받았다. 나는 초급 기술서로 만족해선 안 되기에 다음 서적을 추천받고, 영상 등 또 다른 학습 방법을 물었다. 동욱님은 개터뷰 때도 느꼈지만, 무섭도록 꾸준한 사람이다. 마음 같아선 다음 레벨 기술서도 써줬으면 좋겠다.

주변 개발자에게 스프링 부트 외 파이썬, 노드 등 다양한 대체재를 추천받았는데 그나마 자바가 익숙하다는 점에서 스프링 부트가 여전히 내 토이 프로젝트 프레임 워크로 우선순위에 있긴 하다. 혹, <스프링 부트와 AWS로 혼자 구현하는 웹 서비스> 다음 레벨 서적으로 추천할 책이 있다면 댓글로 추천 바란다.

어쨌든, 오늘도 꽤 뿌듯하게 서평을 마친다.

Share:
오세용

오세용

글 쓰는 감성개발자 입니다. 책을 읽고, 글을 씁니다. 도밍고컴퍼니를 창업해 뉴스 큐레이션 서비스 도밍고뉴스를 만들었습니다. 소프트웨어 전문지 마이크로소프트웨어에서 기자로 일했습니다. 지금은 CODEF에서 소프트웨어 엔지니어로 일합니다.