# TIL-20210508

# Today

  • 프로젝트 마무리 후기

# Content

어제 (금요일)에 프로젝트가 마무리 되었다. 2간의 프로젝트를 진행하면석 겪었던 일과 내용들을 정리해 보려고한다.
프로젝트 진행 정도에 따라 3단계로 나누어 보았다.

  1. 준비단계
  • 프로젝트 준비 (기획, 팀 룰, 프로젝트 구조 설정 등), 실제로 개발단계에 들억가기 전에 준비하는 과정
  1. 진행
  • 프로젝트 진행 중 (보일러 플레이트 구성, 팀과의 협업, 배포 테스트 직전)
  1. 마무리
  • 배포 후 디버깅 코드정리 등

다음과 같이 크게 3단계로 나누어 얘기해 보려고 한다.

간단한 프로젝트 구성 설명

  • 팀 구성 : 4인 팀
  • 초기 롤세팅: 4인 모두 풀스택으로 진행할 계획

# 1. 준비단계

실제 프로젝트는 월요일 시작이었지만 우리 팀은 아이템 회의와 대략적인 목업을 3일전에 시작해 실제 기간은 20일 정도라고 볼 수 있다.
먼저 목업 및 와이어 프레임 서비스 플로우와 핵심 기능등을 정리 했으며, 이 과정에서는 모두의 의견을 수렴하여 기획이 이루어 졌다.

아이템은 출사장소 추천하는 서비스가 되었고, 내가 찍은 사진과 장소에 대한 간략한 설명이 주된 건텐츠로 선택 되었다.

이후 서비스 플로우를 잡아가는 단계에는,
아이디어 제공자의 의견을 주로 선택하고 그에 따른 팀원들의 의견을 모아서 개선해가는 방식을 선택했다.

주요 기술 스택으로는, 자바스크립트 기반 개발이고 협업에서 중요한 역할을 할 typescript를 적용 하고
프론트는 SSR을 지원하는 NEXTJS를 이용하여 구성
백엔드는 EXPRESS를 통한 API서버 역할을 구성하기로 했다.

서비스 아키텍처는 3tier 형식으로 구성했으며,
배포에는 AWS 서비스를 이용하여 배포하게 되었다.

# 2. 진행

초기 보일러 플레이트는 서바와 클라이언트 모두 혼자 구성했다.

먼저 Client에서는,
NEXTJS + typescript example을 통해 기본 클라이언트 구조를 잡아두고, 테스트에 필요한 mocha와 jest를 설치하고 tsx 컴포넌트 테스트 형식을 간단하게 추가해 두었다.
redux를 설치 비동기 처리를 위해 thunk를 도입하였으며, action dispatch를 위한 간단한 custom hook을 설정해 두었다.

다음으로 server에서는,
express, typescript로 http서버를 설정하고,

MVC 패턴으로 서버를 구성하기 위해, controller를 추가했다.
미들웨어를 통합으로 관리하여 한군데서 express 전체의 미들웨어를 세팅하도록 구성했다.

이후 팀원들에게 보일러 플레이트에 대한 간단한 구성을 설명하고,
이후 일정에 대해 협의후 진행하게 되었다.

초기 1주일 정도는 일정 관리가 조금 되는것 같았는데,
이후에는 일정 관리가 좀 어려웠다.

그 이유를 간단하게 생각해보면,

  1. 새 기술 스택에 대한 러닝커브
    처음 사용하는 typescript와 배포를 위한 첫 서버 구성이 작업 소요시간을 판단하는데 큰 걸림돌이 되었다.
  1. 구성 파트에 대한 모호한 경계
    기능에 대한 뚜렷한 구분 없이 대략적인 부분으로 나누어 개인적으로 그 세부사항을 정하다 보니,
    팀원간의 기능 스펙에 대한 이해가 다르게 형성되었다.

# 3. 배포

직접 배포를 해본게 처음이라 쉽지 않았다.
typescript를 컴파일해서 다시 번들링 하는 과정이 필요했고, 백, 프론트 모두 https 설정을 위해 aws 서비스에 대한 이해도 필요했다.
한번에 한가지 일을 하는 습관을 들여야 한다는 생각을 제일 많이 했던 시기다.

한번에 세가지 (프론트, 백, 파일 저장소 버킷)에 대한 설정을 모두 잡아 줄 때 돌아가면서 설정하니 시간이 더 오래 걸렸다.

# 다음에는 잘 하고 싶은것

  1. 프로젝트 기획 단계를 탄탄히 한다.
    기능 중심적 스택을 구성하고, 필요한 기능을 조금더 자세하게 세분화 한다.
    해당 내용을 카드화 화여 개인이 처리하고 그 결과공유가 쉬운 형태로 구성한다.

  2. 스택에 대해 욕심 내지 않는다.
    스택은 여권 스탬프가 아니다 이해도가 중요하다. 팀원 전체가 이해하고 사용할 수 없다면 과감하게 포기한다.

  3. 매일 내가 개발한 내용을 정리하고 에러 핸들링 했던 메모를 작성한다.
    개인적으로 내가 뭘 했는지 매일매일 공허한 느낌이 들 때가 있다. 개발한 내용이 뭔가 특별한 내용이 없다고 느낄 때도 있고, 무언가 개발을 했는데 그 내용이 정량적인 느낌이 없다. 이러한 경우가 반복되면 프로젝트에 집중도가 떨어진다. 어느순간 의욕이 떨어지게 되더라...

    꼭 간단한 메모라도 할 수 있도록 노력하고 내가 무었을 배웠는지 기록하자. 기록은 기억을 대신한다.