저의 두번째 프로젝트는 처음으로 팀원들과 함께 협업을 진행한 프로젝트이며, 단순한 재미를 위해 시작한 것이 아닌 누군가에게 도움을 주고 싶은 마음에 진행한 프로젝트입니다,,,!!
가자지구 프로젝트는 끝 없는 이스라엘과 팔레스타인의 전쟁에서 피해를 입은 가자지구 아이들에게 응원메시지와 후원금을 보내 멀리서나마 응원할 수 있게 도와줄 수 있도록 구현한 서비스입니다.
가자지구 개요
주요 기능 |
• 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다이어그램
ㆍmessage : 사용자 작성한 메시지 관리
ㆍdonate : 메시지와 함께 후원한 후원금 관리
ㆍmember_ip : 사용자의 IP관리
ㆍadmin : 관리자 정보 관리
ㆍadmin_authorities : 관리자 권한 관리
ㆍhome_banner : Server Driven UI 데이터 관리
UI 및 기능
가자지구 - Main
가자지구 - 메시지 목록
가자지구 - 메시지 작성
성능 개선
느낀 점
가자지구 프로젝트를 진행하면서 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을 나눠서 사용하는 이유에 대해 몸소 느끼게 되는 계기가 되었습니다.
'Project' 카테고리의 다른 글
[TDD] API 응답속도를 개선해보자. (0) | 2024.08.13 |
---|---|
[Project] - Distance (1) | 2024.05.12 |
[Project] - 카페 체크인 (0) | 2024.04.05 |