안녕하세요.
오늘은 제가 지금 진행하고 있는 프로젝트에 대해서 주저리주러리 해보려고 합니다 :)
(이게 프로젝트가 맞나...)
저는 최근에 사이드 프로젝트를 자주 진행했는데요.
진행할 때마다 새로운 프로젝트를 생성하고, 기초 세팅을 하느라 시간이 걸리는 것이 너무 아까웠어요..!
사실 초기 세팅이 오래 걸리게 되면 팀원 분들이 이 프로젝트에 집중을 안 하게 되고, 무산이 되는 경우가 많았던 것 같아요.
내가 사용하는 환경은 비슷한데,, 할 때마다 이렇게 세팅을 해야할까..?
라는 생각이 들었고 << (제 친구가 추천해주기도 했구요..)
그래서 현재 진행하고 있는 저의 개발을 소개해드리려고 해요 !
제가 자주 사용하는 세팅만 되어 있는 프로젝트를 생성했어요!
새로 프로젝트를 할 때, 클론만 받아서 사용할 수 있도록 말이죠😎
멀티 모듈로 구성되어있는 프로젝트를 생성했구요.
보편적으로 사용하는 형태로 구현을 했습니다.
특이사항으로는 >
저는 개발환경에서 DB 형상관리를 할 때, flyway를 선호하는 편이라 flyway까지 함께 구성을 했습니다.
flyway는 협업할 때, 서로 db 충돌이 있어 서버 실행이 되지 않는 것을 방지하는 데에 너무 좋은 것 같아요!
물론 잘못하면 테스트용으로 만들어놓은 저의 데이터가 빠이빠이 할 수 있지만..
정신만 차리고 sql파일로 생성해놓으면 다른 개발자들도 함께 테스트 데이터를 사용할 수 있으니깐요!
그리고 웹 프로젝트를 진행할 때 거의 필수로 필요한, account 관련 내용!
회원가입, 로그인, 로그아웃 등을 구현을 했는데요.
해당 내용은 spring security를 이용해 구성했습니다.
또한 요즘 굉장히 많이 사용하는 외부 api를 사용한 회원가입, 로그인까지 함께 구현을 해놓았어요.
(현재는 google, naver만 구현해놓을 상황인데 추후에 facebook, kakao 까지 연동할 예정입니다!)
저는 개인적으로 spring security 구성을 할 때, 시간이 오래 걸리더라구요.
제가 spring security 잼민이라서..
현재 저 프로젝트는 mysql로 db 세팅이 되어있습니다 !
뭐.. 아직 특별하게 Hikari 세팅 같은 건 안 해놨습니다..
사유는요... 딱히 없고..
나중에 할거에요
저는 개인적으로 redis cache를 많이 사용하는 편인데요.
@Cacheable 어노테이션을 사용하는 것보다는 custom 해서 사용하는 것을 선호하는 편이에요.
custom하는 것이 저한테는 사용성이 더 편리한 것 같더라구요.
안에 코드는 이런 식으로 구성이 되어있고,
service를 선언해서 사용하고 있습니다 :)
위의 사진에는 없지만, 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
헉,, 제목보고 혹시 제 얘기인가 해서 들어왔네요 ㅠㅠ 꿀팁 감사합니당😆