3차프로젝트(기업협업) 회고

여리·2023년 4월 9일
0

프로젝트개요

1-1. 기간 및 인원
기간 : 23년 3월13일 ~ 4월 6일
인원 : Frontend 2명 / Backend 2명
1-2. 프로젝트에 사용된 기술스택
Front-End : React.js, sass, JavaScript, html, css, style component
Back-End : Node.js, Express, JSON Web TOKEN, Bcrypt, MySQL, axios, multer, soket.io, aws(ec2,rds,s3), docker
Common : RESTful API, Git, Github, Jira, Slack, Notion, Postman, figma, chatGPT

프로젝트 컨텐츠 소개

  • 컨텐츠 내용 : 당근마켓을 모티브로 삼아 기업협업을 하게됐던 지역인 서울 문정동 에서 프로젝트를 진행하게 되었고, 문정도의 관할구역은 지도상으로 보았을 때 하트모양을 닮아 하트 이모지로 로고를 따고 동네생활 커뮤니티로 기획을 하다보니 문정동의 정도 '情'을 활용하여 커뮤니티의 친근감을 살릴 수 있도록 해보았다.

[ PET관점에서의 컨텐츠 ]

  • 이 제품이 전달하고자 하는 가치와 그 의미는 무엇인가?
    • 문정동이라는 지역 안에서 당근마켓처럼 비슷하게 물건을 나누고 거래할 수 있도록 하며 동네에서 일어나는 일들(ex.동네정보 게시판(카페/맛집, 사건/사고, 유익한 실시간 정보 등))을 활용할 수 있도록 해놓았다.
  • 얼마나 많은 사람이 자주 사용하는가?
    • 장소에 대한 제한적인 부분(문정동에 한함)이 발생하긴 하지만 그 안에서 일어나는 일들에 대한 부분이 제한적일 수 있으나 문정동에 관심이 있거나 문정동에 대한 커뮤니티에 대한 궁금점을 갖고있는 유저라면 접근할 수 있다. 처음에는 문정동 위치기반으로 가입자를 받는것에 대한 고민도 있었지만(시간 내 기능을 구현하는데 있어서 제한도 있었다.) 유저의 폭을 확장하는데에는 문정동 이외의 사람들도 문정동에 관심을 가질 수 있도록 하면 좋겠다는 생각으로 문정동을 사랑하고 관심있어하는 사람이라면 모두가 이용할 수 있다.
  • 서비스적 문제가 발생했을 때 어떤 일이 생기는가? (e.g. Server Down, 데이터 소실)
    • 실시간 정보나 유저가 정보에 대해서 디깅하고자 할때에 바로 정보전달을 할 수 없다는 점이 있다.
  • 우리의 웹 서비스 기획은 매출 | 수익 관점에서 어떤 영향을 어떻게 미치는가?
    • 매출/수익에 대한 관점보다는 문정동에 대한 커뮤니티 활성화를 기반으로 기획한 내용이다보니 수익성에 대해서는 근복적인 내용에 대해 기획하진 않았다. 다만, 여기서 동네에 대한 홍보나 광고가 필요한 부분에 대해서는 수익성을 확장,고려했을때는 충분히 접목이 가능한 부분이라고 생각한다. 동네 상권에 대한 정보들을 한데 모아 광고할 수 있는 좋은 플랫폼이 될수도 있다고 생각한다.

구현기능

이번 프로젝트를 통해서 구현하고자 하는 기능은 아래와 같다.(백엔드 기준)
1. 동네정보 게시판(CRUD)
2. 동네정보 게시 상세페이지 댓글(CRD)
3. (자체)회원가입/로그인/기업협업 로그인 API
4. 백오피스(admin) 동네정보, 유저정보, 중고거래 게시글 관리
5. AWS(EC2, RDS, S3) 활용
6. soket.io 라이브러리를 활용한 채팅

여기서 나는 1번, 2번, 3번, 4번(동네정보), 5번(EC2, RDS) 이다.

동네정보 게시판 기능(CRUD)

