고객 요구 맞춤 백엔드 협업 프로젝트 회고록 / 이슈 관리 시스템 개발 프로젝트

김지민·2025년 3월 30일
0

회고록

목록 보기
9/11
post-thumbnail

이슈 관리 시스템 IssueMap

1️⃣ 개요

프로젝트 주제💡

: 개발 팀이나 조직 내 발생하는 버그, 기능 개선 요청, 일반적인 이슈를 체계적으로 관리할 수 있는 웹 애플리케이션 개발


프로젝트 목표🚀

핵심 기능 구현

  • 이슈 생성, 조회, 수정, 삭제, 상태 관리 등의 핵심 기능 구현

백엔드 시스템 설계 역량 강화

  • RESTful API 설계 및 데이터 모델링을 통해 견고한 서버 아키텍처 구축

팀 협업 기반 프로젝트 관리 경험

  • 명확한 역할 분담과 코드 리뷰 과정을 통해 협업 프로세스 이해

다른 팀과의 협업을 통한 기능 개발

  • 상호 피드백과 조율을 통해 품질 높은 소프트웨어 제공 및 개발 프로세스 최적화

  • 협업 과정에서 발생하는 문제를 효과적으로 해결하며, 전체 프로젝트 진행 사항을 공유하고 조율

데이터 보안 및 시스템 안정성 향상

  • 사용자와 시스템의 중요한 정보를 보호하기 위해 최신 보안 기술 적용

프로젝트 문서화 및 프레젠테이션 기술 습득

  • 프로젝트 계획, 요구사항, 설계, 테스트 결과 등의 문서를 체계적으로 작성 및 관리

프로젝트 내용📝

수행 방법

  • 요구 사항 정의
    • 고객의 요구 사항을 수집 및 분석하고, 기술 명세서를 작성
    • 비즈니스 및 기술적 요구 사항을 기반으로 프로젝트 범위를 설정
  • 설계 및 아키텍처 구축
    • 데이터베이스 스키마 설계 및 서버 아키텍처 정의
    • RESTful API 설계 및 문서화
  • 백엔드 개발
    • API 및 백엔드 로직 개발
    • 인증 및 권한 관리 시스템 구현
  • 테스트 및 배포
    • 자동화된 테스트 스크립트 작성 및 실행
    • 클라우드 환경에 배포
    • 성능 모니터링 및 최적화
  • 유지 보수 및 개선
    • 사용자 피드백을 수집하여 시스템을 개선
    • 신규 요구 사항에 따라 백엔드 로직을 수정 및 추가
  • 문서화 및 발표
    • 기술 문서 및 API 스펙 정의 작성
    • 프로젝트 결과물 리뷰 및 고객 프레젠테이션 준비

프로젝트 배경🖼️

  • 실무 환경에서의 API 연계 및 협업 프로세스를 경험하고, 팀 간 요구 사항 분석, 구현, 테스트, 통합 과정을 학습.

  • 이슈 트래커는 소프트웨어 개발 및 프로젝트 관리에서 널리 사용되는 도구로, 이를 구현함을써 실무에 가까운 경험을 쌓을 수 있음.


2️⃣ 일정

프로젝트의 시작일과 종료일📆

시작일: 2025년 1월 13일
종료일: 2025년 1월 24일


작업 계획🗓️

1주차

01/13 (월) : 프로젝트 주제 선정 및 요구사항 분석
- 프로젝트 주제 선정
- 프로젝트 요구사항 분석
- 요구사항 정의서 작성

01/14 (화) : 요구사항을 기반으로 백엔드 시스템 설계
- 데이터베이스 설계
- API 설계 (엔트포인트 정의, 요청 / 응답 스펙 명세)
- 보안 설계 (인증, 권한, 데이터 암호화 등)
- 필요 시 고객과 추가 미팅을 통해 설계 검토

01/15 (수) : 요구사항을 기반으로 백엔드 시스템 설계
- 데이터베이스 설계
- API 설계 (엔트포인트 정의, 요청 / 응답 스펙 명세)
- 보안 설계 (인증, 권한, 데이터 암호화 등)
- 필요 시 고객과 추가 미팅을 통해 설계 검토

