킹반인이 사이드 프로젝트를 시작하다. (1)
킹반인이 사이드 프로젝트를 시작하다 (1)
나는 여느 사람과 달리 킹반인이라 평범하게 회사도 다니고 평범하게 일상도 즐기고 있는 와중에
문득 평범하게 내가 주도해서 개발을 하고 싶다는 생각을 하게 되었다.
혼자 개발하고 혼자 고민하고 이런 시간이 많다 보니 실력도 잘 늘지 않는 것 같기도 하고 많은 경험을 하지 못하는 것 같아서 여러 사람들과 프로젝트를 하면 좋겠다는 생각으로 이것저것 검색하기 시작했다.
검색해보면서 사이드 프로젝트라는 개념조차도 처음 알았는데...😅
너무 혼자만의 세상에 갇혀있었나 보다..
따지고 보면 사이드 프로젝트가 이번이 완전 처음은 아니고 아는 사람들을 통해서 가볍게 프로젝트를 진행한 적이 있었는데, 회사에서 개발하면서 자바스크립트도 많이 만지게 되다 보니 스크립트가 궁금하여 바닐라 스크립트와 순수 HTML을 사용하여 프런트 프로젝트를 진행했었다. (참고로 나는 백엔드 개발자)
이전 프로젝트는 수동적이었다면 확실히 이번에는 능동적으로 프로젝트를 찾아 나섰고,
내 마음에 드는 프로젝트를 2개 정도 발견을 하게 되었다!
두근거리는 마음으로 연락을 해보니 이미 인원을 충당했다고... 하지만 이게 끝이 아니지~~
마음에 드는 프로젝트를 무려 2개나 찾아놨었기에 다른 프로젝트도 바로 연락을 취했다.
연락해보니 프로젝트 진행 도중에 도망가는 사람도 많아서 우선 미팅? 면접?
아무튼 만나서 이야기를 나누자고 하셔서 빠르게 약속을 잡았고,
팀장님(대표님)과 이야기를 나눠보니 프로젝트를 오래 준비했고 기획이나 설계도 많은 부분이 진행되어 있어
개발 시작만 하면 론칭까지 금방이겠다는 생각이 들었다. (내가 할 일이 많이 줄어든 느낌?)
백엔드 개발자가 나 혼자라 부담이 되긴 하지만 너무 재밌을 것 같아서 참을 수 없었다😝
그래서 개발은 어떻게?
나는 주로 회사에서 Java로 웹 개발을 하고 있고 다른 언어(Python, Kotlin 등)에 대한 경험은 거의 전무하다시피 없어서 이번 사이드 프로젝트에서는 어떤 언어를 채택할 것인가에 대한 많은 생각을 하게 되었다.
다른 언어도 배우고 싶지만 🙄 (맨날 생각만 하는 듯)
빠른 론칭을 목표로 하고 있어 새로운 언어를 공부할 시간은 없어 보였기 때문에
Java를 사용하되 사용해보지 않은 기능이나 기술들을 사용해 보기로 결심 했다!!
언어는 Java를 사용하기로 했으니 프레임워크를 선택할 차례인데 할 줄 아는 건 Spring 밖에 없다..
진짜 일반인이라 할 줄 아는 게 별로 없다ㅋㅋㅋ
그나마 비슷하지만 사용해보지 않은 Spring Boot를 선택하게 되었다.
뭐 가장 편하기도 하고😋
최대한 부담이 가지 않는 선에서 내가 사용해보지 않던 기술들과 기능들을 사용하고 싶었다. (이게 핵심!!)
그 외 여러 가지 선택사항들이 많이 있었는데 첫 번째로 고민한 내용은 로그인 보안 인증에 대해서다.
다니고 있는 회사가 솔루션을 가지고 있는 회사라서 이미 많은 것들이 개발이 되어 있는 상태로 로그인 인증/인가, 보안 관련 처리는 이미 다 솔루션에 적용이 되어 있었기 때문에 크게 접할 일이 없었지만
이번 기회에!
Spring Security와 JWT(Json Web Token)를 사용해 보려고 한다.
물론 둘 다 써본 적은 없다.
그래도 워낙에 구글에 자료도 많아서 구글링 전문가답게 구현은 가능했다.
그다음은 Database의 선택이었는데 가장 유명한 MySQL을 사용하기로 하고,
써보고 싶었던 JPA(Java Persistence API)를 적용하기로 결정했다. 회사에서도 Oracle을 사용 중이라 MySQL도 거의 처음이나 다름없나? 🤔
어찌 되었든 그러기로 했다.
그리고 이번 프로젝트의 특성상 매일 크롤링이 필요한데 수동으로 돌리자니 양도 많고.. 매일매일 하기도 귀찮고...
이건 분명히 자동화해야 내가 살고 다 같이 산다!!!
라는 생각이 들어서
Spring Batch와 Quartz Scheduler를 사용하여 Cron 표현식으로 일정 시간마다 크롤링하는 코드를 작성하였다.
이 둘도 처음 써본다... (다 처음 써본다 ㅋㅋㅋ)
크롤링은 Jsoup 라이브러리를 사용하였고, OPEN API 호출은 WebClient를 사용하였다.
개발 툴은 VSCode, IntelliJ는 사용은 해봤지만 익숙하지 않아서 많이 사용해본 Eclipse를 사용하였고,
현재 Eclipse와 Gradle 빌드 기반으로 개발 진행 중에 있다.
지금 프로젝트를 진행 중에 있고, 진행률은 20~30% 정도 진행한 것 같은데 아직도 갈 길이 멀다.
더 자세한 내용과 기술 스택들은 뒤에 이어질 글에서 좀 더 상세하게 작성해보도록 할 예정이다.