동네정보에 대해 조회(READ=GET)하는 기능 외에는 유저가 가입이 되어야 나머지 기능을 활용할 수 있도록 해놓았다.
물론 생성/삭제/수정에 대해서는 기본적으로 무지성 기능을 활용할 수 있기 때문에 가입한 회원을 기준으로 기능이 작동외어야 한다는 것이기 때문이다. 동네정보 게시판에 대해서는 AWS S3를 활용하여 이미지를 업로드할 수 있도록 해놓았다. middleware로 imageuploading을 구현해놓아서 이미지가 필요한 기능들에 대해서는 다방면으로 활용할 수 있도록 했다.
동네정보 게시판 안에서는 유익한 정보가 있다면 도움이 될 수 있는 글들을 알 수 있도록 '좋아요'기능을 첨가하여 이 글이 도움이 되는 글임을 표현할 수 있도록 해놓았다.

상세페이지(R) 및 댓글 기능(CUD)

상세페이지에서는 하나의 정보를 총망라 할 수 있도록 작성자에 대한 정보, 내용에 대한 상세정보(제목,카테고리,상세내용 등)를 나탤 수 있도록하여 프론트엔드에 data를 전달할때 활용하기에 좋게 요청한 구조로 JSON_ARRAYAGG와 JSON_OBJECT 쿼리를 사용하여 상세적인 정보를 제공했다. JSON_ARRAYAGG에서는 1(게시물):다(댓글)이 있을 수 있기 때문에 배열형태 안에 객체형태로 data를 전달해 주었고, 한 가지의 게시물에는 JSON_OBJECT를 활용하여 data가공을 프론트엔드에 활용하기 좋은 구조로 제공을 하였다. 댓글기능 중 update기능은 프론트엔드쪽에서 구현하는데에 다른 기능에 집중하고자 update기능은 뺐으면 좋겠다고 의견을 받아 이는 제외시켰다.
댓글기능에서는 삭제에서는 무분별한 삭제가 이뤄지지 않도록하고 data가 제대로 활용되지 못하면 서비스적 기능에 대한 오류가 많을 것으로 예상되어 예외규칙에 대해서 좀 더 신경을 썼다. 예를들어 게시물과 댓글이 존재는 하지만 서로 매칭되는 데이터가 아닌데도 오류가 발생하지 않거나 의도되지 않은 오류가 발생할 수 있기 때문에 이에대해서 고민을하고 예외규칙을 생성했었다.

(자체)회원가입/로그인/기업협업 로그인 API

처음 기획의도는 자체회원가입/로그인 기능으로 운영을 하려했으나 프로젝트 중간에 기업협업의 로그인 API서비스에 대해서 활용해보라는 의견을 받아서 서비스적인 부분이 일부 꼬인기능이 있었다. API 문서와 서비스를 활용하려면 초기에 기업에서 정보들을 입력할 수 있도록 해주셔야하는데 계속 진행이 되지 않아 막판에 정보등록과 API문서를 받아서 기능을 이해하고 구현하는데 다소 어려움이 있었다. 그래도 로그인하는 유저에 대해서는 토큰방식으로 로그인할 수 있도록 하는데에는 기능을 구현했다.
자체적인 서비스로 외부 어플에서는 활용할 수 없어서 기업협업 동안에만 테스트할 수 있었다.

백오피스(동네정보 게시판 admin)

이번 프로젝트에서 백오피스에 대해서 어깨너머로 들은 것들을 만들어볼 수 있게됐다는 점에서 백오피스가 이런느낌인건가.. 라는 정도로만 경험을 해본 것 같다. 별도의 DB로 활용하는 경우도 있다고 들었는데 이번 프로젝트의 경우에는 하나의 DB로 백오피스 정보들을 활용할 수 있도록 했다. 이번에 구현한 백오피스의 개념은 별도의 페이지로 생성하여 admin의 아이디를 생성하여 해당 지정한 아이디로 회원가입한 유저만 가질 수 있는 수정,삭제 권한에 대해서 구애받지 않고 기능을 활용할 수 있도록 하고, DB의 정보를 조회 할 수 있도록 했다. 백오피스에 대한 부분은 기업에서 먼저 얘기를 해주었지만 그냥 말그대로 백오피스라는 단어만 던져주고 그 외에 어떠한 내용에 대해서는 제시하거나 조언한 부분이 없어서 아무 경험이 없었던 우리에게는 '이런방법으로 백오피스를 구현해볼 수 있겠구나'에 대해 추상적으로 고민하고 기능을 만들어 보았다.