01/16 (목) : 작성한 문서를 기반으로 백엔드 시스템 개발 및 테스트
- RESTful API 기반 백엔드 애플리케이션 개발
- 데이터 통합 및 가공 로직 구현
- 유닛 테스트 및 통합 테스트 진행
- 고객의 피드백을 수집하여 수정 / 개선

01/17 (금) : 작성한 문서를 기반으로 백엔드 시스템 개발 및 테스트
- RESTful API 기반 백엔드 애플리케이션 개발
- 데이터 통합 및 가공 로직 구현
- 유닛 테스트 및 통합 테스트 진행
- 고객의 피드백을 수집하여 수정 / 개선

01/18 (토) : 작성한 문서를 기반으로 백엔드 시스템 개발 및 테스트
- RESTful API 기반 백엔드 애플리케이션 개발
- 데이터 통합 및 가공 로직 구현
- 유닛 테스트 및 통합 테스트 진행
- 고객의 피드백을 수집하여 수정 / 개선

01/19 (일) : 작성한 문서를 기반으로 백엔드 시스템 개발 및 테스트
- RESTful API 기반 백엔드 애플리케이션 개발
- 데이터 통합 및 가공 로직 구현
- 유닛 테스트 및 통합 테스트 진행
- 고객의 피드백을 수집하여 수정 / 개선

2주차

01/20 (월) : 작성한 문서를 기반으로 백엔드 시스템 개발 및 테스트
- RESTful API 기반 백엔드 애플리케이션 개발
- 데이터 통합 및 가공 로직 구현
- 유닛 테스트 및 통합 테스트 진행
- 고객의 피드백을 수집하여 수정 / 개선

01/21 (월) : 작성한 문서를 기반으로 백엔드 시스템 개발 및 테스트
- RESTful API 기반 백엔드 애플리케이션 개발
- 데이터 통합 및 가공 로직 구현
- 유닛 테스트 및 통합 테스트 진행
- 고객의 피드백을 수집하여 수정 / 개선

01/22 (화) : 작성한 문서를 기반으로 백엔드 시스템 개발 및 테스트
- RESTful API 기반 백엔드 애플리케이션 개발
- 데이터 통합 및 가공 로직 구현
- 유닛 테스트 및 통합 테스트 진행
- 고객의 피드백을 수집하여 수정 / 개선

01/23 (수) : 시스템 최적화 및 문서화
- 성능 최적화 작업 (API 응답 속도 개선, DB 쿼리 최적화 등)
- 코드 및 시스템 사용 가이드 작성

01/24 (목) : 최종 결과물 발표
- 발표 자료 마무리 및 최종 산출물 제출


3️⃣ 프로젝트 팀 구성

팀 구성원들의 역할과 책임👑

공통 작업

API 문서화

  • 개발한 모든 API에 대해 명확하고 상세한 문서를 작성합니다.

기능 구현

  • 요구사항에 따라 각 기능을 설계하고 구현.

  • 비즈니스 로직이 정상적으로 동작하는지 검증하는 단위 테스트 및 통합 테스트 작성.

팀 커뮤니케이션 및 협업

  • 코드 리뷰 및 회고를 통해 코드 품질을 개선하고 팀원들과의 협력을 강화.

기능 개발

  • 최민우: 회원가입, 로그인 기능 구현
  • 강요한: 이슈 코멘트 기능 구현
  • 박정현: 이슈 검색 기능 구현, 외주 담당
  • 김지민(본인): 프로젝트 & 팀 관리 기능
  • 박진홍 : 이슈 관리 기능 구현

4️⃣ 기술 스택 및 사용 도구

  • 기술 스택
    • Java 17
    • Spring boot 3.4.1
    • Mysql
    • AWS (EC2, RDS)
    • Redis
    • JWT
    • OAuth2
    • CI/CD (Jenkins, GitHub Actions)
  • 사용 도구
    • IntelliJ IDEA
    • JUnit5
    • Git & GitHub
    • Postman
    • Swagger
    • Notion

5️⃣ 아키텍처

Project Structure

ERD

Flow Chart


