---
# System prepended metadata

title: 전시회

---

# 전시회 

[노션 주소](https://www.notion.so/EXHIBITIONS-5668c6c5c80e4c9ca6e6b72ffc17f723)

7분 발표
간략한 프로젝트 소개, 팀 소개 ( 1분 )
영상 ( 2분 ) => 프로젝트 주제/내용, 영상 편집 툴 사용?
이외 (3분 30초 잡기)
- 차별점과 특장점 위주로


### 더미 데이터

- 기술스택
    - SDK => 서버 => 프론트
    - ~~Express + MongoDB~~ 
- 개발환경
    - 배포서버와 개발서버 분리
    - 개발서버를 2개로 분리 => 이미지 추가를 통한 발표
        - 자동 배포활성화 및 야간서버
        - 주간개발 서버는 백엔드 개발자가 오류내용을 바로 반영
        - 야간개발 서버는 로그에 에러 내용을 저장하고 다음날 반영
    - ~~ESLint 와 prettier 로 코딩 컨벤션 통일 및 runtime error 를 줄이기 위함.~~
    - 
- 협업방식
    - 구체적 커밋과 PR을 통해 SDK / Server / Client 의 방식을 파악
    - 팀원 모두가 Approve를 할 경우 머지가 되도록 설정 ( 코드리뷰는 덤 ) ( Git action 을 통한 review 설정 )
    - wiki/study 에서 공부한 내용을 정리하고 공유
    - ~~백로그로 git hub project 사용~~

### sdk 
- 재사용성, 확장성을 생각해서 구조를 만들었다.
- mono repo 를 통한 패키지 세분화 ( lerna )
- npm을 통한 배포.
### server
- 성능 및 안정성 중심
- express 사용했다.
- 개발 서버와 리얼 서버를 분리해서 관리. => 웹후크를 통한 자동 동기화
- Jest와 RESTClient를 통한 견고한 서버 테스트 (Jest 해야함)
- 로그 수집
- 성능 최적화를 위한 PM2 클러스터링 및 익스프레스 웹팩
- 보안을 위한 다수의 구문 사용 => 좀더 자세히
- swagger 사용해서 restapi
- 
### admin
- react + typescript 씀
- container, presentational 컴포넌트 분리를 통한 관심사 분리
- redux 통한 전역 상태 관리
- webpack 으로 bundle size 고려한 optimize: minify, code splitting 등 (예정ㅎ)ㅋㅋ
- material-ui를 통한 디자인 획일화




## 각자 생각한 것 
### SDK  
**구조**
- 플랫폼을 추가해야할 경우 최대한 적은 코드로 추가할 수 있게 하기
- 수많은 정보들을 보내줘야 하는데 플랫폼 별로 공통된 정보와 공통되지 않은 정보를 분리하는 데 초점을 둠.
- 같은 기능인데 알고리즘이 다를 경우 깔끔하게 처리하기

### 서버  
**성능**
- 비동기 최적화 ( await가 순차적으로 필요 없는 부분을 Promise.all로 묶음 )
- index 넣어야 할 속성 ( 닉네임, 관계형으로 참고할 수 있는 issueid 를 index 로 넣음. 너무 많은 index 를 쓰면 document 크기가 커지기 때문에 선별할 필요가 있었음. ) 
- 테스트 및 swagger 정리 
- 서버 수치적인 기준을 적용하고 그 기준을 맞추기 위해 개선 ( 아띠렐리로 성능 측정 -> 비동기 최적화임 )
- 개발서버의 분리 및 자동 동기화

### 프론트 
**재사용성 유지보수**
- 상태 컴포넌트 역할 나누기
- 뷰 만들면서 렌더링이 너무 많이 되지않게 만들기 위해 최대한 컴포넌트를 나누면서 만들었음
- 무언가 눈에 보이는 경험을 주고 싶었음


## 기술적으로 어떤 것을 도전했고 얼마나 성장했는지


# 발표 주제 
한 두 문장 이내로 적어주세요. 산출물에 대한 소개 보다는 지난 5주 동안 팀이 함께 배우고 성장한 부분을 어필할 수 있도록 적어 주는게 좋겠죠?

# 프로젝트 소개
500자 이내로 적어주세요, 서비스 명과 로고가 있을 경우 자유롭게 업로드해도 됩니다.

## 팀원 소개


| 캠퍼 번호 |  이름  | 분야 | 역할          |
| --------- |:------:| ---- | ------------- |
| J005      | 강석민 | web  | server        |
| J049      | 김원호 | web  | admin, server |
| J050      | 김은빈 | web  | admin, sdk    |
| J071      | 문혜라 | web  | admin, sdk    |


## 기술 특장점
우리 팀만의 기술 특장점을 적어주세요. 프로젝트에서 사용한 기술 스택을 단순히 나열하기 보다는 해당 기술을 사용하여 어떤 차별점을 도출하였는지를 위주로 작성해주세요.

님들 무엇을 배웟나여 하나씩 적어봅시다~ ㅎ 
- 아무렇게나 4명 뽑으면 그중에 3명은 나보다 잘한다 -> 오 명언이네요 ㅎ 
- 막상 쓰려고하면 도구(라이브러리나 툴)는 많지만 제대로 알고 사용하지 않으면 의미가 없다.
- 야근하는 법을 배웠따~ 
- 3주 프로젝트에서는 항상 라이브 쉐어를 써서 놓쳤던 커밋과 PR 코드리뷰를 배우며 성장했다.
- 팀원을 야근시키는 방법을 해냈다. <- ㅎㅎ 
- 지금 머릿속엔 치킨이 가득한거같다
- 배울게 끝이 없고 모르는 것도 너무 많다
- 생각보다 시간이 너무 없었다 
- 공부와 개발은 생각보다 함께 가지 않는다 ?
- 문서 정리는 어렵다 
- 우리팀원들 성격 너무 좋다
- wiki 에서 사용 기술을 정리하다 보면 글을 쓰기위해서 더 공부하게 된다.
- 4명이서 안싸워고 5주한것도 용하다
- 

## 해야될 것

- 차별점과 특장점 위주로 발표내용
- 과정 성과, 질문 대비

2000 tps

데이터베이스 인덱스 확인
데이터 베이스 트랜잭션
two phase commit
트랜잭션
문서화
돔트리
KEY

구조적으로
어떤 문제