프로젝트 개요
2024년 7월 2일부터 8월 16일까지 약 7주간 SSAFY에서 진행된 공통 프로젝트를 마무리했습니다.
프로젝트에 대한 간단한 소개를 드리자면!
- 프로젝트 주제: DIY에 특화된 온라인 취미 클래스 및 취미 공유 서비스
- 팀 구성: 5명
- 프론트엔드: 2명
- 백엔드: 3명 (1명이 인프라까지)
- 협업 도구:
- GitLab
- Jira
- Notion
- Mattermost
- 기술 스택:
- Frontend: React, Redux, Axios, JavaScript, WebRTC
- Backend: Spring Boot 3.3.1, JPA, MySQL, , WebRTC
- Infra: AWS EC2, Docker, Jenkins, Nginx
내 역할
- 클래스 관리, 리뷰 시스템, Q&A API
- 결제 시스템 구현:
- Toss API를 활용해 결제 기능 구현
- CI/CD 파이프라인 구축
팀 빌딩 및 프로젝트 준비
6월 마지막 주에 SSAFY에서 반 배정이 이뤄졌고, 저는 서울 1반에 배정되었습니다!
팀 빌딩은 온라인으로 진행되었으며, 기존에 알고 있던 분들과 함께 백엔드 팀을 구성했습니다.
공통 프로젝트 규정상 팀 내 비전공자가 2명 이상 포함되어야 했기 때문에 프론트엔드 담당 비전공자를 찾는 데 어려움이 있었습니다…!
따라서 사전에 컨택을 통해 팀 구성을 미리 해두는 것이 매우 중요하다!!
팀 빌딩이 어려운 경우 사무국에서 조정을 도와주지만, 사전 준비가 팀 빌딩을 완료하는 것이 조금 더 마음 편할 것 같습니다!
공통 프로젝트 부트캠프
프로젝트의 첫 주차는 부트캠프 기간입니다.
- 반미팅 및 OT:
- SSAFY 컨설턴트님과의 반미팅을 통해 프로젝트에 대한 전반적인 오리엔테이션을 받았습니다.
- 팀 그라운드룰 설정:
- 매일 아침 데일리 미팅 진행
- 명확한 주석과 Git 메시지 작성
- 하루 마무리 30분 전 회고
- 문제 발생 시 즉각 공유 및 해결
- 피드백 제공 및 대안(플랜 B) 제시
- 화내지 않기
- 일정은 미리 공유하기
- 소통 우선
프로젝트 진행
1주차 (7월 5일 ~ 7월 8일)
- 기획서 작성:
- 프로젝트의 핵심 목표와 주요 기능을 전달하기 위해 한 페이지로 구성된 기획서를 작성했습니다.
- 핵심은 처음 보는 사람도 이해하기 쉽도록 작성하자!
- 요구사항 명세서 작성:
- 사용자가 기대하는 기능과 요구사항을 작성했습니다.
- 기능 명세서 작성:
- 요구사항 명세서를 기반으로 각 기능의 세부 동작 방식과 들어가야 하는 내용 등을 정의했습니다.
- 요구사항 명세서보다는 더 구체적으로 작성!
- ERD 설계:
- 데이터베이스 설계를 진행하였습니다.
- 이번 ERD 설계에서 처음 해본 것은 반정규화를 통해 쿼리 성능을 최적화했습니다.
- 반정규화란?
- 데이터베이스의 무결성을 유지하면서도 성능을 개선하기 위한 방법
- 복잡한 쿼리를 단순화하여 시스템 성능을 향상하는 방법이라고 합니다!
- 반정규화를 이번에 처음 적용해 보았는데 확실히 쿼리가 간단해지는 것 같다고 느꼈습니다
2주차 (7월 9일 ~ 7월 15일)
- API 명세서 설계:
- 프로젝트의 핵심 기능을 RESTful API로 구현하기 위해 명세서를 작성했습니다.
- HTTP 메서드, API 경로, 요청/응답 데이터 형식, 상태 코드 등이 포함하도록 노션에 작성하였습니다
- 특히 신경 쓴 점!! 프로젝트의 복잡성을 고려해 DTO의 재사용성을 신경 써서 설계하였습니다!
- 백엔드 레포지토리 구조 설계:
- 저는 보통 레포지토리 구조를 설계하고 프로젝트를 시작하는데요!
- .gitkeep으로 프로젝트 구조를 잡고 시작합니다!
- 도메인별로 컨트롤러, 서비스, 리포지토리, DTO, 예외 처리 클래스를 구분하여 명확한 역할 분담을 가능하게 했습니다.
com ㄴ ssafy ㄴ ditto ㄴ domain ㄴ user ㄴ controller ㄴ service ㄴ dto ㄴ repository ㄴ domain ㄴ exception ㄴ post ㄴ controller ㄴ service ㄴ dto ㄴ repository ㄴ domain ㄴ exception ㄴ class ㄴ controller ㄴ application ㄴ dto ㄴ service ㄴ domain ㄴ exception ㄴ global ㄴ auth ㄴ security ㄴ common ㄴ config ㄴ error ㄴ infra ㄴ util ㄴ shared
3주차 (7월 16일 ~ 7월 22일)
- 초기 배포 진행:
- 프론트엔드 개발이 빠르게 진행될 수 있도록 백엔드 서버를 EC2에 배포했습니다.
- Docker를 사용해 애플리케이션을 컨테이너화
- Jenkins를 이용해 CI/CD 파이프라인을 구축하여 자동 배포를 설정했습니다.
- 배포를 처음 해보아서 조금 오랜 시간이 걸렸던 것 같습니다….
- 다음에는 더 잘하겠죠…?
4주차 (7월 23일 ~ 7월 30일)
- 프론트엔드 배포 및 HTTPS 적용
- 프론트엔드에는 SSL을 적용하고 백엔드에는 SSL을 적용하지 않아서 문제가 있었는데,,, 이런 실수하지 않도록 주의해 주세요…. 쭈굴
.
- 1차 테스트 시나리오 작성:
- 저희 반은 2번의 테스트 시간을 갖었습니다.
- 1차 테스트는 주로 회원 가입, 게시판 기능, 클래스 생성 및 관리 기능 등 핵심 기능에 대한 테스트 시나리오를 작성했습니다.
- 저희 조끼리는 찾지 못하였던 사소한 오류들도 테스트를 통하여 찾을 수 있었습니다!
- 만약 시간과 여유가 된다면 테스트를 받아보는 것 추천!
5주차 (8월 5일 ~ 8월 9일)
- 결제 API 구현
- Toss Payments API를 통해 결제 시스템을 구축했습니다.
- 2차 테스트 시나리오 작성:
- WebRTC 기반의 실시간 클래스 기능과 클래스 주요 기능에 대해 2차 테스트 시나리오를 작성했습니다.
- WebRTC 테스트 및 디버깅:
- 다음 테스트를 통하여 WebRTC에 여러 인원이 접속하였을 때 문제를 찾을 수 있었습니다. 그리고 사용자가 원활하게 서비스를 이용할 수 있도록 오류를 수정하였습니다..! (아마..?)
6주차 (8월 10일 ~ 8월 16일)
최종 발표 및 회고
공통 프로젝트의 최종 발표에서 우리 팀은 우수상을 수상하며 프로젝트를 성공적으로 마무리했습니다. 짝짝짝!!
DITTO(Do IT Together)
: DIY에 특화된 온라인 취미 클래스 및 취미 공유 서비스
좋았던 점:
- 매일 아침 팀원들과 데일리 스크럼을 진행하여 프로젝트 진행 상황과 오늘 할 일을 공유했습니다. 따라서 프로젝트를 넉넉한 시간 내에 마무리할 수 있었습니다!
- 프로젝트 과정에서 직접 서버 배포와 인프라 관리를 경험할 수 있었습니다.
- GitLab, Jira, Notion 등의 협업 도구를 활용해 볼 수 있었던 기회였습니다!
- 기획서, 요구사항 명세서, 기능 명세서 등 문서화 철저함!
- 프로젝트 중간에 사용자 관점에서의 피드백을 받아 개선해 볼 수 있었던 기회가 되었습니다.
- 프로젝트 내내 팀원들 간의 분위기가 매우 긍정적!!
아쉬운 점:
- 코드 리뷰와 리팩토링 작업을 신경 쓰지 못하였습니다..ㅜㅜ
- 프로젝트 일정이 촉박하여 코드의 가독성과 유지보수성을 충분히 고려하지 못한 것 같습니다…..
배운 점:
- 팀장 역할! 어쨌든 해냈다.?
- 배포 및 인프라 관리:
- CI/CD 파이프라인을 구축하고, 서버 배포를 직접 관리하면서 인프라 구성과 운영에 대하여 조금은 배운 것 같습니다!
향후 계획:
1. Jira를 활용한 애자일 프로젝트 관리:
- 다음 프로젝트에서는 Jira를 활용해 스프린트 계획을 세우고, 스프린트 별로 목표를 설정하여 프로젝트를 진행할 예정입니다..!
2. MSA 도입
- 다음 프로젝트에서는 MSA를 도입하여 시스템을 여러 개의 독립적인 서비스로 분리할 계획입니다.
3. 코드 품질 향상
4. 팀장 역할
5. 코딩 실력 향상
반응형
'SSAFY' 카테고리의 다른 글
[SSAFY] 특화 프로젝트 1주차 기록📝 (0) | 2024.10.04 |
---|---|
[SSAFY] 특화 프로젝트 부트캠프 기록📝 (3) | 2024.09.10 |
[SSAFY] 1학기 회고 (0) | 2024.07.01 |
[SSAFY] SSAFY TOGETHER 캠페인: 싸피 투게더 스낵으로 함께 성장하며 에너지 충전하기 (0) | 2024.05.18 |
[SSAFY] 자치회가 알려주는 SSAFY의 자치회 (0) | 2024.04.22 |