프로젝트 회고록

Flash21 프로젝트 회고

sami355 2023. 8. 24. 17:09

현장실습(2023.06.26~2023.08.21)간 진행하였던 프로젝트인 Flash21에 대한 회고입니다.

1. 프로젝트 개요

해당 프로젝트는 실제 기업에서 계약관련 업무를 보조할 목적으로 진행한 앱개발 프로젝트입니다. 저를 비롯한 3명의 개발 인원은 담당자분에게 실시간으로 요구사항을 듣고 이를 반영하며 개발하며 8주간 전체 앱의 흐름을 설계하는데 초점을 두고 프로젝트를 진행하였습니다.

요구사항

❗ 요구사항에 대한 문서화를 하지 않았으며 요구사항이 실시간으로 변경되었기에 큰 틀만 작성하였습니다.

  1. 사용자는 로그인이 가능하다
  2. 사용자의 아이디는 관리자만 생성가능하다.
  3. 권한이 있는 사용자는 기업내에서 진행하는 프로젝트에 대해서 문서, 계약 정보, 이어지는 계약등을 작성할 수 있다.
  4. 관리자는 사용자에 대한 정보를 조회및 수정 할 수 있다.
  5. 사용자는 관리자에게 푸시 알림을 줄 수 있다.

기술 스택

모바일

  • 플러터
  • FCM

백엔드

언어

java(JDK17)

프레임 워크

  • SpringBoot
  • SpringSecurity

DB

  • mysql

기타

  • AWS
  • naverClound
  • data jpa
  • JPQL
  • QueryDSL

2. 시스템 구조

시스템 구조적으로는 단순한 구조였습니다. 이전에 프로젝트를 진행하였을때는 이미지 파일을 저장해야 할 일이 있었는데 그 당시에는 S3를 이용해서 이미지를 저장하고 접근할 수 있는 URL를 S3를 통해서 제공했습니다. 그러나 이번에는 S3를 사용하는 것은 서버 자원 낭비라고 생각을 하였습니다. 또한 이번 프로젝트는 토이프로젝트가 아닌 실제 서비스를 하는 것을 목적으로 진행한 프로젝트였기에 낭비없이 자원을 사용했어야 했습니다. 그렇기에 jar파일이 올라가 있는 서버에 직접 파일을 저장하였습니다.

RDS를 사용한 이유로는 스프링부트가 동작하는 서버는 AWS의 프리티어를 이용한 micro서버를 사용했습니다. (RAM 1GB) 그렇기에 스프링부트와 DB가 하나의 서버에서 동작하기에는 부담이 간다고 판단하여 RDS를 사용했습니다.

3. Flash21 프로젝트를 통해서 배운점

설계의 중요성

이번 프로젝트는 개발을 모르시는 담당자 분이 기획을 하고 요구사항을 주면 현장실습에 참여하는 학생들이 개발을 하는 식으로 진행하였습니다. 처음에는 담당자분께서 말씀을 하시는 대로 구현을 하였으나 개발이 진행되면서 기술부채가 쌓여갔습니다. 그렇기에 기능 개발을 잠시 중단하고 현재 구현되어있는 코드를 전부 정리한 이후 다시 개발을 진행하였습니다. 또한 코드를 정리한 이후부터는 개발을 진행하는 저희 역시 담당자분이 제시해주시는 요구사항에 대해서 함께 이야기를 하고 수정해야 할 부분은 수정해나가며 기획, 프론트엔드, 백엔드 모두 같이 개발을 진행해나갔습니다.

이를 통해 저희는 배달의 민족 창업자인 김봉진 대표님이 말씀하신 “개발자가 개발만 잘하고, 디자이너가 디자인만 잘하면 회사는 망한다.” 라는 의미를 몸소 체험하였으며 주어진 일만 해서는 올바른 프로그램을 만들수 없다는 것을 알게 되었습니다.

마지막으로 올바른 설계를 알지 못하였기에 요구사항을 주시는 담당자분이랑 건설적인 이야기를 하기 어려웠습니다. 그렇기에 이번 프로젝트가 끝난 이후 기획에 대한 공부를 해보고자 합니다.

협업의 중요성

옆에 있는 학우는 A기능을 개발하고 저는 B기능을 개발해 이를 합쳐X기능을 만드는 등 이번 프로젝트에서 제대로 된 협업을 진행해보았습니다. 이러한 과정에서 코드를 머지할때 컨플릭트도 일어나고, 올바르게 동작하던 코드가 갑자기 동작하지 않는등 다양한 난관들을 마주하였습니다. 이를 해결하기 위해 Git에 대해 더 자세하게 공부를 진행하기도 하였으며 커밋 메시지에 대한 컨벤션을 지키고 테스트를 진행하기도 하였습니다. 이렇게 난관들을 해쳐갈수록 저희는 협업을 할때 단순히 코드만 올바르게 작성하는 것이 아닌 부가적인 것들(예를 들면 커밋 컨벤션, 워크 플로우, 노션과 깃헙의 이슈를 통한 알림등..)의 중요성에 대해 경험하였습니다.