AWS(EC2, RDS)

부트캠프를 하면서 기본적으로 공부했었던 Free Tier로 인스턴스를 생성하고 그에 맞도록 public Ip, endpoint를 확인하여 온프레미스방법이 아닌 온디맨드 방식으로 클라우드를 활용하여 웹개발을 진행해보았다는것에 의의를 두고 기능을 활용했다.

프로젝트를 통해서..(잘한점, 아쉬운점, 마무리)

잘한점

API 기능들을 구현하는데 있어서 기본적인 기능들 이외에도 고려해야하는 서비스적 로직에 대해서 예외규칙에 대해 생각해 볼 수 있는 경험을 해보았다는 데서 좋은 경험이었다고 생각한다. 서비스를 운영하는데에 있어서 백엔드는 고려해야하는 예외규칙이나 의도한 바에 대한 기능이 작동될 수 있도록 구현하는게 중요하다고 했는데 이전에 경험했던 2주 기간의 프로젝트에 비해 4주간의 프로젝트는 기능적인 부분의 범위나 서비스적 로직에 대해서 좀 더 고민해볼 수 있는 시간이 됐었다.
그리고 이번 프로젝트에서 일정 및 티켓관리를 하는데 있어서 Jira를 경험해봤다는것이 좋았다.
이전에는 trello를 사용했었는데 trello도 많이는 사용한다고 했지만 주로 디자이너가 많이 활용한다고 했었는데 많은 비율로 jira를 사용한다고 했는데 기업에서 사용하고 있는 jira를 많은 기능들을 활용하지는 못했지만 어떤느낌으로 사용을 하는지에 대해서 경험한 것에 의의가 있어서 좋았다고 생각했다.

아쉬운점

프로젝트 자체의 관점으로 보았을때 기능구현에 있어서 서비스로직에 대해 고민할 수 있었던 시간으로는 좋았지만 반면에 기존에 1,2차 프로젝트를 했을때와 크게 다르지 않은 경험을 했다는데서 아쉬움이 컸다. 물론 기업협업의 인턴십의 개념으로 한달 간 기업에 있는것이기 때문에 기업의 입장에서도 서비스를 직접 경험시켜 준다는것이 리스크로 작용할 수도 있기 때문에 쉽사리 서비스에 대해서 기여할 수 있는 부분은 크게 많지 않을 것이라고 생각했다. 무엇보다 제일 아쉬운 점은 교육의 관점보다 기업에서 갖고있는 개발문화나 그로인한 기업의 톤앤매너, 그리고 분위기에 대해서 경험할 수 있는 것이 없었다는게 아쉬웠다.

마무리

기업협업에 대해서 기대감을 가져갔던 기업에 대한 개발문화와 기업에서 갖고있는 서비스에 대한 제공과 기업에서는 어떻게 일하는지를 궁금해했었는데 그런부분에서는 체득할 수 있었던 것이 없었다. 하지만 그 안에서 배운점도 있었다. 자체적으로 어떠한 서비스를 만들고자 할때에 대한 자립성과 그에따라서 내가 공부해야할 것들에 대한 아젠다를 직접 체득할 수 있었던 좋은 시간이었고 기업의규모부분에서 작은 기업이다보니 개발의 문화는 일단 없었지만 서로 비난하고 무시하면 안된다는 그런 개발문화를 반면교사할 수 있는 시간이었다고 생각한다. 기업협업자체로써는 다소 아쉬운 경험이었지만 비슷한 프로젝트를 하면서도 그 안에서 다른 개발자는 어떻게 작업하는지에 대해서 좀 더 알아보게 되는 점에 대해서는 내가 앞으로 배워야할 것들이 많다는 것에 대한 걱정과 함께 좋은 경험이 됐다고 생각한다.

profile
beckend developer

0개의 댓글