부스트캠프 6기 마지막 프로젝트가 종료되었다. 마지막 프로젝트는 6주간 진행했고 나는 4명의 팀원간 웹 프로젝트를 진행했다. 

(2021. 10. 25 ~ 2021. 12. 03)

 

우리 팀이 진행했던 프로젝트 주제는 벽전: salon des refuses 이다.

 

간단한 소개

아래와 같은 배경에 의해서 프로젝트 주제를 생각하게 되었다.

1. 예술계 대학생들은 자신들의 작품들을 대중들에게 소개하기 어렵다. 그리고 혹시나 판매까지 가능하다면 비싼 재료값들을 충당하며 꿈을 더 키우는데 도움을 받을 수 있다.

2. 코로나라는 시대에 사람들이 자연스레 집에 있는 시간이 많아지면서 집이라는 공간에 관심과 생각을 많이 하게 되었고 집을 꾸미는 것에 대한 수요도 늘고있다. 최근에는 위아트라는 회사도 길거리에서 자주 보았다.

 

위와 같은 배경에 의해서 아마추어나 신인작가들이 자신만의 온라인 전시회를 열거나 자신의 작품을 팔 수 있는 웹 플랫폼 서비스를 기획했다. 우리의 핵심 서비스는 자신만의 온라인 전시회와 NFT 경매로 잡았다.

 

핵심 서비스

핵심 서비스에 대해서 적어보겠다. 프로젝트 움짤 등 은 github에 올려두었다. 배포 사이트는 더 이상 배포하지 않는다. 실제로 사용되게 만들기에는 아직 무리가 있다고 판단했다. 이유는 따로 적어보겠다.

 

온라인 전시회: 작가가 자신의 작품을 먼저 등록을 한다. 이후 자신이 등록한 작품들을 선택해서 전시회를 열 수 있다. 전시회는 작가가 마음대로 작품과 텍스트 박스등을 배치해서 자신만의 전시회를 만들고 사용자들은 해당 전시회를 보고 마음에 들면 NFT 경매에 참여하여 작품을 구매할 수 도 있다.

 

NFT 경매: 작품은 NFT로 만들어지며 구매자는 메타마스크를 통해서 자신의 지갑안의 이더리움 가지고 작품 경매에 참여하여 작품을 구매할 수 있다. 

 

내 역할

우리팀은 프로젝트 내에서 역할을 딱 나누어 진행하지 않았지만, 주로 내가 한 작업은 서버쪽을 주로 만들었고 NFT 경매 서비스를 위한 test 서비스 구축 및 스마트 컨트랙트 구현을 진행했다.

 

프로젝트 고민 사항들과 도전 사항들

1. NFT

NFT... 끝나는 시점에서 NFT는 빛 좋은 개살구였다. 이야기를 해보겠다. NFT를 붙이게 되는 이유는 NFT의 특성이 예술작품과 굉장히 잘 맞는다고 생각을 해서이다. 왜냐하면 NFT는 고유한 주소를 가진 토큰이다. 블록체인 상에 오직 하나만 존재한다. 작가들이 만들어내는 작품도 마찬가지다. 작품이 온전한 가치를 받는 이유는 오직 이세상에서 하나이기 때문이다. 그러나 온라인상에 작품 사진 등을 올리게 되면 저작자를 가리기 쉽지 않다. (디지털 아트일 경우 더더욱 결국 파일이니까) 그러나 해당 이미지를 가지고 NFT를 만들게 되면 해당 NFT를 가진 사람의 블록체인 상의 주소와 생성자의 주소를 블록체인에 저장할 수 있다. 이러한 특성이 저작권, 복제품 등에 문제에 하나의 해결방법이 되지 않을까 생각하게 되었고 NFT 경매를 하게 되었다.

(자세한 내용은 생략하겠습니다. 혹시나 궁금하신점이 있다면 댓글을 달아주세요.)

 

2. NestJS

우리는 Express 대신 express를 한번더 추상화 해준 NestJS를 도입했다. NestJS를 도입함으로써 얻은 장점은 다음과 같다. 먼저 Express 자유도가 높기 때문에 유지 보수가 힘들고, 협업에 있어서 통일성 있는 개발을 하기 어렵다라는 판단했다. 기존에 2 단위 개인 프로젝트를 진행할 때의 팀원들의 Express 코드를 보더라도, 디렉토리 구조, 미들웨어 사용 방식 등이 다양했고, 이러한 Express 계속해서 사용한다면 백엔드 구조를 통일하기 쉽지 않을 같다는 생각이 들었다. 반면 NestJS 경우, 모듈, 컨트롤러, 서비스 계층의 역할이 확실하기 때문에 통일성있는 개발을 있고, 이를 통해 자연스레 유지 보수성도 함께 가져갈 있을 같다라고 생각했다. 

그리고 NestJS에서는 http request 컨트롤러에 도착하기 전에 Guard, Interceptor, Pipe 여러 추상화된 미들웨어들을 제공하고, 이러한 미들웨어들을 활용한다면 비즈니스 로직에 많은 시간을 투자할 수 있었다. 

 

3. nGrinder 부하 테스트

나는 또 한명의 팀원과 둘이서 주로 서버작업을 진행했다. 언젠가 둘이서 이야기를 했는데 이렇게 API 공장처럼 필요한 API만 개발하는 것은 결국 그냥그런 프로젝트를 진행한 서버 개발자 지망생이 되버릴 것이라고 이야기를 들었다. 그래서 나와 팀원은 nGrinder 부하테스트를 진행하여 더 많은 사용자에게 더 잘 서비스하는 서버를 만들어보는 경험을 하자고 했다. 우리는 nGrinder 부하테스트를 우리가 만든 API 단위로 가상의 사용자를 통해서 부하 테스를 진행했고 그렇게 나오는 TPS값을 가지고 개선해 나가기로 했다. 결국 ERD 개선, 간단한 반정규화, 로직 개선을 통해서 특정 API를 개선하였고 TPS를 208 -> 338 까지 개선하는 경험을 했다. 자세한 내용은 링크에 있다.  (notion 정리)

 

