22/03/01 ~ 22/06/15 너와 나의 여행 다이어리 서비스라는 주제로 교내 팀 프로젝트를 진행했습니다.
안드로이드 개발자 4명, 백엔드 개발자 6명, 디자이너 2명으로 나누어 개발을 진행했습니다.
이전 프로젝트와는 다르게, 백엔드 개발자가 6명이나 되다 보니 이번에는 적은 분야를 조금 깊게 개발해보고 싶다는 생각이 들었습니다.
총 12명이서 프로젝트를 진행하다보니, '협업'이 무엇보다 중요했습니다. 서로서로의 진행사항들을 공유하고, 이슈사항이 있으면 해결하고, 소통하는 작업들에 초점을 맞췄습니다.
팀원들중에 이전에 프로젝트를 진행해본 경험이 있던 팀원들이 있어서, 프로젝트가 체계적으로 진행되었습니다.
일감관리 툴에는 Jira, Redmine, Notion 등등 많은 툴들이 있지만! 노션을 사용하기로 결정했습니다.
간단한 이슈 사항들은 슬랙이나 노션에 정리하고, 매주 온라인 회의는 Discord로 진행했습니다.
어플의 홍보사진은 다음과 같습니다!
백엔드 Skill Stack은 다음과 같습니다. 언어는 JAVA, 빌드도구는 Gradle, 자바 프레임워크는 Spring Boot, 데이터 접근 기술은 JPA, API 명세서를 위해 Swagger, 로그 관리를 위해 Log4j, 코드를 편하게 작성하기 위해 Lombok을 사용했습니다.
RDBMS는 Mysql, 컴파일 시 오류를 잡고 동적 쿼리를 편하게 작성하기 위해 QueryDSL, 토큰 기반 인증을 위해 JWT를 사용했습니다.
데이터베이스 버전관리를 위해 Flyway를 사용하였고, 앱 로그인의 문자인증을 위해 NCP를 사용했습니다. 인프라를 위해 Docker, Jenkins, AWS RDS, EC2를 사용했습니다.
실시간 이미지 리사이징을 위해 Node.js, AWS CloudFront, AWS Lambda, AWS S3를 사용했습니다.
아키텍쳐는 다음과 같습니다.
기본적으로 안드로이드와 백엔드는 Rest API를 이용해 통신하고, 문자인증을 위해 NCP와 통신합니다.
제가 담당한 분야는 인프라 구축, 스크랩 API, 실시간 이미지 리사이징입니다!
이전에 진행했던 HUP! 프로젝트에서 경험했던 내용들보다는, 새로 배울 수 있는 분야를 하고싶어 위와 같은 일감을 가져갔습니다.
아무래도 백엔드가 6명이다 보니 코드의 일관성을 맞추기가 쉽지 않았습니다.
여러명이서 프로젝트를 참여한다고 하면, 한 명이 만든것처럼 만들어야 유지보수가 편해서 이를 해결하기 위해 많은 노력들을 하고, 코드에 주석을 달아 메서드의 정보를 작성했습니다.
따라서, REST API의 주소를 어떻게 구성할지 고민하고, 이 코드를 누가 만들었는지 다음과 같이 파라미터, return, author를 작성했습니다.
따라서, 저번에 진행했던 프로젝트 보다는 많은 부분들을 개선할 수 있었습니다.
1. 여러명이서 코드를 작성하기 때문에 해당 클래스 단위, 혹은 메서드 단위로 주석을 달아 파라미터 값, 리턴 값, 변수 명, 작성자등을 알 수 있게 작성하였습니다.
2. 인프라 비용이 지원이 되었기 때문에 하나의 EC2에 DBMS와 스프링부트 서버를 같이 두기 보다는 따로 나누어 통신하도록 구현했습니다.
3. 예외처리를 할 때 커스텀 코드를 응답해, 예외상황에 보다 안정성있게 구현했습니다.
4. 이미지를 단순히 AWS S3에서 가져오는 것이 아닌, CDN을 통해 실시간 이미지 리사이징 서버를 구축하고 유연한 이미지의 크기를 응답하도록 구현했습니다.
5. 팀원들의 시간을 효율적으로 분배할 수 있도록 타임로그를 작성했습니다.
6. 각자의 이름으로 Branch를 생성해 여러 작업들을 효과적으로 진행했습니다.
많은 부분들을 개선했지만, 아쉬운 점도 많았습니다.
1. 많은 프로젝트 인원들이 있음에도 불구하고 단위 테스트를 작성하지 못했습니다.
2. 백엔드 개발자들이 사용하기 쉬운 API 명세서를 무작정 사용하기 보다, 작성하기 어렵더라도 안드로이드 개발자들이 쉽게 이해할 수 있는 API 명세툴을 사용했으면 어땠을까?(ex) Spring Rest Docs)를 고려하지 못한 부분입니다.
3. 인프라 비용이 지원됐음에도 불구하고 로컬환경 - 운영환경으로 단순히 나누기 보다는, 로컬환경 - 개발서버 - 운영서버로 나눠 안정성있는 서비스를 지원하지 못한점입니다.
개선사항도 많이 해결하고, 아쉬운 부분도 많지만.. 프로젝트에 열정적으로 참여하기도 했고,
훌륭한 팀원들을 만나 많이 배워갈 수 있었던 프로젝트였습니다!
트러버 안드로이드 깃허브: https://github.com/TLOVERcp/tlover-android
트러버 백엔드 깃허브: https://github.com/TLOVERcp/tlover-server
'회고록' 카테고리의 다른 글
갑진년 연초 회고록 : 게임회사의 게임서버개발자 1년 돌아보기 (2) | 2024.02.26 |
---|---|
[Project] 연합동아리 잇타, 이삼이상 회고록 (0) | 2022.08.19 |
[Project] 연합동아리 큐시즘 24기, Hurry up HUP! 회고록 (4) | 2022.08.13 |
[Mentoring] 청년고민해결단 온라인 멘토링 회고록 (4) | 2022.04.02 |