Project

[Project] - 가자지구

EJUN 2024. 4. 5. 23:48

저의 두번째 프로젝트는 처음으로 팀원들과 함께 협업을 진행한 프로젝트이며, 단순한 재미를 위해 시작한 것이 아닌 누군가에게 도움을 주고 싶은 마음에 진행한 프로젝트입니다,,,!!

 

가자지구 프로젝트는 끝 없는 이스라엘과 팔레스타인의 전쟁에서 피해를 입은 가자지구 아이들에게 응원메시지와 후원금을 보내 멀리서나마 응원할 수 있게 도와줄 수 있도록 구현한 서비스입니다.

 


 

가자지구 개요
주요 기능
JWT 활용한 관리자 인증, 인가 구현
메시지 작성 및 조회
후원금 관리
욕설 필터링
• IP 활용한 좋아요, 신고하기 제어
개발 기간
2023.10 ~ 진행 중
참여 인원
• 백엔드(1명), 프론트엔드(2명), 기획자(1명), 디자이너(1명), 마케터(1명)
Skills JAVA, Spring Boot, JPA, ,Junit 5, NCP, Mysql, Docker, Docker-compose, Query dsl, CI/CD
담당 역할 1. DB설계
a. Query dsl 통한 동적 쿼리 작성
2. REST API설계
a. 응원메시지 작성, 조회 API
b. 후원금 조회, 수정 API
c. 로그인, 회원가입 API
. 사용자 IP관리 API
3. JWT 로그인 방식 구현
a. JWT로그인 방식을 통한 관리자페이지 관리 및 인증, 인가 구현
4. Deployment
a. NCP 통한 서버 배포
b. Docker 통해 이미지 생성 및 Docker-compose 활용해 배포
c. CI/CD 통한 자동화
5. Cumstom lib
a. 커스텀한 라이브러리를 활용해 욕설 필터링 구현
6. Custom Exception
a. 예외처리를 목적에 맞게 커스텀에 예외처리
Github Link github.com/project-GAZA/GAZA-server

 


가자지구 구조
가자지구 ERD

ERD다이어그램

message : 사용자 작성한 메시지 관리

donate : 메시지와 함께 후원한 후원금 관리

member_ip : 사용자의 IP관리

admin : 관리자 정보 관리

admin_authorities : 관리자 권한 관리

home_banner : Server Driven UI 데이터 관리

 


UI 및 기능
가자지구 - Main

 

Main page

 

가자지구 - 메시지 목록

 

메시지 목록 page

 

가자지구 - 메시지 작성

 

메시지 작성 page

 


성능 개선

성능 개선


 

느낀 점

가자지구 프로젝트를 진행하면서 CI/CD를 처음으로 구현을 해보았습니다. 기존에 작성한 CI/CD파일은 CI에 성공을 하게 되면 자동으로 CD까지 진행을 하는 로직으로 작성을 하였습니다.

하지만 Docker를 통해 새로운 이미지를 빌드하고 CI/CD를 성공하였는데, 문제는 dev서버가 작동이 되지 않아 main서버까지 다운되면서 멘붕이 온 적이 있었습니다.

이유를 알아보니 제가 로컬과 서버의 환경이 다르다는 점을 잊고 있었다는 것이 핵심이었습니다.

우선 dev서버는 운영에 영향이 없지만, main 서버가 다운되는 것은 정말 심각한 문제라는 점을 알았고 CI/CD파일을 수정하였습니다.

저의 CI/CD파일의 첫번째 문제는 CI가 성공하면 자동으로 CD를 하는 것이었습니다.

그래서 CI와 CD를 하는 파일을 분리시켜 첫번째 문제를 해결하였습니다.

그 다음 문제점은 CD를 할 때 dev와 main 둘 다 동시에 배포가 진행되는 점이었습니다.

Dev서버를 만든 목적이 실서비스에 배포 전 테스트를 진행 후 이상이 없다면 main서버에 배포를 하기 위한 목적으로 생성하였습니다.

그래서 Trigger를 통해 개발자가 직접 어느 서버에 배포를 할 것인지 선택할 수 있도록 CD파일을 제작하여 두번째 문제점을 해결하였습니다.

이번 프로젝트를 통해 서버 운영에 대한 방법을 배우며 dev와 main을 나눠서 사용하는 이유에 대해 몸소 느끼게 되는 계기가 되었습니다.
CI / CD

 

'Project' 카테고리의 다른 글

[TDD] API 응답속도를 개선해보자.  (0) 2024.08.13
[Project] - Distance  (1) 2024.05.12
[Project] - 카페 체크인  (0) 2024.04.05