목록프로젝트 (6)
포도가게의 개발일지
Why? - 서비스를 발표 후 질의 중에 서버에 부하를 줄이기 위해 비즈니스로직 리팩토링이나 로드밸런싱을 한다하였는데 로드 밸런싱을 하게 되면 채팅방에 있는 유저가 서로 다른 서버에 존재할 수 있게된다. 이것을 어떻게 연결시켜줄 것인가? How? 첫번째 Node에서 지원해주는 클러스터기능을 이용하는 것입니다. 이 기능은 서버의 CPU코어의 수 만큼 Worker를 만들어 여러개의 서버를 띄우는 것과 비슷한 성능을 하도록 만들어 줍니다. 이유는 node는 기본적으로 싱글쓰레드 방식으로 프로세서를 하나만 쓰게 된다. 때문에 서버 cpu가 2개이상일 경우 나머지 프로세서들이 놀기 때문에 모든 cpu가 노드서버를 하나씩 맡음으로써 요청을 분산 시킬 수 있다.(포트를 공유하는 노드 프로세스를 여러 개 둘 수 있으..
[Node] Chat Server 부하줄이기(분산처리)[1]에서는 서로 다른 서버로 연결되는 버튼을 만들어 수동으로 유저를 서버에 분리해줬다. 하지만 실제 서비스에서는 트래픽을 분산 시키기 위하여 로드 밸런스를 이용하여 정책을 통해 서버에 분산하게 된다. 2번째 목표로 Nginx를 리버스 프록시서버로 사용하여 로드밸런스를 통해 유저를 서버에 분산 시킬 것이다. CORS Error - Access-Control-Allow-Origin header가 없다고 한다. 추가해주자 CORS가 뭘까? 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여..
node --prof 실행파일명 node --prof app.js 그럼 isolate-0x682b200-15100-v8.log 로그파일 생성 하지만 그냥 파일 열면 이해가 안가기 때문에 번역이 필요하다 첫번째 방법(log -> text file로 변환후 읽는다) node --prof-process isolate-0xnnnnn-v8.log > processed.txt 두번째 방법( log -> flame graph) node --prof-process --preprocess -j isolate*.log | flamebearer
매칭 부하 테스트 Local test 10초에 방 10개 60명 / 1초에 방 1개 -> 성공 10초에 방 100개 600명 / 1초에 방 1개 -> 95개 10duration 동안 전부 송신이 안돼는거같음 터미널 1개 10초에 방 164개 약 1000명 10 duration 동안 전부 송신이 안되는거같음 터미널 2개 10초에 방 171개 약 1000명 10 duration 동안 전부 송신이 안되는거같음 터미널 3개 socket 한계? AWS test 초당 12개 소켓 10초간 하면 뻗음 Socket 10 duration 12개 부터 ec2 작동안함 왜지? 10개까지는 작동 -> socket concurrent가 hardware에 영향을 많이 받는다했었음 12/05 20duration 10user cre..
1. 매칭 시스템 고민 어떻게 본인의 방이 생성 됬는지 알까?{ 1: http를 통해 일정 간격마다 확인하여 서버에서 방이 생성되었는지 리스폰 해준다 ? 많은 트래픽이 일정간격마다 들어올텐데 처리에 대한 비용?, 2: push server를 두어 방이 생성 되었는지 알림을 해준다 ? 마이크로서비스에서는 각 기능마다 서버를 나눈다는데 우리도 여러 서버를 현재 두어야 하나? , 3: 방마다 하나의소켓을 만들어 인원이 준비된 방에 들어와있는 socket들에 data를 emit 해준다. ? 소켓이 많이 생기는데 드는 비용?, 4: 처음 들어온 request의 리스폰을 방이 잡힐때 줄 수 있는가? 실제 많은 매칭들은 회사 정책에 따라 다른가?} 2. 게임 진행 싱크 고민 각 유저마다 성능이나 다른 이유로 조금씩 ..
1. 시작 project 생성 Nest new project-name 2. npm 시작 npm run start:dev 3. module, service, controller 생성 nest g(global) service(module 등. ..만들 모듈?) boards(이름) --no-spec(초기화????) 사용 패키지 Pipe 패키지 : npm install class-validator class-transformer TypeOrm, mysql2 : npm install --save @nestjs/typeorm typeorm mysql2 bcryptjs : npm install bcryptjs --save jwt, passport : npm install @nestjs/jwt @nestjs/passp..