본 프로젝트는 삼성청년SW아카데미에서 교육과정의 일환으로 진행한 프로젝트 입니다.
프로젝트의 목적
Spring Boot를 이해하고 각종 디자인 패턴을 적용하여 단기간에 웹서비스를 개발한다.
페어프로그래밍을 통해 효과적인 분업을 진행하고 더 나은 자세를 배운다
프로젝트 계획
1.
프로젝트 기획을 통해 컨벤션 등을 정의한다.
2.
FE, BE
프로젝트 진행
프로젝트 기획
프로젝트 명세 및 분담
수립한 작업 목록을 Jira에 작성하고 스프린트를 생성하였다
일주일에 각 40시간의 작업을 할당했으며, 매일 아침 스크럼 미팅을 진행하였다
프로젝트 개발
Backend에서 담당한 역할은 다음과 같다.
MVC 설계
•
Entity와 DTO를 구분하고 상호 변환 유틸리티를 개발하여 객체의 캡슐화를 가능케 하였다
•
RestController, Service의 탬플릿을 작성하여 팀의 생산성을 향상시켰다.
•
Swagger를 통한 문서화를 독려하며 Frontend와 Backend 개발자 간의 소통을 용이하게 하였다
•
application.properties 설정 파일의 개발/배포 프로필을 분리하여 배포 자동화의 완성도를 높였다
JWT, OAuth
•
토큰을 통한 로그인 및 세션 관리를 위해 토큰 생성, 관리 로직을 개발하였다
•
소셜 로그인과 회원가입 기능을 개발하였다
웹소켓
•
비디오 플레이어의 현재 시청 정보를 동기화 하기 위해 소켓 서버를 구축하였다
Frontend에서 담당한 역할은 다음과 같다.
Page navigation 기능 개발
•
완성도 있는 스타일을 적용하고 커스텀을 가능케 하기 위해 Pagination 컴포넌트를 개발하였다
비디오 플레이어 동기화
•
Spring 서버와의 소켓 통신으로 연결된 클라이언트간의 실시간 비디오 동기화 기능을 개발하였다
배포 환경에서 담당한 역할은 다음과 같다.
Jenkins를 통한 CI/CD 구축
•
Jenkins를 통해 Docker 컨테이너를 생성, 제거함으로써 배포 환경과 파이프라인을 구축하였다
Docker container 빌드 스크립트 및 compose 스크립트 작성
•
런타임, 컴파일러 등 배포 환경을 구축하기 위해 Dockerfile 스크립트를 작성하였다
•
네트워크, 볼륨 바인딩, 개방 포트를 구성하기 위해 docker-compose.yml 스크립트를 작성하였다