4주 프로젝트 회고

장민우·2021년 2월 6일
2
post-thumbnail

Intro

코드스테이스에서 파이널 프로젝트로 진행했던 4주간의 과정들을 이번 블로깅에 담아보고자 합니다. 이번 프로젝트를 진행할 땐 내 포트폴리오에 들어갈 내용이기 때문에 완벽에 가깝게 만들어져야 된다고 생각했고, 신입 개발자라고 하기엔 부족함이 없는 느낌을 프로젝트로 하여금 보여주고 싶었습니다. 그러나 프로젝트의 난이도가 개인적인 기준에선 너무 높게 설정 해서인지 시간이 지날수록 많은 부족함을 느꼈습니다. 그럼 기획단계부터 배포, 기능구현, 디자인 설계, 마무리까지 작성해 보도록 하겠습니다.

기획

우리는 다른 팀들에 비해 많은 시간을 할애했던 기억이 납니다. 어느 하나를 결정할 때 팀원들과 의견이 맞지 않는다면 팀원들은 상대방 혹은 자신의 의견을 설득시키기 위해 수단과 방법을 가리지 않았습니다. 그래서인지 기획 단계는 더욱 탄탄해졌고, 커뮤니케이션 능률 또한 상승했던 결과를 얻을 수 있었습니다. 아래는 기획단계에 작성했던 스키마 구조와 UI/UX 디자인입니다. 그 외에 플로우 차트, 와이어 프레임, 깃북 등도 기획 하였지만 모든 내용을 담기엔 너무 길어 질 것 같아 여기에 들어가면 모든 기획 내용을 볼 수 있습니다.

배포

모든 기획단계를 마치고 처음에 주어진 일은 AWS에서 https 배포를 진행하는 일이였습니다. http배포도 안해본 저로서는 매우 막막하기만 했습니다. 무료 도메인을 구입한 후에 DNS서버와 연결 했음에도 불구하고 DNS lookup tools에는 연결이 안됬다고 나와서 왜 안되지란 생각을 수십번 했었고, aws공식문서를 뒤져본 후 무료로 구입한 최상위 도메인은 aws에 등록이 되어있지 않다는걸 확인했습니다. 그래서 팀원들과 상의끝에 유료 도메인을 구입하기로 결정했고, 그 결과 DNS서버와 연결할 수 있었습니다. 그 외에도 많은 삽질하는 과정이 있었습니다. SSL 인증 도메인(www~)과 내가 등록한 ELB도메인 주소(www를 쓰지 않음)와 맞지않아 SSL 인증서 발급은 됬으나 도메인에 적용이 되지 않았던 기억도 있고, ELB와 EC2가 연결 됬음에도 불구하고 연결이 안됬다고 생각해 계속 구글링했던 기억도 있습니다. 이 모든 삽질했던 기억들로 인해 개념이 잡히기 시작했고, 그 개념을 바탕으로 직접 적용까지 할 수 있어 뿌듯했습니다.

기능구현

USER

유저 파트에서는 회원가입과 회원탈퇴, 소셜로그인(깃허브, 카카오)기능을 토큰을 활용해 구현했습니다. 코드스테이츠 인증 스프린트에서 JWT토큰을 사용했던 경험이 있었으나 아직 완벽한 개념이 잡히지 않아 처음부터 다시 공부해야만 했습니다. 회원가입을 하게되면 바로 로그인 페이지로 넘어가는 것이 아닌 대쉬보드 페이지로 넘어가게끔 구현하자고 팀원들과 상의를 나눴고, 만료시간을 따로 응답값으로 보내 클라이언트에서 만료시간을 계산해 자동으로 토큰 재발급 요청을 하게끔 구현했습니다. 제가 알고있던 개념이 아닌 우리만의 방식으로 구현하자고 팀원들과 상의를 했습니다. 다행이 만료시간은 저의 서버파트너분께서 계산해주셔서 수월하게 진행할 수있었습니다. 토큰을 공부하는 과정에서 토큰안에 유저에 대한 정보를 접근할 수있다는 사실도 알 수 있었고, 전체적인 흐름또한 익힐 수 있어 매우 유익했던 경험이였습니다.

Main, Myroutine

main파트에서 sequelize공식문서를 들여다보며 직접 적용까지 할 수 있어 매우 수월하게 작업할 수 있었습니다. 원하는 쿼리문을 테이블에 조회 후 데이터에 할당해주고 API문서에 적힌 응답값으로 보내줄 수 있었습니다. myroutine파트에서 또한 다르지 않다고 생각을 했습니다. 그래서 매우 가벼운 마음으로 시작했는데 막상 코드를 쳐보니 생각보다 만만치 않았습니다. 여러 테이블을 조회 한 후 배열 형태로 된 데이터들을 또다시 고차함수를 이용해 원하는 값들만 뽑아 결과값에 할당해 주었습니다. 테스트는 정상적으로 잘 동작하나 모든 컬럼들을 조회했기 때문에 많이 무거워 질거란 생각이 들었습니다. 나중에 리펙토링 할 땐 좀 더 효율적인 방법으로 개선할 예정입니다.

디자인

서버 기능구현이 모두 끝난 후 약 4~5일간의 프로젝트 기간이 남았었습니다. 아직 클라이언트 쪽에서 할 일이 너무 많아 로그인 페이지와 로그아웃 페이지를 제가 담당하기로 했습니다. 기능 구현은 모두 되어있는 상태였고, styled-component로 전체적인 디자인을 설정하였고 여백이 많이 남는 것같아 이번 프로젝트와 어울릴만한 이미지를 찾아 포토피아라는 무료 포토샵을 이용해 알맞은 색과 소셜로그인 아이콘들을 알맞은 사이즈로 조정했습니다. 프로젝트 과정에서 백엔드 포지션이 포토샵을하게 될 줄은 꿈에도 생각하지 못했는데 이번 프로젝트를 계기로 하게되어 자아갈등을 하게 됬었습니다. 하지만 포토샵이 재밌다고 해서 프론트에 가기엔 많이 부족하기 때문에 나중엔 백엔드로 가야 된다고 마음을 굳게 다짐했습니다.


마무리

4주에 못미치는 프로젝트 기간동안 좋은 동료들로 인해 많은것을 배울 수 있었습니다. 항상 잘못된 길로 빠지고 있으면 바로잡아 주시고 어려운 결정이 있을 땐 선뜻 나서 결정해 주시는 팀장님에겐 리더쉽을 배울 수 있었고, 매일 밤낮없이 작업하시는 현우님을 통해 더 열심히 해야겠단 자극을 받을 수 있었습니다. 또한 저의 서버 파트너인 란영님에겐 보안 지식과 생각지도 못한 아이디어들을 제공해 주어 여러 방식으로 접근할 수 있는 지식을 배울 수 있었습니다.

아쉬운점이 있다면 처음에 계획했던 타입스크립트로 리펙토링하는 시간을 프로젝트 기간동안 갖지못해 아쉬움이 남습니다. 그래서 다음주에는 타입트스크립트로 리펙토링 시간을 가질 예정이며 더 나아가 도커를 활용해 배포를 진행해봤음하는 바램이 있습니다. 감사합니다.

3개의 댓글

comment-user-thumbnail
2021년 2월 6일

흥해라 장티쳐! 원흥의 자랑

1개의 답글
comment-user-thumbnail
2021년 2월 8일

Good!! Very Good!!

답글 달기