아직도 프로젝트 세팅하는데 일주일이 걸린다고? 나는 1시간이면 돼!

SOUTH DARIA·2022년 7월 2일
49

오늘은 또 무슨 얘기하게?👀

안녕하세요.
오늘은 제가 지금 진행하고 있는 프로젝트에 대해서 주저리주러리 해보려고 합니다 :)
(이게 프로젝트가 맞나...)

저는 최근에 사이드 프로젝트를 자주 진행했는데요.
진행할 때마다 새로운 프로젝트를 생성하고, 기초 세팅을 하느라 시간이 걸리는 것이 너무 아까웠어요..!

사실 초기 세팅이 오래 걸리게 되면 팀원 분들이 이 프로젝트에 집중을 안 하게 되고, 무산이 되는 경우가 많았던 것 같아요.

내가 사용하는 환경은 비슷한데,, 할 때마다 이렇게 세팅을 해야할까..?
라는 생각이 들었고 << (제 친구가 추천해주기도 했구요..)

그래서 현재 진행하고 있는 저의 개발을 소개해드리려고 해요 !

초기 세팅만 되어있는 빈 프로젝트를 구성하자!

(깃허브 링크)

제가 자주 사용하는 세팅만 되어 있는 프로젝트를 생성했어요!
새로 프로젝트를 할 때, 클론만 받아서 사용할 수 있도록 말이죠😎

멀티 모듈 초기 세팅

멀티 모듈로 구성되어있는 프로젝트를 생성했구요.
보편적으로 사용하는 형태로 구현을 했습니다.

  • core
  • admin
  • api
  • consumer

특이사항으로는 >
저는 개발환경에서 DB 형상관리를 할 때, flyway를 선호하는 편이라 flyway까지 함께 구성을 했습니다.

flyway 세팅

flyway는 협업할 때, 서로 db 충돌이 있어 서버 실행이 되지 않는 것을 방지하는 데에 너무 좋은 것 같아요!

물론 잘못하면 테스트용으로 만들어놓은 저의 데이터가 빠이빠이 할 수 있지만..
정신만 차리고 sql파일로 생성해놓으면 다른 개발자들도 함께 테스트 데이터를 사용할 수 있으니깐요!

spring security 도입

그리고 웹 프로젝트를 진행할 때 거의 필수로 필요한, account 관련 내용!
회원가입, 로그인, 로그아웃 등을 구현을 했는데요.
해당 내용은 spring security를 이용해 구성했습니다.

또한 요즘 굉장히 많이 사용하는 외부 api를 사용한 회원가입, 로그인까지 함께 구현을 해놓았어요.
(현재는 google, naver만 구현해놓을 상황인데 추후에 facebook, kakao 까지 연동할 예정입니다!)
저는 개인적으로 spring security 구성을 할 때, 시간이 오래 걸리더라구요.
제가 spring security 잼민이라서..

database setting (feat.mysql)

현재 저 프로젝트는 mysql로 db 세팅이 되어있습니다 !
뭐.. 아직 특별하게 Hikari 세팅 같은 건 안 해놨습니다..
사유는요... 딱히 없고..

나중에 할거에요

redis cache 구성

저는 개인적으로 redis cache를 많이 사용하는 편인데요.
@Cacheable 어노테이션을 사용하는 것보다는 custom 해서 사용하는 것을 선호하는 편이에요.

custom하는 것이 저한테는 사용성이 더 편리한 것 같더라구요.

안에 코드는 이런 식으로 구성이 되어있고,
service를 선언해서 사용하고 있습니다 :)

테스트를 위한 thymeleaf 구성

위의 사진에는 없지만, test를 위한 thymeleaf 환경도 구성했습니다.
(구성이라고 할 것도 없지만요..)

백엔드 개발자여서 보통은 rest api를 개발하지만, security 등을 테스트할 때는 thymeleaf로 viewcontroller를 생성해서 하는 것이 편하더라구요?