6️⃣ 기능 설명

  1. 회원가입
    사용자가 이름, 이메일, 비밀번호를 입력하여 새로운 계정을 생성할 수 있다.
  2. 로그인
    사용자가 등록된 이메일과 비밀번호를 입력하여 계정에 접근할 수 있다.
  3. 계정 관리
    사용자는 이름, 이메일, 비밀번호 등 계정 정보를 수정하거나 삭제할 수 이싿.
  4. 프로젝트 관리
    사용자는 프로젝트 이름, 설명등을 입력하여 새로운 프로젝트를 생성하거나 삭제할 수 있다.
  5. 팀원 관리
    사용자는 특정 팀원을 초대하거나, 초대된 팀원에 대해 권한을 관리할 수 있다.
  6. 이슈 관리
    사용자는 이슈를 생성하고, 이슈의 상태를 관리할 수 있다.
  7. 이슈 검색
    사용자는 키워드, 상태, 생성일, 마감일을 기준으로 이슈를 검색할 수 있다.
  8. 이슈 코멘트
    사용자는 이슈에 코멘트를 추가하거나 기존 코멘트를 수정 및 삭제할 수 있다.
  9. 이슈 히스토리
    사용자는 특정 이슈의 변경사항을 조회할 수 있다.

7️⃣도전과제 및 해결책

트러블 슈팅

CASE:1

프로젝트를 진행중 팀원의 Swagger가 갑자기 동작하지 않은 문제가 발생하였음.
⬇️
구글링을 통해 원인을 조사하였지만, 원인을 발견하지 못하여 문제가 발생했던 팀원의 Swagger 버전을 변경하여 이슈를 해결할 수 있었음.

CASE:2

Swagger를 통해 서버에 API 요청을 전달하던 중, 특정 팀원의 요청만 서버에 정상적으로 전달되지 않는 문제가 발생하였음.
⬇️
해당 팀원은 ModHeader를 사용중이었으며, 헤더의 key 값이 사용자가 설정한 key 값과 일치하지 않아 인증이 거부되어, 요청이 서버에 도달하지 않은 문제였음. ModHeader에서 해당 key를 제거하여 이슈를 해결함.

CASE:3

RestTemplate를 사용하여 외부 API로 헤더에 토큰 값을 담아 요청을 보냈지만, 토큰이 정상적으로 전달되지 않는 문제가 발생하였음.
⬇️
외부 API로 요청을 보냈다고 생각하였지만, 내부 서버에서 해당 요청을 처리하고 있었고, RestTemplate를 통해 요청을 전달할 때 헤더에 토큰을 추가하는 방식으로 이슈를 해결할 수 있었음.

외주 협업 이슈

CASE:1

협업 관련 미팅 중 요구사항 정의서에 JWT 처리 로직에 대한 내용이 포함되지 않았다는 점이 확인되었고, 이로 인해 개발 진행 시 토큰 정보를 어떻게 처리할 것인지에 대한 이슈가 발생.
⬇️
개발사에서는 토큰을 처리하는 기능을 배제하여 개발을 진행하였고, 고객사에서 토큰을 처리하는 로직은 기능 구현이 완료된 후 추가하는 방식으로 이슈를 해결.

CASE:2

개발사에게 요청한 기능들이 외주 개발 기간을 초과하여, 인증 정보 처리 로직을 고객사에서 개발 해야 하는 이슈가 발생.
⬇️
개발사에서 추가 인원을 투입하여 빠른 시일내에 기능을 구현.


8️⃣ 결과 및 성과

프로젝트 수행 결과

TEAM API

목적

프로젝트의 이슈를 관리하는 멤버들을 등록하기 위해 팀 생성, 조회, 수정, 삭제 기능 구현

수행결과

PROJECT API

목적

이슈를 관리할 프로젝트의 생성, 조회, 수정, 삭제 기능을 구현

수행결과

9️⃣ 향후 계획

현직자 멘토링 후 고려사항

  1. Redis 토큰 저장 관련
  • 해당 프로젝트에서는 Refresh Token만 Redis에 저장 해서 로그아웃을 구현했지만 상황에 따라서는 Access Token만 Redis에 저장 하는 방법도 있다고 함 (금융, 의료, 민감 데이터 서비스처럼 토큰 강제 무효화가 자주 필요한 경우)
  1. 성능 관련
  • 쿼리 시간 및 어플리케이션 성능 테스트를 위해서 mysql의 걸린 시간만 확인 하는 것이 아니라 쿼리 발생 시점부터 끝난 시점에 시간 차이에 대한 log를 기록해서 추후 세부적으로 분석하는 것을 권장
  1. 메서드 및 네이밍 규칙
  • 변수, 메서드 명 같은 경우에는 일관성을 가지면 좋음

