JAVA 17, Spring Boot 3.0.2, Gradle, MySQL, Redis로 만드는
'오늘의코딩' 메일링 서비스

 

 

프로젝트 진행은 어떻게 할 것인가?


일단 Jira 에픽은 크게 11개로 구성되어 있는데 순서는 다음과 같다. 혼자 개발을 하는데 왜 Jira를 쓰냐고 묻는다면.. 나중에 팀프로젝트를 할 때도 필요한 습관이기 때문이다. 그리고 프로젝트의 전과정을 저번보다 상세하게 기록하기로 마음먹고 Jira 개발 순서에 맞춰 블로그를 작성하는 습관을 만들고 있어서라고 할 수 있다.

에픽은 내가 편한 순서대로 잡아놨지만 하위 작업들은 상황에 따라 스프린트에 같이 들어갈수도 있을 것 같다.

(그리고 그냥 내 기분이지만 Jira를 쓰니까 혼자하는 프로젝트지만 몬가 정해진 일을 분명하게 확인하고 하는 것처럼 직장에서 일을 하는 느낌이라서 마음에 들어서랄까...)

 

전체 목표 프로젝트 일정은 1~2달 정도로 잡고 진행될 예정이다.

 

프로젝트 전체 일정 프리뷰

 

Step2. 프로젝트 환경설정과 설계 부분은 Setting에 해당하는 부분인데 전반적으로 프로젝트 진행에 앞서 내가 정리하고 가고 싶은 부분들을 작성해두었다. 

회사에서 프로젝트를 진행하면서 보니까 제대로 이런 부분들이 잡혀 있지 않으면, 만들면서 요구사항을 뒤적거리고 있거나 올바르지 않은 ERD 설계로 불필요한 빠꾸?가 생길 수 있기 때문이다.

(로고도 미리 만들어두고 싶은데.. 흠.. 당장 생각나는게 없어서 천천히 만들어서 업데이트할 예정이다.)

 

프로젝트 setting 과정에 설정해 둔 하위이슈 항목들

 

 

기술스택설정


매 블로그 글 위에 작성해 둘 예정이지만 기술스택은 JAVA 17, Spring Boot 3.0.2, Gradle, MySQL, Redis를 사용하기로 정했고, 이후 readme를 쓰면서 아키텍처를 그려둘 예정이다. 글쎄.. 배포는 AWS 고민중이긴 한데 상황봐서 카페24나 둘 중에 하나로 선택할 것 같다.

 

왜 이런 기술 스택을 사용하는거죠?

 

  • 먼저 빠르게 개발할 수 있는 언어랑 프레임워크가 필요해서 익숙한 자바와 스프링을 사용했다. 
  • Java와 Spring Boot는 지금 사용될 버전보다 낮은 버전만 사용해봤기 때문에 이번에 프로젝트를 하면서 차이점도 알아두고자 한다.
  • MySQL은 사용량이 많은 RDB이고 역시나 나에게 익숙한 database이다.
  • 저번에 Redis 공부를 하면서, Redis와 Write-Through방식의 서버를 구축해보고 싶어 선택하게 되었다. 현재 프로젝트도 많은 양의 변화가 적은 db를 가지고 와서 뷰단에 뿌려주는 역할이 필요하기 때문에 in-memory 형식의 데이터베이스를 사용해보고 싶었다.
    (이 부분이 주된 원인!)

 

 

요구사항 정의서


사실 이 부분도 만들면서 많이 변형되고 증가할 것 같은 생각이 들지만 일단 큰 틀에서 필요한 기능들을 위주로 작성해봤다. 백엔드 기능을 위주로 작성했기 때문에 프론트 기능 부분들은 구상한 것에 따라 유동적으로 변경하면서 조정할 예정이다.

이번 프로젝트에서는 거의 모든 기능들을 관리자도 등록하고 삭제할 수 있도록 했다. 따라서 사용자만의 기능이라기보다는 공통 기능 비중이 높고, 서비스 관리에 필요한 측면들만 관리자 역할의 유저만 일부 관리할 수 있도록 할 예정이다.

 