그냥 제 나름대로의... 개발 루트입니다 ㅎㅎㅎ
Test 코드를 짜라 이것아

어떻게 이 개발을 진행하고 있니? 👀

혼자 진행하는 개발이지만, 저 나름대로 github에서 issue를 따서 진행하고 있어요.

세팅해야하는 것이 생각날 때마다 issue 생성해놓는 편이랍니다?
그래서 issue가 줄지 않아요..
(마치.. 업무를 끝내도 뒤에 업무가 기다리고 있는 것 같은 느낌..😭)

현재는 elasticsearch 구성과 kafka 구성, aws 구성이 남아있어요..
kafka를 도입할지, aws sqs 를 도입할지 고민하다가 제가 구성해본 적 없는 kafka 도입으로 결정했습니다..!

왜냐고 물어보신다면...

그냥 제가 해보고 싶어서요 😫

review 해주실 reviewer도 없지만..
그냥 pull request 도 올리고 github를 통해서 머지하고 있어요.


(reviewer 해주실 분 구합니다... 제 xx같은 코드를 지적해주실 분..)
시급은 없습니다

글을 마치며🥶

사실 오늘 글은 특별한 점이 딱히 없는 것 같네요 🥺
읽으시는 분들은 환경세팅하는 게 프로젝트의 묘미 아니야? 라고 생각하실 수도 있을 것 같아요.

초기세팅은 업무에서는 특히 쉽게 해볼 수 없는 부분이고, 저도 많은 것을 배워갈 수 있는 부분인 것 같다고 생각하고 있으니까요.

하지만... 귀차니즘과 같은 것을 계속 반복해서 하는 것을 싫어하는 저한테는 너무 소중한 repository가 될 것 같아요...

필요한 것만 쓰고 필요없는 건 날리고 또 세팅이 필요한 건 제 repository에 다시 세팅을 해서 꺼내쓰면 되니깐요 !
이 프로젝트를 생성하면서 많은 것을 서치해보고 배우게 됐답니다??
특히.. spring security.. (spring security에 대한 내용은 따로 글을 쓸 예정입니다:)

혹시라도 급하게 프로젝트를 진행하셔야하는 분은 제 프로젝트를 클론해서 진행하셔도 될 것 같아요 :)
(일부로 public 프로젝트로 해놨다능..)
세팅은 계속 추가될 예정입니다 !
리뷰나 의견 주실 분들은 남겨주시면 감사하겠습니다

밑에 링크 남겨놓을게요 :)

https://github.com/south-daria/spring-boot-boiler-plate-by-daria

profile
고양이와 함께 - 끄적끄적 개발하고 이씁니다 ~!

16개의 댓글

comment-user-thumbnail
2022년 7월 2일

헉,, 제목보고 혹시 제 얘기인가 해서 들어왔네요 ㅠㅠ 꿀팁 감사합니당😆

1개의 답글
comment-user-thumbnail
2022년 7월 3일

꿀팁이네요~~~

1개의 답글
comment-user-thumbnail
2022년 7월 4일

너무 유용한 글 잘 봤습니당~~^//^

1개의 답글
comment-user-thumbnail
2022년 7월 5일

헉... 진짜 유용한 글 잘 봤습니다 올려 주시는 글 항상 잘 보고 있어요!

1개의 답글
comment-user-thumbnail
2022년 7월 5일

유니 짱이다~

1개의 답글
comment-user-thumbnail
2022년 7월 7일

ㅇ ㅏ 귀찮아서 안하고 있는데.. 제가 하고싶은거 다하고 계셨네요 너무 부러워요 ㅎㅎ

1개의 답글
comment-user-thumbnail
2022년 7월 12일

새로운시도 멋집니다~~!

1개의 답글
comment-user-thumbnail
2022년 9월 12일

A 방해가 되니까 안 해요. 당신은 내가 당신이 원하는 것을 정확히 하고 있었습니다. 부럽다 ㅋㅋㅋ

1개의 답글