Skip to content

11.05 피어 세션

J220_홍한솔 edited this page Nov 5, 2021 · 1 revision

프로젝트 소개

메타 버스 - 가상공간 대여

  • 소셜로그인
  • 아바타 닉네임 설정
  • 월드 선택
  • -월드 진입
  • 월드 내 룸 생성 -> 회의 진행 가능

프로젝트 구조

world들을 각 서버로 구현 master 서버가 각 world들을 제어 현재는 master 서버 = world 서버

핵심 기술

  • GraphQL & Apollo
  • Socket.io

질문

  • world 진입 === 서버 선택 ?
    • World마다 서버가 할당됨 -> World별로 port번호가 할당되어 있음 -> Master 서버가 해당 서버로 포워딩 해줌
  • 도커 적용?
    • 아직 하지 않음 2주 후 적용 예정
  • 웹 RTC?
    • 웹 RTC 사용할 예정 (화상채팅)
    • HTTPS 사용할 거

백엔드 폴더 구조

express generator 사용
orm 사용하지 않음

  • src
    • database
      • entity : 인터페이스 정의
    • service : 테이블을 사용해서 data를 가져오는 로직들
    • graphQl : Appolo 설정
    • pre-start : 환경 변수 관련
    • routes : graphQl 을 사용하다 보니 거의 사용안함
    • shared : 에러 메시지같은 자주 쓰이는 문자열이나 변수
      • receive : 서비스 로직과 관련된 type들
    • socket : 소켓

민태홍 남친 구함 - 소개팅 서비스

기획 소개

  • 1:1, 다대다 소개팅 , 미팅 지원
  • 프로필 선택 -> 채팅 신청 가능
  • 채팅 + 캐치마인드 게임 OR 게더 타운 구현
  • 채팅 요청 목록에서 받은 요청을 수락하거나 거절 가능
  • 내 정보, 팀 정보 수정 가능

프로젝트 진행 방법

  • 매일 데일리 스크럼 -> 코드 리뷰
  • 백로그 -> 매일 예상 소요시간을 계산 -> 개발 후 소요 시간을 기록 -> 최대한 맞추려고 함

질문

  • 백엔드, 프론트엔드 분리하여 개발하나요?
    • 분리해서 개발하고 있습니다.
  • 과금 유도 추가하실 생각이신가요?
    • 맨 처음에는 생각했었는데 사업자 등록때문에 포기하였습니다.
  • 프로젝트 구조를 요약한게 있나요?
    • 없습니다 ! 개발에 중점을 두었습니다.
    • 다이어그램이 있었으면 좋을 거 같습니다.

궁금한 점

아토믹 디자인

아토믹 구조에서는 계층을 5개로 분리하여 사용
개발을 진행하며 계층이 모호해지는 이슈가 발생

답변

폴더를 나누는 건 좋지만 깊이가 깊어지는건 별로라고 피드백 받음
그래서 핸들러, 이벤트 정도로만 분리했음.
오히려 백엔드에서 구조를 나누는게 더 힘들었음

이벤트 target 분별

  • data-set Or Id 로 분별

style - inline

  • inline - style 때문에 파일이 너무 커지는 issue 발생
  • atomic 디자인 사용중 동일한 폴더 내부에서 참조하는 경우 발생

여러대의 서버를 관리하는 방법

  • 하나의 instance에 여러개의 컨테이너를 올릴 예정
  • 현재 계획상으로는 배포해놓은 컨테이너를 사용
  • 메인 서버가 World 컨테이너의 포트를 제공 해줌
  • 클라이언트는 직접 포트를 연결하여 컨테이너와 통신
Clone this wiki locally