본문 바로가기
공부

[공부] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 실습 후기 - SpringBoot+AWS+Travis CI

by 개발하는 지토 2020. 7. 9.

얼마 전에 구입하고 리뷰를 작성했던(스프링 부트와 AWS로 혼자 구현하는 웹 서비스 리뷰) 책을 읽고 실습을 마쳤다.

 

이에 따른 후기를 간략하게 끄적여보도록 하겠습니다!!


이전에 작성했었던 글에서는 실습을 하기 전 출퇴근 동안 조금씩 읽어보던 책에 대한 내용을 가지고 리뷰를 했었다

이전 책 리뷰의 마지막 부분..

2주가 지난 지금은 책을 정독하고 실습 코드도 작성하여 배포까지 구축이 완료된 상태이다.(링크)

 

그래서 또 한 번 끄적이러 왔다 ㅋㅋ

 

이번 실습을 통해 정말 많은걸 느끼고 배우게 되었는데, 그중에서 가장 크게 배우게 된 것은 TDD, ORM(JPA), AWS 인프라에 관련된 학습인 것 같다.

 

TDD(Test Driven Development: 테스트 주도 개발)

이전까지는 테스트 코드를 작성하고 이에 따라 구현을 하는 것을 중요하게 생각하지 않고 개발을 해왔다. (그냥 코드 작성하면서 디버깅..)

 

그래서 지금까지는 가볍게 여겼던 테스트 코드 작성에 대한 부분을 다시 생각할 수 있는 계기가 되었다.

 

이는 TDD (Test Driven Development · 테스트 주도 개발) 이라고도 할 수 있으며 이 책을 통한 실습에서 작성한 수준은 아직 TDD라고 얘기하지 못할지 모르겠다. 하지만 이를 바탕으로 개발을 진행하는 방향을 생각해볼 수 있게 되었다.

 

JPA에 눈을 뜨다 (JPA: 자바 ORM 기술에 대한 표준 명세, JAVA에서 제공하는 API)

난 지금까지 스프링 프로젝트에서 쿼리 작성에 대한 부분과 SQL을 다룸에 있어 jdbc만 사용해왔고 JPA를 들어보긴 했지만 사용해본 적은 없었다.

 

이번에 실습 내용 중 스프링 부트에서 JPA로 데이터베이스를 다뤄보기라는 단원이 있었는데 이를 통해 JPA의 사용에 대해 알게 되었고 ORM이란 것을 알게 되었다.

 

ORM은 Object-Relation Mapping의 약어로 객체-관계 매핑이라고 한다.

 

이를 사용하면 객체와 디비의 데이터를 자동으로 매핑해주고 대표적인 장점으로는 sql 중심적인 개발(JDBC 사용)에서 객체 중심적인 개발이 가능해진다.

 

일단 좀 더 JPA를 사용하면서 익숙해져 봐야겠다. 

 

더 상세한 내용은 이곳에서 확인하길 바란다.

 

AWS(Amazon Web Services: 아마존 웹 서비스)

이번 실습을 통해 처음으로 AWS 인프라 구축을 하였다.

 

이전에도 파이썬으로 챗봇을 실행할 때 AWS의 EC2 환경에서 구동을 시킨 적은 있었는데 이번처럼 서버, 데이터베이스 환경을 만들고 웹서비스 배포까지 직접 해본 경험은 없었다.

 

덕분에 EC2에 서버 환경을 만들어보고, RDS에서 데이터베이스(MariaDB로 진행) 환경을 만들어보고, Travis CI로 배포 자동화를 구성하고 AWS S3, CodeDeploy와 연동도 해봤다.

 

이를 통해 AWS의 기본 사용법을 익히고 각 서비스 간의 연동법을 알 수 있었다.

 

최종적으로는 프로젝트의 소스를 깃허브 레포지토리에 푸시를 하면 Travis CI를 통해 자동 배포를 하도록 구성하였고, Nginx를 사용해서 실행되고 있는 웹서비스를 중단하지 않고 무중단 배포를 구현할 수 있었다.

 

그리고...

스프링 시큐리티와 OAuth 2.0을 통한 로그인 구현(네이버, 구글)도 진행해보았다.

 

이 뿐만이 아니라 자바에서 사용될 때는 서버 템플릿 엔진으로 사용하고 자바스크립트에서 사용될 때는 클라이언트 템플릿 엔진으로 모두 사용이 가능한 머스테치라는 템플릿 엔진의 사용법도 알게 되었다.

(아 물론 앞으로 개발하면서 머스테치를 당장에 더 사용할 것 같지는 않다..ㅎ)

 

그래서..?

책(스프링 부트와 AWS로 혼자 구현하는 웹 서비스)을 사고 1주일간은 정말 빠져서 책을 들여다봤다.

 

첫 주말 이틀 내내 실습을 진행해보고 오류가 난 부분이나 조금 의아했던 부분들을 한 번씩 더 해보면서 익히게 될 만큼 책의 내용이 나를 끌어들였고 무엇보다 쉽고 재밌었다.

 

그리고 이슈사항들이 있을 때 해당 책의 저자인 이동욱 님의 깃허브를 통해 이슈를 제기하면 빠른 피드백을 받을 수 있었던 점이 좋았던 것 같다.

 

학교 공부 외에 제대로 개발 공부를 시작한 지 2년 정도가 된 것 같고 개발자로 일을 시작한 지도 1년이 되었다.

 

그런데 되돌아보니 내가 직접 만들고 실제로 배포까지 진행했던 프로젝트(서비스)가 없었다는 걸 알았고 적잖은 충격에 빠졌었다.

 

어떻게 보면 시간만 보내고 있었던 건 아닐까.. 

 

그래서 처음에 쉽게 접근할 수 있다고 생각이 들었던 이 책을 구입하고 정말 열심히 들여다봤다.

 

결과적으로는 정말 많은 걸 얻을 수 있었고 서비스 개발에 대한 흥미도 더욱이 올라갔다.

 

(물론 그에 따라.. 직접 서비스를 하고 있는 회사로의 이직이 더욱이 마려워졌지만 말이다..)

 

나도 이런 기술들을 실제 업무에 사용하면서 이후에 발생되는 이슈들을 경험해보고 싶단 말이다!!라고 생각해본다..

 

마무리

아직 이 책을 접하지 않았는데 내 손으로 웹 서비스를 구현하고 싶은 모든 예비 개발자, 주니어 개발자에게 이 책을 추천한다. 

 

생각보다 쉽게 접근이 가능한 범위에서 설명을 하고 있고 어렵지 않은 실습 난이도와 잘 되어있는 이슈 제기 커뮤니티 등등..

 

책 한 권을 읽음으로써 도움이 되는 점이 분명히 많을 것이고 실제로 모든 것을 완료하였을 때 큰 성취감을 얻을 수 있을 것이다!!

 

물론 실습단계에서 끝나지 말고 더 알아보고 자신만의 코드를 작성해봐야 한다고 생각한다.

 

아무래도 책 한 권으로 모든 내용을 담다 보니 깊이 있는 내용은 아니지만 내 지식의 넓이를 키울 수는 있었다.

 

그래서 앞으로는 넓게 키워놓은 지식을 따라서 깊게 파보려고 한다.

 

 

 

 

 

 

저자인 이동욱 님께 감사드리며 이만 글을 마친다.

 

 

실습 전체 소스

댓글