구분 서비스 기능명  기능상세
공통 메인페이지 서비스 검색 필터  서비스 나열 조건 추가
    서비스 검색 서비스 검색
  상세페이지 서비스 신청 서비스 신청
- 서비스 시작일정 추가 가능
    서비스 취소 서비스 취소
    서비스 댓글기능 서비스 평점 및 댓글 기능추가
- 서비스 신청자, 등록자는 댓글 가능
    서비스 상세 수정 서비스 상세 내역 수정(설명 또는 내용 등)
- 신청해서 수강중인 자가 있는 경우 불가능
    서비스 삭제 서비스 삭제는 등록자에 한하여 가능
- 삭제시, 신청자에 안내사항 메일링 발송
    서비스 킵 킵해두고 싶은 서비스 즐겨찾기 가능
  로그인 소셜 로그인기능 소셜 로그인 연동(구글, 네이버 등)
  회원가입 소셜 연동 회원가입 소셜 연동 회원가입(구글, 네이버 등)
  마이페이지 회원 정보 수정 회원 정보 수정
    서비스 관리 서비스는 진행 중인 것과 관리하고 있는 서비스 카테고리로 분류되고, 진행도 표시바가 존재
    서비스 킵 취소 킵한 서비스를 보거나 취소가능
관리자 회원관리 회원목록 확인 회원 목록을 확인하고 진행중인 서비스도 확인가능
    회원 차단 관리가 필요한 회원 차단 및 활동 내역 블로킹
- 댓글 등 기록은 남기되, 볼 수 없게 처리
  통계 통계 회원등록, 서비스 등록, 진행사항 등에 대한 통계
  서비스내역 서비스 내역 메일링된 서비스 내역을 확인할 수 있는 페이지

 

 

ERD 작성


지금 요구사항 정의서에 정해진 부분들에서 필요한 릴레이션 위주로 작성했다. 추가적으로 필요한 부분이 있거나 변경사항이 있으면 업데이트할 예정이다. 

 

  • 사용자, 서비스 테이블
    상태 - 0 또는 1로 사용여부를 표시
  • 진행사항 테이블
    상태 - 신청만한 상태, 진행중, 종료 상태로 분류
  • 로그 테이블
    사용자의 역할 변경사항 또는 기타 다른 테이블 변경사항이 남지 않으면서 관리를 위해 기록에 남겨두어야 할 사항들

 

초기에 설정한 ERD로 최종본과 차이가 있다.

 

프로젝트 레이아웃 구상 및 로고 선정


프로젝트 레이아웃 구상

자세히 더 아름답게 만들지는 못했지만 Figma 정도는 이용할 수 있으니까 간단한 화면 구상만 잡아놨다. 추가적인 UI나 색감? 등은 더 만들면서 구체화할 예정이다. 

 

  • 메인페이지
  • 상세항목페이지
  • 상세항목에 디테일항목
  • 로그인/회원가입 페이지
  • 마이페이지
  • 관리자 회원관리 페이지

 

로고 선정하기

로고는 컴퓨터나 로그 로그, 개발자 이미지 등등을 담을지에 대해 고민했는데 여러가지 프로그래밍 언어의 로고를 생각해보면 그 개발자가 좋아하는(?) 것들을 담아 만들었다. 나도 코드의 'C'와 동물 이미지를 합쳐서 로고를 만들고 싶었다. 그래서 로고나 UI 참고할 때 내가 자주 보는 사이트 flaticon에서 마음에 드는 로고를 찾아 사용했다. 저작권은 상업적이나 개인 프로젝트로 가능한 로고이다.

로고 이미지에 따라 보라색, 주황색을 담은 뷰단으로 구성할 예정이다. 로고 이미지에서 색상을 추출할 때 사용한 온라인 툴은 TinEye Labs - Color Extraction Lab 여기를 참조했다.

 

 

 

오코

오늘의 코딩을 줄여서 오코라는 이름으로 서비스를 진행하려고 한다. 그래서 저 고양이 이름은 '오코'이고, 메일링 서비스를 전달하는 매개체로 사용하려고 한다 :)

 

 

댓글