18. 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
41. CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
NGINX
HA PROXY
ELB
Elastic Load Balancing (AWS)
Websocket 을 지원하지 않는,
IE 에서 socket.io로 접속할 때
xhr-polling
42. CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
NGINX
HA PROXY
ELB
Elastic Load Balancing (AWS)
같은 서버에 polling 해야만 함
43. CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
NGINX
HA PROXY
ELB
Elastic Load Balancing (AWS)
같은 서버에 polling 해야만 함
CHAT SERVERX
44. 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 를 해싱하여 분배
45. 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 지원)
54. 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
62. REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
HA PROXY
123.0.0.2:9002
123.0.0.1:9001
123.0.0.2:9002
123.0.0.3:9004
어느 서버에
접속해?
63. REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
HA PROXY
123.0.0.2:9002
123.0.0.1:9001
123.0.0.2:9002
123.0.0.3:9004
어느 서버에
접속해?
64. REST SERVER
REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
HA PROXY
123.0.0.2:9002
123.0.0.1:9001
123.0.0.2:9002
123.0.0.3:9004
어느 서버에
접속해?
REDIS
ABCDEFG01234인증 토큰
ABCDEFG01234
SET 토큰
GET 토큰
70. REST SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
123.0.0.1:9001
123.0.0.2:9002
123.0.0.3:9004
서버 목록을 모두 가지고 있어야 함.
장애난 서버와 신규 추가된 서버 정보도 동기화 되어야 함
71. 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
변경된 노드 정보 동기화
72. 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 Coordination
apache zookeeper
- DISTRIBUTED LOCKING
- SERVICE MANAGEMENT
(LOAD BALANCER, DNS . . .)
73. 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
임시 노드로 서버 정보 생성
85. 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.
94. 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 수
// 체팅방 수 등
}
95. CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
CHAT SERVER
admin
Log Collector
InfluxDB
NGINX
Influx.writePoint()
Socket.IO-client
96. 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;
99. 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
100. 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
101. 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
102. 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
103. 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
104. VPC - Authorization Service
VPC - AAA 서비스 플랫폼
VPC - BBB 서비스 플랫폼
VPC - 실시간 서비스 플랫폼
AAA 서비스 Clients 실시간 서비스 Clients
VPC - 운영관리
실시간 자원/성능 모니터링, 통합 로그 수집
. . . . .
VPC peering