4. SQL Generator

프로젝트에 더미 데이터가 필요했고 SQL Generator를 간단히 만들어 보았다. 왠지 프로젝트에 직접적인 관련이 없은 부수적인 작업이라고생각했고 많은 시간을 할애하면 안되겠다 라고 결론짓고 단순하게 만들었다. 만들었을 당시에는 많이 사용했다. 그러나 프로젝트가 복잡해지면서 모든 테이블의 연관관계를 올바르게 표현하는 SQL을 만들어주지 못했고 결국 사용이 뜸해졌다. 그리고 생성된 SQL을 개발자가 다시 복사 붙여넣기해서 넣어줘야하는 문제도 있었디 때문이다. 다음에는 이러한 더미 데이터를 만들어주는 프로그램도 만들어보면 좋을 것 같다. (여러 프로젝트에 사용가능한... 벌써 있겠지만...)

 

회고

- 협업

가장 먼저 팀 프로젝트를 진행하면서 애자일 방법론을 통한 일정 관리를 해보려고 노력했다. 하지만 역시 처음하는 일은 쉽지 않았다.

 

처음에backlog를 시나리오 별로 만들게 되었다. 에픽, 스토리, 태스크 단위로 분리해서 backlog를 만들었고 이슈를 스토리 단위로 만들었다. 하지만 이렇게 되면 태스크가 굉장히 산만했던 경험이 있다. GNB만 하더라도 각각의 네비게이션 시나리오가 다른 이슈에 있다보니 GNB를 만드는 태스크가 여러 이슈에 걸쳐져 있었고 관리가 굉장히 힘들었다. 그래서 backlog는 일감 단위로 만드는게 더 좋다고 생각했다.

 

또한 이렇게 망해버린 backlog때문에 이슈도 새로 등록하게 되었고 backlog를 새로 만들었어야 했는데.. 차일피일 미루게 되었다. 결국 backlog를 관리하지 못하게 되었다. 이로인해 또 문제가 발생하는데.. 한 주 스프린트 단위로 일감을 등록하고 일주일간 처리하는 식으로 스프린트를 진행했다. backlog가 없다시피하니.. 우리의 총 일감을 알기 어려웠고 스프린트 단위에서 얼마나 많은 태스크를 만들어야 할지 결정하기 어려웠다. 그래서 첫주는 일감이 적었고 할게 없어서 방황하는 경험도 했다.

 

우리는 매일 아침 10시에 스크럼을 진행하며 월요일 스크럼 시간에 한 주 스프린트의 태스크를 만들었다. 한주의 데모 시나리오가 만들어지면 다 같이 덤벼서 칸반보드에 태스크를 등록했다. 그렇다 보니 중복 태스크가 만들어진 경험도 있다... 둘 이서 같은 일을 하게 되었고 결국 하나의 코드만 머지할 수 밖에 없었다. 그래서 우리는 스크럼 마스터를 도입했다. 스크럼을 주도하며 태스크 생성과 이동을 한명이 담당하도록 해서 중복 태스크가 생성하지 않도록 하였고 모든 팀원이 같이 보면서 만들어서 더 자세한 내용의 태스크를 만들었다. 

 

이렇게 협업을 경험했다. 아쉬움이 많이 남지만 앞으로의 프로젝트에서는 더 잘 할 수 있겠다 생각했다. 나는 또 하나의 경험을 했고 EXP가 올랐다.

 

- NFT

하.. 우리 팀 모두 블록체인에 관련된 배경지직없이 NFT에 도전했다. 참 아무것도 모르다 보니 용어들 정리하는데도 시간을 많이 써야만 했고 시스템을 만드는 것도 쉽지 않았다. 프로젝트에 적용하는 것도 재대로 했다고 생각이 들지 않는다. 개발자 품이 너무 많이 드는 방식이었다. 또한, 프로젝트와 NFT가 독립적으로 돌아가기 때문에 관리 해주어야 하는 프로젝트가 하나 더 늘었고 결국 client, server, nft 프로젝트를 관리했는데 프로젝트가 하나만 늘었을 뿐인데 복잡도가 두~세 배 늘었고 개발 진행 속도도 늦어졌다. NFT를 사용하지않고 프로젝트 내의 가상 포인트 등으로 활용했다면 전시회나 경매로직을 더 잘 만들 수 있지 않았을 까 하는 아쉬움이 남는다.

 

결론

너무 두서없이 글을 작성했다. 글 쓰는 것도 쉽지않다. 어차피 나 혼자 보기용으로 적기 때문에 크게 신경쓰지 않기로 마인드셋하며 적어본다. (아니면 아예 안쓰기에..) 프로젝트를 진행하면서 그간 진행했던 프로젝트 보다 많은 것을 배웠다고 생각한다. 특히나 협업이다. backlog, 스크럼, 칸반보드에 대해서 나만의 기준이 생긴 것 같다. 이제 부스트캠프는 끝났다. 취업할 수 있을까..

'다이어리 > 후기' 카테고리의 다른 글

boostcamp 6기 챌린지 후기  (0) 2021.08.14
2021 네이버 웹툰 개발 챌린지 후기  (0) 2021.07.11
2021 네이버 공채 면접 후기  (0) 2021.07.09

BELATED ARTICLES

more