Final Project(사각사각)

황순은·2021년 7월 27일
0

Final Project

목록 보기
3/3

사각사각에서 함께 하세요! in sagaksagak

사람들은 저 마다의 공부방식과 선호하는 공부환경이 있다. 독서실이 집에서 조용한 환경에서 공부하는 사람, 약간의 소음, 사람들과 대화하며 자유롭게 공부하는 사람. 나같은 경우는 후자에 속하며 대학교시절에도 'Study Lounge'라는 곳에서 친구들과 대화하며 자유롭게 공부하는것을 선호했다. 하지만 현재의 포스트 코로나시대에 후자를 선호하는 사람들은 많은 제약이 따를 수 밖에 없다. 따라서 집, 어느공간이든 원하는 환경을 조성해 공부할 수 있는 환경을 제공하고 공부의 효율성을 높이고자 사각사각이라는 스터디 카페를 개발했다.

사각사각 배포링크
사각사각 GitHubClient
사각사각 GitHubServer

사각사각은 언택트(Untact)가 일상이된 포스트 코로나 시대에 내 방에서도 외롭지 않게 공부하고 싶은 사람들과 같은 목적을 가진 동료들과 온라인 상으로 함께 공부할 수 있도록 해주는 온라인 스터디 카페를 지향하는 플랫폼이다. 사각사각은 원하는 주제의 화상채팅방을 직접 선택하여 채팅방을 만들거나 참가할 수 있다. 또한 효율적인 공부를 위한 Todo기능들을 사용할 수 있고, 회원대상으로 참여한 각 방, 주제별 공부한 시간을 확인할 수 있고, 선택한 카테고리와 검색한 키워드 기반으로 화상채팅방을 추천받을 수 있다.


기술 스택


socket.io와 peer.js라는 라이브러리를 사용하여 실시간 양방향 커뮤니케이션을 가능하게 만들고, 화상채팅기능이라는 주요기능을 구현해야 했기 때문에 백엔드단에서는 새로운 스택도입을 지양했다. 다만 배포 Syncronization 작업시간을 줄이기 위해서 AWS CodePipeLine, CodeBuild, CodeDeploy를 통해서 배포자동화를 구축했다.

개선할 점

여러가지 개선할점은 db선택, RESTful API등 여러가지지만 가장 크게 느꼈던 부분 하나를 회고해보고, 리팩토링해서 보완해보기로 했다.

typescript?

처음에는 대규모프로젝트가 아니기 때문에 굳이 새로운 스택인 typescript를 사용하지 않아도 된다라고 생각했었다. 하지만 크게 세가지의 문제로 typescript의 필요성을 느끼게 되었다.

첫째, 클라이언트와 데이터를 주고받을때, 특히 headers에 실려오는 데이터의 경우는 number타입으로 보내도 json으로 변환된 데이터로 서버에서 받기 때문에 string이라고 봐야한다. 당연히 아는 문제임에도 불구하고 이를 간과하고 제대로된 데이터를 응답하지 못하는 경우가 많았다.

둘째, 클린코드. 컨텐츠기반 추천시스템을 구현하면서 많은 데이터를 가공해서 응답해야했다. 따라서 클린코드와는 거리가 먼 코드가 되어 코드를 작성한 사람 이외에는 알아보기 힘든 코드구성으로 같이 백엔드를 맡았던 팀원이 코드를 이해하지못해 소통이 힘들었다.

셋째, 에러핸들링. 서버의 에러는 치명적이다. 'db와 소통하는 query가 잘못됐다', 'db에 저장하는 데이터가 array인데 stringify를 하지않고 데이터를 저장하고 있다', 'map, filter매소드를 사용하는데 데이터가 배열이 아니다.' 등은 모두 서버가 종료되는 치명적인 결과를 가져온다.

위 세가지는 유연한 javascript를 사용하지 않고 정적인 typescript를 사용한다면 해소가 가능할 것으로 보인다. 따라서 개인 프로젝트로 리팩토링을 진행해보려 한다.

Project소개문서 및 DevLog, Refactoring링크

프로젝트 소개문서
DevLog
refactoring repository

profile
안녕하세요.

0개의 댓글