항해99 1주차 WIL
첫 주차를 4일간(22.11.14 ~ 22.11.17) 팀장을 맡아 4명이서 팀으로 프로젝트를 진행하게 됐다.
아직 우리는 FE, BE 개발자가 아니기 때문에 프로젝트 역할 분담은 기능 단위로 나눠서 진행했다.
이번 주차는 기본적인 웹개발 지식을 가지고 팀으로 하나가 되어 서비스를 완성하는 경험을 갖는 것이 목적이였기 때문에 완성에 초점을 맞추어야 했다.
우리가 만들 서비스는 자신이 좋아하는 가수의 노래를 사람들에게 추천하고 자신만의 플레이 리스트를 만드는 웹사이트를 만들기로 했다.
역할 분담은 각자 메인페이지, 디테일페이지, 작성페이지를 맡았고 마지막으로 이번 프로젝트에서 필수인 JWT 토큰을 이용한 로그인/회원가입 기능을 나머지 한분이 맡아서 진행하게 되었다.
단기간에 처음으로 협업해서 팀원들과 같이 프로젝트를 한다는게 쉽지 않았다.
어떻게 진행하는지에 대한 순서와 역할을 분담하고 무슨 주제로 시작해야 할 지 감이 잘 오지 않았다.
다시 생각해보면 매일 밤을 새고 팀원들과 얘기하고 진행하는 모든 부분이 팀으로서 하나가 되어가는 느낌이였다.
JWT 란 ?
JWT 토큰의 구조는 3가지로 이루어진다. - Header, Payload, Verify Signature
Header : 위 3가지 정보를 암호화할 방식(alg), 타입(type) 등이 들어간다.
Payload : 서버에서 보낼 데이터가 들어간다. 일반적으로 유저의 고유 ID값, 유효기간이 들어간다.
Verify Signature : Base64 방식으로 인코딩한 Header,payload 그리고 SECRET KEY를 더한 후 서명된다.
여기서 우리는 payload를 설정해준 후 Token을 생성해서 암호화를 시켜주는 것이다.
우리는 결론적으로 웹 어플리케이션 서버를 개발하고 운영하는 것이 목적이므로, '이렇게 HTTP 요청을 보내면, 이렇게 응답해준다'라는 스펙을 기능에 따라 설계해야 한다. API 설계 원칙은 웹 서버의 API 스펙을 어떤 규칙에 따라 정의할 것인지를 나타낸다.
API 기능 설계 원칙
- 'GET /post는 게시글 목록을 불러오고, GET /post/{id}는 특정 게시글의 내용을 불러온다'같은 설계는 다 아키텍처 기반으로 결정하는 것이 좋다. 아키텍처가 없다고 API 디자인을 못하는 것은 아니지만, 의사결정의 기반이 있는 것이 좋기 때문이다.
- '잘 디자인된' API는 불필요한 커뮤니케이션 비용을 줄인다.
프로젝트 회고
웹개발 미니 프로젝트를 하면서 느꼈던 점을 적어본다면 대략 4가지 로 적어볼 수 있을 것 같다.
- 좋았던 것
- 배운 것
- 부족했던 것
- 바라는 것
첫 번째 좋았던 것은
팀원들과의 합이 좋고 배려하는 부분이 느껴져서 팀분위기가 정말 괜찮다고 생각했다.
처음이라서 모두가 어색하고 어쩔 줄 몰라 하는 분위기를 팀원분들과 다 같이 노력하여 점점 합이 맞아가는 것 같았다.
팀장으로서 능숙하게 이끌지 못한 부분을 도와준 팀원들에게 감사하다는 말을 하고 싶다.
두 번째로 배운 것은
한 분을 제외하고 나를 포함 나머지 두 분은 프로젝트 포함 Git을 통한 협업에 대한 경험이 하나도 없었다.
그래서 다 같이 하루 동안 Git hub를 통해서 main 브랜치와 develop 브랜치를 만든 뒤 각자 깃 허브에 이슈(본인이 구현할 기능 알림)를 작성 후 이슈에 부여받은 번호를 값으로 develop 브랜치에 feature/(부여받은 번호) 브랜치를 생성 후 작업하는 방법을 배웠다.
작업을 마치고 난 뒤 git bash command 창을 통해 변경된 파일을 add .(staging)하고 commit한 뒤 push를 통해 원격 repo에 올리고 git gub에서 merge를 한 뒤 PR(Pull Request)을 날리는 과정을 통해 팀원들과 과정을 공유했다.
충돌이 없이 merge가 완료됐으면 작업했던 feature 브랜치를 원격 repo와 로컬 repo에서 모두 삭제했다.
이러한 일련의 과정을 통해 팀원들과 git & git hub 로 프로젝트를 진행한다는 점이 나에게도 팀원분들에게도 좋은 경험이 되었던 것 같다.
또한 merge를 하는 과정에 충돌이 일어났을 때 팀원들과 같이 코드를 보면서 수동으로 중복되는 코드를 제거하는 작업들이 팀으로 하나가 되어 진행하는 이번 주차의 목적과도 일맥상통한다고 생각이 들었다.
결국 프로젝트를 기한까지 무사히 완성하였고 그 경험은 나에겐 큰 자산이 될 것 같다.
세 번째 부족했던 것은
개인적으로 나에게는 팀원들을 적극적으로 이끌지 못한 부분에 대한 아쉬움이 있다.
적극적으로 이끌기 위해 내가 아는 것을 잘 설명할 수 있어야 된다는 생각이 들었고 설명을 잘 하지 못하는 것은 제대로 알지 못한다라는 반증인 것 같기도 했다.
또한 기존에 구현하던 기능들도 어떤 플로우로 진행되는지 정확히 알고 하지 못하는 것이 나에게 부족한 점이라고 느꼈다.
바라는 것은
앞으로 또 다른 프로젝트를 협업해서 하게 된다면 기본적인 플로우를 짜고 진행하는 것이 좋을 것 같다.
또한 내가 배운 기능들에 추가적으로 새로운 기능들, 예를 들어 검색 기능, 조회순 및 좋아요 수로 정렬하는 기능, 페이지네이션 추가 등 여러 기능들을 추가해서 풍부한 기능의 웹사이트를 만들어보고 싶다.
'항해99' 카테고리의 다른 글
EC2 도메인 연결 이해하기 (0) | 2022.11.30 |
---|---|
몽고DB로 테이블 설계 해보기 (0) | 2022.11.30 |
항해99 -[Chapter 3-1] 주특기 입문 (W3) - WIL (0) | 2022.11.27 |
항해99 - [Chapter 2] 프로그래밍 기초 (W2) (0) | 2022.11.18 |
항해99 - [Chapter 1] 2조 S.A(Starting Assignment) (0) | 2022.11.14 |