ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [개인 프로젝트] boOKshelf를 뒤집어 엎기
    boOKshelf(소장도서관리pj) 2025. 4. 11. 00:28

    4월이 되었습니다.

    작년에 자바를 잘 모르는 상태로 무작정 구상을 시작했던 도서 소장 관리 웹 서비스 bookshelf.

    JPA까지 수업을 들은 후에 아예 다시 갈아엎고 다시 시작했습니다.

    어떤 문제가 있었고, 어떻게 해결하고 있는지 중간과정을 정리해보려 합니다.

     

    1. 일단 구현부터.

    ???: "이것저것 새로운 기술을 써보고~", "차근차근 문서로 작성하면서~"

     

    꿈이 거창했던 것 같습니다.

    처음부터 프로젝트의 전체를 바라볼 수 있는 관록이 전무하기 때문에, 서류는 서류대로, 개발은 개발대로 진행하게 되는 저의 모습을 보게 되었습니다. 오히려 문서화에 발이 묶여 개발도 미루게 되는 상황이 와서는 안된다는 판단 하에 가장 최소의 기능을 충족하는 서비스부터 일단 만들어보기로 했습니다.

     

    소장 도서 관리 프로그램은 아주 간단하게 세가지 기능을 충족하면 제가 원하는 기능을 제공하는 어플리케이션이 될 수 있습니다.

    1. 알라딘 api에서 책을 검색한다. (구현O)

    2. 소장하고 있는 책을 담는다. (구현O)

    3. 내 서재에서 담아둔 책을 조회할 수 있다. (검색도 가능해야 함) (구현중)

     

    기능이 너무 간단하다고 섣불리 키우려고 했다가는 이 서비스를 개발하기 시작한 가장 근본적인 목적을 벗어날 수 있기 때문에 일단 위 세가지 기능만을 구현하여 배포하는 것을 목표로 하고 있습니다.

     

    2. 최소로 배포

    글을 쓰는 현재(2025.04.11)까지는 이렇습니다.

    이 서비스를 개발하게 되면, 기능이 볼품 없더라도 꼭 직접 사용하고 싶었기 때문에 반드시 배포하고 싶었는데요,

    제가 선택한 배포 툴은 다음과 같습니다.

     

    프론트엔드: Vercel
    백엔드(java): railway

     

    vercel와 railway를 선택하게 된 이유는 아주 간단합니다.

    설정이 아주 쉽고, 자동화가 잘 되어있습니다. 두 서비스 모두 github repository를 연동해서 동작하기 때문에, 배포 자동화를 손쉽게 도전해볼 수 있습니다.

     

    Railway를 사용한 이유

    예전에 AWS로 작은 블로그 서비스를 배포했을 때, EC2와 RDS를 사용했었는데요. 비용이 혹시 이상한 곳에서 많이 나가지는 않을지, 까먹고 있다가 프리티어가 끝나서 비용이 왕창 청구될까봐, 구석에 있는 인스턴스를 혹시 제대로 안지워서 비용이 계속 청구될까봐 등등 그저 "비용" 걱정에 전전긍긍했던 기억이 나서 이번에는 간단하고 비용 고민을 조금 덜 수 있는 서비스를 찾아 배포를 시도하게 되었어요.

     

    railway 는 

    https://docs.railway.com/overview/the-basics

    위와 같이 project 안에 아키텍쳐를 보기 쉬운 ui로 나타내고 있어요.

    백엔드와 프론트엔드, database까지 하나의 서비스로서 동작하고 있음을 한눈에 보이도록 구성할 수 있습니다.

    dockerfile을 통해 한번에 아키텍처를 구성하거나, dockerfile이 없다면 서비스가 제공하는 ui로 서버와 아주 빠르게 database까지 열 수 있습니다.

     

    사용하면서 좋다고 생각했던 부분은, database와 java server를 같이 관리할 수 있다는 것이었는데요. 서버의 환경변수(Environmental Variables)를 설정할 때도 database의 변수를 참조하는 방식으로 사용할 수 있다는 것이 편리했습니다.

     

    3. 앞으로의 계획

    - 서재 검색 페이지 구성하기

    - 세션+쿠키 방식의 로그인에서 JWT로 로그인 유지 방식 바꾸기

    - 검색 속도 문제

    - api 결과를 가져와 데이터 필터링을 거쳤을 때, 데이터 개수가 변하는 경우 어떤 로직으로 정해진 개수만큼 반환하도록 할 것인지의 문제

    - 존재하지 않는 페이지 접근 시 페이지 블로킹

     

    현재 자잘한 에러들을 해결하면서 앞으로 조금씩 나아가고 있습니다.

    4월 셋째주 안에 3가지 기능에 대한 구현과 로그인 방식 변경 문제를 해결하고야 말 것입니다....!!!!!!파이팅!!

Designed by Tistory.