실시간 서비스 플랫폼 개발 사례
TRANSCRIPT
![Page 2: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/2.jpg)
기술은 공유되어야 하고, 서비스로 차별화 해야 한다.
김요한 GSSHOP architect
https://www.facebook.com/JohnKim0331 https://github.com/JohnKim [email protected]
![Page 3: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/3.jpg)
요즘 유행하는
실시간 서비스 개발하기 위해
분산 서버 구성하고그리고 운영 하기
Service����������� ������������������ Platform����������� ������������������ ?
scalability����������� ������������������ ?
Monitoring����������� ������������������ ?
![Page 4: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/4.jpg)
1. 실시간 서비스 플랫폼우리는 왜 플랫폼으로 만들어야 하는가 ?
![Page 5: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/5.jpg)
실시간 서비스 플랫폼
![Page 6: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/6.jpg)
실시간 서비스 플랫폼?
![Page 7: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/7.jpg)
![Page 8: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/8.jpg)
https://www.flickr.com/photos/xrrr/1750232320/
FIDS (Flight Information Display System)
![Page 9: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/9.jpg)
실시간 서비스 플랫폼
![Page 10: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/10.jpg)
실시간 서비스 플랫폼 ?
![Page 12: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/12.jpg)
Volkswagen Group Platform
![Page 13: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/13.jpg)
REAL-TIME SERVICE PLATFORM
Dashboards Mobile Notifications
Messengers
![Page 14: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/14.jpg)
is ideal for building dashboards, activity streams, notification and chat systems, backend-less apps and websites, real-time collaboration, live statistics, remote controls, multiplayer games, and more.
REAL-TIME SERVICE PLATFORM
![Page 17: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/17.jpg)
Start with a Platform , and Then Use it for Everything.
![Page 18: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/18.jpg)
![Page 19: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/19.jpg)
2. 분산 서버 설계하기확장성을 고려한 서버 아키텍처 설계NodeJS����������� ������������������ +����������� ������������������ Socket.IO,����������� ������������������ NGINX,����������� ������������������ HAPROXY,����������� ������������������ ELB,����������� ������������������ Zookeeper,����������� ������������������ Redis
![Page 20: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/20.jpg)
“무엇으로 만들 것인가 ? ”가장 많이 사용하고 있는 socket.io
![Page 22: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/22.jpg)
![Page 23: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/23.jpg)
“그런데, 아프리카 처럼 ? ”서버 하나로는 부족하다!SCALE UP & SCALE OUT
![Page 24: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/24.jpg)
SCALE UP
MemoryCPU
![Page 25: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/25.jpg)
SCALE OUT
![Page 26: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/26.jpg)
“Scale Out 은, 처음부터 고려하지 않으면 힘들다 ”
![Page 27: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/27.jpg)
“가장 흔한 방법 부터 적용하자. 하지만 socket.io 에 맞게 해야 한다”
![Page 28: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/28.jpg)
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
?
가장 쉬운 방법
![Page 29: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/29.jpg)
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
NGINXHA PROXY
ELBElastic Load Balancing (AWS)
![Page 30: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/30.jpg)
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
NGINXHA PROXY
ELBElastic Load Balancing (AWS)
Websocket 을 지원하지 않는,IE 에서 socket.io로 접속할 때
xhr-polling
![Page 31: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/31.jpg)
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVERNGINX
HA PROXYELB
Elastic Load Balancing (AWS)
같은 서버에 polling 해야만 함
![Page 32: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/32.jpg)
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVERNGINX
HA PROXYELB
Elastic Load Balancing (AWS)
같은 서버에 polling 해야만 함
CHAT SERVERX
![Page 33: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/33.jpg)
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
NGINX
upstream io_nodes { ip_hash; server 127.0.0.1:6001; server 127.0.0.1:6002; server 127.0.0.1:6003; server 127.0.0.1:6004;}
Client 의 IP 를 해싱하여 분배
![Page 34: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/34.jpg)
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
HA PROXY
backend io_nodes balance source server 127.0.0.1:6001 . . . . server 127.0.0.1:6002 . . . . server 127.0.0.1:6003 . . . . server 127.0.0.1:6004 . . . .
Client 의 IP 를 해싱하여 분배 (v1.5 부터 SSL 지원)
![Page 35: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/35.jpg)
XCHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
ELBElastic Load Balancing (AWS)
![Page 36: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/36.jpg)
XCHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
ELBElastic Load Balancing (AWS)
![Page 37: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/37.jpg)
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
ELBElastic Load Balancing (AWS)
TCP MODEHA
PROXY
HA PROXY
![Page 38: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/38.jpg)
“역할 별로 분리 해서 확장하자”좀더 고민해서,
![Page 39: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/39.jpg)
REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
메시지 송신 전용(HTTP RESTful)
메시지 수신 전용(socket)
![Page 40: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/40.jpg)
REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
HA PROXY
HA PROXY
![Page 41: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/41.jpg)
REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
HA PROXY
HA PROXY
![Page 42: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/42.jpg)
REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
HA PROXY
HA PROXY
REDIS
publish
subscribe
![Page 43: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/43.jpg)
REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
HA PROXY
HA PROXY
REDIS
publish
subscribe
Broker (pub/sub server)
Publisher
Subscriber 1
Subscriber 2
Subscriber 3
redis rabbitMQ
![Page 44: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/44.jpg)
REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
HA PROXY
HA PROXY
![Page 45: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/45.jpg)
REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
HA PROXY
HA PROXY
관리자가 메시지 발송 !!
![Page 46: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/46.jpg)
REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
HA PROXY
HA PROXY
REDIS
publish
subscribe
![Page 47: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/47.jpg)
REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
HA PROXY
HA PROXY
![Page 48: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/48.jpg)
REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
메시지 송신 전용(HTTP RESTful)
메시지 수신 전용(socket)
![Page 49: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/49.jpg)
REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT 서버 할당접속 인증
(HTTP RESTful)
CHAT 메시지 송/수신 전용(socket)
![Page 50: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/50.jpg)
REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT 서버 할당접속 인증
(HTTP RESTful)
![Page 51: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/51.jpg)
REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
HA PROXY123.0.0.2:9002
123.0.0.1:9001
123.0.0.2:9002
123.0.0.3:9004
어느 서버에 접속해?
![Page 52: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/52.jpg)
REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
HA PROXY123.0.0.2:9002
123.0.0.1:9001
123.0.0.2:9002
123.0.0.3:9004
어느 서버에 접속해?
![Page 53: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/53.jpg)
REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
HA PROXY123.0.0.2:9002
123.0.0.1:9001
123.0.0.2:9002
123.0.0.3:9004
어느 서버에 접속해?
REDISABCDEFG01234인증 토큰
ABCDEFG01234
SET 토큰
GET 토큰
![Page 54: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/54.jpg)
”“인증 처리 ! OAuth 2.0 로 별도의 서버로 구축한다
![Page 55: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/55.jpg)
”“인증 처리 ! OAuth 2.0 로 별도의 서버로 구축한다
![Page 56: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/56.jpg)
“인증 처리 ! OAuth 2.0 로 별도의 서버로 구축한다”
SPRING SECURITY OAUTH 2
![Page 57: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/57.jpg)
“접속할 서버를 할당하려면 ? ”먼저, 서버 목록을 가지고 있어야 한다.
![Page 58: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/58.jpg)
REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
123.0.0.1:9001
123.0.0.2:9002
123.0.0.3:9004
![Page 59: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/59.jpg)
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
123.0.0.1:9001
123.0.0.2:9002
123.0.0.3:9004
서버 목록을 모두 가지고 있어야 함.장애난 서버와 신규 추가된 서버 정보도 동기화 되어야 함
![Page 60: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/60.jpg)
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
123.0.0.1:9001
123.0.0.2:9002
123.0.0.3:9004
zookeeper
watching node변경된 노드 정보 동기화
![Page 61: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/61.jpg)
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
123.0.0.1:9001
123.0.0.2:9002
123.0.0.3:9004
zookeeper
watching node변경된 노드 정보 동기화
create EPHEMERAL node임시 노드로 서버 정보 생성
The King of Coordinationapache zookeeper
- DISTRIBUTED LOCKING- SERVICE MANAGEMENT (LOAD BALANCER, DNS . . .)
![Page 62: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/62.jpg)
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
123.0.0.1:9001
123.0.0.2:9002
123.0.0.3:9004
zookeeper
watching node변경된 노드 정보 동기화
create EPHEMERAL node임시 노드로 서버 정보 생성
![Page 63: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/63.jpg)
“서버는 어떻게 할당해 주는가?”같은 채팅방 사람들은 같은 서버에 접속하도록.
![Page 64: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/64.jpg)
같은 채팅방 사람들은 같은 서버에 접속하도록.
Client 의 IP 를 해싱하여 분배
체팅방 키를 해싱하여 분배
NGINX 의 ip_hashHAPROXY 의 balance source
![Page 65: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/65.jpg)
CONSISTENT HASHINGhttps://github.com/3rd-Eden/node-hashring
var HashRing = require('hashring');
var ring = new HashRing([ '127.0.0.1', '127.0.0.2', '127.0.0.3', '127.0.0.4' ]);
ring.get('채팅방키’); // 접속 서버 반환
![Page 66: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/66.jpg)
Weighted CONSISTENT HASHINGhttps://github.com/3rd-Eden/node-hashring
var HashRing = require('hashring');
var ring = new HashRing({ '127.0.0.1': { weight: 200 }, '127.0.0.2': { weight: 200 }, '127.0.0.3': { weight: 200 }, '127.0.0.4': { weight: 1000 } });
ring.get('채팅방키’); // 접속 서버 반환
![Page 67: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/67.jpg)
![Page 68: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/68.jpg)
3. 운영하기서버 실행 및 모니터링하기uptime,����������� ������������������ PM2,����������� ������������������ influxDB,����������� ������������������ grafana
![Page 69: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/69.jpg)
https://github.com/foreverjs/forever
A simple CLI tool for ensuring that a given script runs continuously (i.e. forever).
![Page 70: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/70.jpg)
$ npm install forever -g
$ forever start server.js
![Page 71: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/71.jpg)
https://github.com/Unitech/pm2
PM2 is a production process manager for Node.js applications with a built-in load balancer . It allows you to keep applications alive forever , to reload them without downtime and to facilitate common system admin tasks.
![Page 72: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/72.jpg)
$ npm install pm2 -g
$ pm2 start server.js
$ pm2 reload all
$ pm2 startup
-i 0
![Page 73: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/73.jpg)
$ pm2 start server.js -i 0
node process 1
node process 2
node process 3
node process 4
load balancer
cluster mode
$ pm2 reload all
![Page 74: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/74.jpg)
![Page 75: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/75.jpg)
![Page 76: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/76.jpg)
Grafana is a frontend for Graphite, InfluxDB and OpenTSDB with powerfull visualization features for time series data
![Page 77: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/77.jpg)
![Page 78: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/78.jpg)
InfluxDBdistributed, time series database with no external dependencies
![Page 79: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/79.jpg)
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
admin
Log Collector
InfluxDB
NGINX +
![Page 80: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/80.jpg)
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
admin
Log Collector
InfluxDB
NGINX
Socket.IO (separated namespace for monitoring)
{ pid : process.pid,
arch : process.arch, platform : process.platform, uptime : process.uptime(), memory : process.memoryUsage(),
// 그 외 // 서버에 연결된 Client 수 // 체팅방 수 등
}
![Page 81: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/81.jpg)
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
admin
Log Collector
InfluxDB
NGINX
Influx.writePoint()
Socket.IO-client
![Page 82: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/82.jpg)
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
admin
Log Collector
InfluxDB
NGINX + // nginx 설정
auth_basic "Restricted"; auth_basic_user_file /path/to/my/htpasswd/file;
![Page 83: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/83.jpg)
![Page 84: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/84.jpg)
AWS 기반 실시간 서비스 플랫폼( 예시, 주요 인스턴스만 표기 함 )
![Page 85: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/85.jpg)
Availability Zone #1
Auth Servers (EC2 instances)
Chat Servers (EC2 instances)
redis (ElastiCache)
zookeeper (EC2 instances)
message DB (DynamoDB)
security group
security group security group security group
![Page 86: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/86.jpg)
Availability Zone #1
Auth Servers (EC2 instances) Chat Servers
(EC2 instances)
redis (ElastiCache)
zookeeper (EC2 instances)
message DB (DynamoDB)
security group
security group security group security group
Availability Zone #2
Auth Servers (EC2 instances) Chat Servers
(EC2 instances)
redis (ElastiCache)
zookeeper (EC2 instances)
message DB (DynamoDB)
security group
security group security group security group
Auto Scaling group
VPC
Elastic Load Balancing
![Page 87: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/87.jpg)
Availability Zone #1
Auth Servers (EC2 instances) Chat Servers
(EC2 instances)
redis (ElastiCache)
zookeeper (EC2 instances)
message DB (DynamoDB)
security group
security group security group security group
Availability Zone #2
Auth Servers (EC2 instances) Chat Servers
(EC2 instances)
redis (ElastiCache)
zookeeper (EC2 instances)
message DB (DynamoDB)
security group
security group security group security group
Auto Scaling group
VPC
Elastic Load Balancing
![Page 88: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/88.jpg)
Availability Zone #1
Auth Servers (EC2 instances) Chat Servers
(EC2 instances)
redis (ElastiCache)
zookeeper (EC2 instances)
message DB (DynamoDB)
security group
security group security group security group
Availability Zone #2
Auth Servers (EC2 instances) Chat Servers
(EC2 instances)
redis (ElastiCache)
zookeeper (EC2 instances)
message DB (DynamoDB)
security group
security group security group security group
Auto Scaling group
VPC - Service Platform
Elastic Load Balancing
VPC - Operation
VPC peeringLog Collector (EC2 instances)
InfluxDB (EC2 instances)
Grafana (EC2 instance)
security group security group
Administrator
![Page 89: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/89.jpg)
Availability Zone #1
Auth Servers (EC2 instances) Chat Servers
(EC2 instances)
redis (ElastiCache)
zookeeper (EC2 instances)
message DB (DynamoDB)
security group
security group security group security group
Availability Zone #2
Auth Servers (EC2 instances) Chat Servers
(EC2 instances)
redis (ElastiCache)
zookeeper (EC2 instances)
message DB (DynamoDB)
security group
security group security group security group
Auto Scaling group
VPC - Service Platform
Elastic Load Balancing
VPC - Operation
VPC peeringLog Collector (EC2 instances)
InfluxDB (EC2 instances)
Grafana (EC2 instance)
security group security group
Administrator
![Page 90: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/90.jpg)
VPC - Authorization Service
VPC - AAA 서비스 플랫폼
VPC - BBB 서비스 플랫폼
VPC - 실시간 서비스 플랫폼
AAA 서비스 Clients 실시간 서비스 Clients
VPC - 운영관리 실시간 자원/성능 모니터링, 통합 로그 수집
. . . . .
VPC peering
![Page 91: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/91.jpg)
![Page 92: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/92.jpg)
왜 였나? “ ” 마지막 정리하면서….
![Page 93: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/93.jpg)
성능 “ ” 하지만, 항상 빠르지는 않다
![Page 94: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/94.jpg)
생산성 “ ” 이건 거의 중독될 수도 있다.
![Page 95: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/95.jpg)
빠른 시작 “ 장애나면, 즉시 재시작하고 보자 !
”
![Page 96: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/96.jpg)
그리고 ,
“실시간 서비스가 딱 맞다”
![Page 97: 실시간 서비스 플랫폼 개발 사례](https://reader031.vdocuments.net/reader031/viewer/2022012309/55a6bae01a28abe6088b4783/html5/thumbnails/97.jpg)