Spring/괴발개발

[괴발개발] 덕지덕지 개발記 (#1)

오잎 클로버 2023. 2. 19. 13:04
728x90

기존 덕지덕지를 전부 갈아엎고 다시 개발할 예정이다. 1년전 코드를 다시 보니 너무 개판이고, 왜 사용하는 지도 제대로 알지 못한 채 그냥 막 사용했던 기억이 있어, 필자의 경험상 제대로 알지 못하고 사용한 경우에는 다시 새롭게 만드는 편이 귀찮더라도 오랫동안 기억에 남기 때문이다. 그리고 더 오랫동안 기억에 남기기 위해 데이터베이스 설계, 아키텍처 설계 등 개발을 하며 발생하는 거의 모든 내용들을 기록하고자 한다.

 

개발 목표

"간단한 메모만 하고 싶을 때 사용하는 원격 메모지 서비스"

 

개발 내용

유저 기능

  • 로그인 (Google Login, Kakao Login) 전부 OAuth
  • 유저 기본 정보 수정
  • 메모지 작성 (수정, 삭제 포함)
  • 배경 화면 변경
  • 로그아웃, 회원 탙퇴

메모지 기능

  • 메모지 색 변경
  • 글씨체 변경
  • 공유
  • 날짜 작성

알림 기능 (예정)

  • 메모지 날짜 알림 전송

 

화면 구성

메인 화면

  • 로그인을 하지 않았더라면 로그인 페이지 이동
  • 로그인을 하였더라면 메모지 리스트 페이지 이동
  • 메모지 작성 페이지 이동
  • 유저 정보 페이지 이동

로그인 페이지

  • 구글 로그인, 카카오 로그인 둘 중 한가지를 택해서 로그인
  • JWT 기반 로그인

메모지 리스트 페이지

  • 본인이 작성한 메모지들을 전부 조회
  • 메모지 클릭 시, 메모지 수정 페이지 이동

메모지 수정 페이지

  • 메모지의 글씨체 변경
  • 메모지 삭제
  • 메모지 내용 수정
  • 메모지 날짜 수정
  • 메모지 공유

 

사용할 기술 스택

백엔드

  • Spring Boot (Spring Framework 보다 간편하게 AutoConfiguration이 되어서 사용)
  • Spring Batch (삭제될 데이터들 일괄 삭제를 위해 사용)
  • Spring OAuth Client (OAuth 를 보다 편하게 사용하기 위해 사용)
  • Spring Validation (request 데이터의 검증을 하기 위해 사용)
  • Spring Web (REST API 로 개발하기 위해 웹 라이브러리)
  • Spring Configuration Processor (설정 파일들을 보다 쉽게 관리하기 위해 사용)
  • Spring REST Docs (테스트를 통해 생성하고, 코드를 추가로 건드리지 않기 위해 사용)
  • Spring Boot Actuator (추후 배포를 하게 된다면 관리를 하기 위해 적용)
  • Spring Security (리소스 보안과 URI 접근 제한을 위해 사용)
  • Spring Data JPA (SQL 중심 개발에서 객체 중심 개발을 하기 위해. 상황에 따라 native-query)
  • Lombok (Java 코드를 어노테이션으로 편하게 자동완성해주기 위해)
  • postgreSQL (대용량 오픈소스 데이터베이스)

프론트엔드

  • React
  • axios
  • react-calendar
  • react-dom
  • react-icons
  • react-redux
  • react-router-dom
  • react-scripts

 

위와 같이 세팅하여 스프링 gradle.build 를 해보니, 다음과 같은 예외가 발생했다.

org.asciidoctor.convert 플러그인을 찾지 못한다고 한다. 해당 플러그인은 RESTDocs 에서 필요한 플러그인으로 알고 있다. 

해결 시도

현재 asciidoctor 플러그인의 버전은 2.2.1 이다. 혹시나 버전의 문제인 경우도 있기에 버전을 임의로 바꿔보았다. 

id 'org.asciidoctor.convert' version '1.5.9.2'

로 임의로 수정을 했더니 정상 작동하였다. 그렇지만 스프링 버전과 잘 이루어지는 버전이어야 예기치 못한 오류들이 발생하는 것을 최대한 막을 수 있다. gradle plugin 공식 홈피에 찾아본 결과, spring initializer 에서 자동 완성해주는 버전이 최신 버전이 아니라고 한다. 2.4.0 이 가장 최신 버전으로 업그레이드를 해주어 문제를 해결하였다.

 

 

이상입니다.