🔟 후기 및 배운 점

팀 의견

처음부터 팀 협업을 통해 API 문서화부터 핵심 기능 구현까지 서로의 역할과 목표를 명확히 하고, 각자 맡은 부분을 수행하면서 이를 해결해 나가는 과정에서 문제 해결 능력과 기술적 역량이 크게 성장했다고 느꼈습니다.
추가로 팀원들과의 지속적인 소통과 피드백을 통해 서로의 접근 방식을 공유하며 개발 지식을 더 많이 배울 수 있었습니다.

개인 의견

처음 협력 팀과 서로 고객이 되어 요구사항 명세서를 작성해보며 고객의 입장과, 서비스를 제공해주는 입장에서 새로 배우게 되는 것들이 많았습니다. 이번 경험이 추후 기업에서 업무를 진행할 때도 큰 도움이 될 것 같습니다.

협업 회고

  1. 요구사항 명세서 관련
    개발 진행 중에 맞춰가는 것도 나쁘지 않으나, 처음부터 명확하고 자세하게 작성하면 불필요한 수정과 논의를 줄일 수 있음. 초기 요구 사항을 충분히 분석하고 정의하면 혼란을 최소화할 수 있고, 명확한 API 명세와 함께 유효성 검증, 에러 처리 방식, 데이터 구조 등을 구체적으로 작성하면 협업이 더 원활해질 것으로 보임. 결과적으로 개발 속도와 코드 품질 모두 향상될 가능성이 높음.

  2. 일정 관련
    요구사항이 추가될 가능성이 있다면 미리 이 정보를 공유하고 대비할 수 있도록 하는 것이 중요하다고 생각됨. 개발 과정에서 변경 사항이 발생하는 건 자연스러운 일이지만, 사전에 이를 예측하고 팀원들과 공유하면 불필요한 혼란과 재작업을 줄일 수 있음. 또한, 유연한 설계와 확장성을 염두에 둔 개발 방식을 채택하면 요구사항 변경에 더 효과적으로 대응 할 수 있을 것으로 보임.


📌 마무리

이번 이슈 관리 시스템 IssueMap 프로젝트는 실무에 가까운 개발 환경을 경험하며, 요구사항 분석부터 설계, 구현, 테스트, 배포까지 백엔드 개발 전 과정을 체계적으로 수행한 프로젝트였습니다. 각 팀원이 명확한 역할을 가지고 책임감 있게 기능을 구현했으며, API 설계 및 문서화, 보안 처리, 테스트 자동화 등 실무에서 요구되는 다양한 기술을 직접 적용해봄으로써 실력을 한층 끌어올릴 수 있는 계기가 되었습니다.

특히, JWT 기반 인증 처리, Redis를 활용한 토큰 저장 및 로그아웃 구현, RESTful한 API 아키텍처 설계, 외주 협업 이슈 해결 경험 등을 통해 실무에서 발생할 수 있는 다양한 상황에 유연하게 대응할 수 있는 역량도 함께 키울 수 있었습니다.

또한, 협력사와의 요구사항 명세서 기반 협업, 트러블슈팅 과정, 그리고 팀 내부의 지속적인 코드 리뷰와 피드백 문화는 향후 어떤 개발 환경에서도 빠르게 적응하고 협력할 수 있는 기반이 되었다고 생각합니다.

🔭 향후 발전 방향

실시간 알림 기능: 이슈 상태 변경, 코멘트 등록 시 사용자에게 실시간 알림 기능 추가 (WebSocket, SSE 활용)

대시보드 시각화: 이슈 통계 및 프로젝트 진행 현황을 그래프로 시각화하여 관리 효율성 향상

모바일 대응: 반응형 UI 또는 모바일 앱 연동 기능 개발

DevOps 고도화: CI/CD 파이프라인 고도화 및 테스트 커버리지 자동 리포팅 시스템 적용

보안 강화: Refresh Token 재사용 방지, Access Token IP 기반 검증 등 고급 보안 정책 적용


🔗 참고 자료 및 링크

Project Repository
https://github.com/Maptrackers/IssueMap

profile
백엔드 개발자를 준비하는 삐약이 대학생에서 .. 취준생🐣

0개의 댓글