SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
Real Time Analysis
Open Source Consulting, Inc
2
- Internal Use Only -
RabbitMQ Cluster
System Architecture
Large Scale Real Time Data Analysis Platform
Service Provider
Service Vendor
Service Vendor
Service Vendor
Service Vendor
HTTP, TCP
Data Service
Instance
Instance
PostgreSQL
Web Socket Client
RabbitMQ #1
RabbitMQ #2
Redis Cluster
Redis #1
Redis #2
State Service
Instance
Classification
Service
Instance
Publish
Publish/Subscribe
Engine
Web Service
Instance
Publish
Subscribe
• Client로부터 입력되는 서비스는 TCP 소켓과 HTTP 등의 서비스
벤더 규약에 따라 처리
• 종목 5,000개를 기준으로 1분 단위의 message publish
Data
Service
• DS가 publish한 데이터를 subscribe - Order guarantee
• 종목에 대한 상태 추가 후 message publish
State
Service
• 서비스 시작 시 300M의 처리 엔진을 메모리로 로딩
• SS가 publish한 데이터를 subscribe
• 상태 분류 작업 및 캐시(Redis) 업데이트
Classification
Service
• 사전에 연결된 웹 소켓을 통해 클라이언트에 연결
• 캐시로 들어오는 메시지를 인식하고 클라이언트 푸시 진행
• Flask를 활용하여 웹 서비스를 구축
Web
Service
3
- Internal Use Only -
Data Flow
Data Service
Linux
Python 2.7
Event Handler(callback)
pika
3rd Party
RabbitMQ
API is called by
vendor service
State Service
Linux
Python 2.7
pika
Publish processed
data every 15 seconds Business logic
RabbitMQ
Classification Service
Linux
Python 2.7
redis-py
Business logic
In-memory
(Redis)
pika
Augment the state3
2
1
RabbitMQ
Insert/update state processed data
to redis
Publish4
Engine File
Engine file load when CS
daemon is started
6
5
Process
data
Classification Service
Linux
Python 2.7
redis-py
Business logic
pika
Client
11
Push data
to client
Publish processed
data
7
WebSocket Service
Linux
Python 2.7
redis-py
websocket-
client(flask)
Subscribe data8
publish9
10
모든 component (DS, SS, CS) 가 Redis 에서 config, state (state history), parameter 등을 받아 service 를 시작
DS: Config + Parameter
SS: Config + State History
CS: Config + Engine Serialization
4
- Internal Use Only -
Data Service Flow
Start
Config Load
Service Vendor
Handler Initialize
Handler Wait
Call DS Module
Data Send
handlerVendorData
Service
Vendor
15 or
60 sec?
Redis
Configuration
Parameter
클라이언트 요청 대기
데이터를 큐(메모리)에 누적
Yes
Quant 모듈 호출
Module
Find queue
해당 종목을 처리하는 큐를 확인
Send data to
queue
RabbitMQ로 데이터를 전송
5
- Internal Use Only -
State Service Flow
Start
constructor( config,
stateHistory )
Start RabbitMQ
Receiver
updateState
Redis
Configuration
State History
DS로부터 수신할 RabbitMQ 큐에 Listener
를 등록
Data
Receive
Module State augment를 위한 Quant 모듈 호출
Find queue 해당 종목을 처리하는 큐를 확인
Send data to
queue RabbitMQ로 상태변경된 SS데이터를 전송
updateCurrentState
Redis
Redis에 현재 상태 업데이트
6
- Internal Use Only -
Classification Service Flow
Start
constructor( config,
serialisation )
Load Engine Files
Redis
construct engine,
RabbitMQ queue subscription registration
Call Engine Module
Redis로부터 Classification에 사용될 파일
을 로드
CS엔진으로 Load된 JSON을 그대로 전달Classification
Engine
Start RabbitMQ
Receiver
SS로부터 수신할 RabbitMQ 큐에 Listener
를 등록
Start Redis
Connection
Start Redis
Connection
Waiting queue
Data
Receive
Call Engine Quant 엔진으로 데이터 전달
Insert processed
data to Redis
Redis push
서비스는 입력된 데이터와 처리 데이터에 대한 로그를 기록해야 함
Redis에는 사전에 설정된 엔진파일을 로드하고 있어야 함
로드시 RabbitMQ 관련된 정보를 활용하여 큐를 구성해야 함
결과를 레디스로 전달
7
- Internal Use Only -
Web Service Flow
Start
Config Load
Config
Information
Connect Redis
Redis
Start WebSocket
CS데이터를 Redis로부터 받으므로 사전 연결
Wait connection
클라이언트로 접속 처리를 위한 WebSocket 시작
Try connect
Data
Receive
Redis로부터 CS데이터 수신
Push data to
customers
처리된 데이터를 고객에게 웹소켓을 통해 Push
WebSocket를 통해 클라이언트와 연결하고 있어야 함
CS로부터의 데이터 수신은 Redis PUB/SUB 기능을
활용하여 처리하도록 함
8
- Internal Use Only -
Start Service Components
python script를 활용하여 Redis로부터 필요한 설정정보를 받아서 각각의 Service instance 생성 및 run()을 호출
python script 들로 executable 을 만들어 scheduler (crontab) 에 등록
Large Scale Real Time Data Analysis Platform
Data Service
Instance
Instance
State Service
Instance
Classification
Service
Instance
Engine
Web Service
Instance
Configuration in Redis
<각 서비스 crontab에 등록>
9
- Internal Use Only -
Platform Requirement
Data Service
partition: d servers covering T / d topics each
process:
• to generate random numbers (seeded) to construct outbound me
ssage per topic every P
seconds
• to publish the outbound messages when they are ready
State Service
partition: s servers covering T / s topics each
state model:
• list of data published from data service so far (ordered in time)
• averages of the data in different time periods
process:
• to subscribe messages under the topic belongs its coverage as
well as relevant shared topics
• to update the state held in the instance
• to publish the outbound messages when the state is updated
• to update the state in cache
Classification Service
partition: c servers covering G / c engines each
classification model:
• maximum and minimum of the state
• constructor takes a dummy large text data
process:
• to subscribe messages under the relevant topics
• to classify the state
• to update the classification result in cache
Web Service
partition: as required
process:
• to cache client views
• to deliver the update if it is relevant to the client view
System Configuration
- Production on AWS -
11
- Internal Use Only -
Production Architecture on AWS
Amazon Region (AP-Northeast)
TCP
Data Service
Service
Daemon
Data Service
Service
Daemon
Redis Redis
Master-Slave
Redis
(Sentinel)
RabbitMQ RabbitMQ
Active-Active
Active-Standby
RDS
Snapshots
Data Backup
Amazon S3
bucket
State Service
Service
Daemon
State Service
Service
Daemon
Classification
ServiceService
Daemon
Classification
Service
Daemon
Web Service
Service
Daemon
Web Service
Service
Daemon
backup
Customers
Web Socket
초기 m4.large(2 vCPU, 8GB Memory, EBS) 또는 m3.large(2 vCPU, 7.5GB Memory, SSD) 기반으로 시작
각 서비스에 대한 이중화 구성으로 데이터센터 장애에 대한 대비를 수행하도록 구성
12
- Internal Use Only -
Target Instances List
목적 서버 이름 인스턴스 유형 도메인 이름 지역 설명
Admin Server prd-ap-admin t2.medium admin.buysignal.com ap-northeast-1a
Data Service
prd-ap-ds-1
t2.large/
m3.large
N/A
ap-northeast-1a
• 기본 2개의 서버로 초기 구성
• Elastic IP 할당
prd-ap-ds-2
t2.large/
m3.large
ap-northeast-1b
State Service
prd-ap-ss-1
t2.large/
m3.large
N/A
ap-northeast-1a
• 내부접속만 가능하도록 Security
Group 구성
prd-ap-ss-2
t2.large/
m3.large
ap-northeast-1b
Classification Service
prd-ap-cs-1
t2.large/
m3.large N/A
ap-northeast-1a
• 내부접속만 가능하도록 Security
Group 구성
prd-ap-cs-2
t2.large/
m3.large
ap-northeast-1b
Web Service
prd-ap-ws-1
t2.large/
m3.large
api.buysignal.com
ap-northeast-1a
• Service에 따른 Auto Scaling 적용
• Web Socket을 위한ELB적용
prd-ap-ws-2
t2.large/
m3.large
ap-northeast-1b
RabbitMQ
prd-ap-rabbit-1 m3.large
N/A
ap-northeast-1a
• 기본 서버로 구성
prd-ap-rabbit-2 m3.large ap-northeast-1b
Redis
prd-ap-redis-1 r3.large
N/A
ap-northeast-1a • 2vCPU, 15G 메모리 구성
• Amazon Elastic Cache 검토 필요prd-ap-redis-2 r3.large ap-northeast-1b
Database prd-ap-rds-master db.m3.xlarge N/A • PostgreSQL RDS
시스템에 대한 t2.large 서비스를 최소 기준으로 구성하여 초기 서비스 이후 상태 추이 추적 후
다운그레이드 적용
13
- Internal Use Only -
Operating Cost Estimate on AWS
Cost Estimate: http://calculator.s3.amazonaws.com/index.html#r=NRT&key=calc-633F3F2A-0C87-484B-8C1A-99AEEB2E5403
각 시스템간 이중화 구성 시 monthly 100% utilization 기준 2,640 USD 예상
Weekly 40 hours 기준 서비스 구동 시 월간 비용 1,306 USD 비용 청구 예상
14
- Internal Use Only -
Deployment Plan
local master
Source Repository
Local Dev
Product
Local Dev, AWS Dev Server 는 소스 저장소에 있는 최신 소스를 기반으로 Deploy를 수행 한다.
Production server에는 staging에서 테스트 완료된 애플리케이션을 통한 복사를 통해 배포(장애
발생 요소 제거)
운영단계 콛
Binary copy
Staging
15
- Internal Use Only-
1KbMessage
[root@localhost perf]# ./remote_thr.sh
tcp://192.168.56.101:5555 1024 100000
Sent elapsed time : 2.339 sec
Sender
2Kb Message
[root@localhost perf]# ./remote_thr.sh
tcp://192.168.56.101:5555 2048 100000
Sent elapsed time : 1.499 sec
4KbMessage
[root@localhost perf]# ./remote_thr.sh
tcp://192.168.56.101:5555 4096 100000
Sent elapsed time : 2.137 sec
10Kb Message
Receiver
[root@localhost perf]# ./local_thr.sh
tcp://eth0:5555 1024 100000
message size: 1024 [B]
message count: 100000
mean throughput: 39968[msg/s]
mean throughput: 327.417856[Mb/s]
[root@localhost perf]# ./local_thr.sh
tcp://eth0:5555 2048 100000
message size: 2048 [B]
message count: 100000
mean throughput: 49504[msg/s]
mean throughput: 811.073536[Mb/s]
[root@localhost perf]# ./local_thr.sh
tcp://eth0:5555 4096 100000
message size: 4096 [B] mes
sage count: 100000
mean throughput: 29446[msg/s]
mean throughput: 964.886528[Mb/s]
[root@localhost perf]# ./local_thr.sh
tcp://eth0:5555 10240 100000
message size: 10240 [B]
message count: 100000
mean throughput: 13048[msg/s]
mean throughput: 1068.89216[Mb/s]
[root@localhost perf]# ./remote_thr.sh
tcp://192.168.56.101:5555 10240 100000
Sent elapsed time : 3.091 sec
ØMQ Throughput – 2 vCore, 8GB Memory
16
- Internal Use Only -
Rabbit MQ Throughput – 2 vCore, 8GB Memory
DescriptionSolution
RabbitMQ
• Stable send/receiveprocess
• Can use AMQP(High performance)
• Similar producer/consumerspeed
• Support runtime queue create/delete(veryflexible)
Producer/Consumer
[jboss@localhost rabbitmq-java-client-bin-3.5.5] ./runjava.sh com.rabbitmq.examples.MulticastMain --size
2048
starting consumer #0
starting producer #0
time: 6.000s, sent: 7198 msg/s, received: 7190 msg/s, min/avg/max latency: 1463/3982/23183 microseconds
time: 7.000s, sent: 7335 msg/s, received: 7341 msg/s, min/avg/max latency: 1508/2892/6231 microseconds
time: 8.000s, sent: 7386 msg/s, received: 7370 msg/s, min/avg/max latency: 1358/3691/15787 microseconds
time: 9.000s, sent: 7262 msg/s, received: 7270 msg/s, min/avg/max latency: 1306/3091/7463 microseconds
time: 10.000s, sent: 7283 msg/s, received: 7287 msg/s, min/avg/max latency: 1551/2924/7089 microseconds
time: 11.000s, sent: 7164 msg/s, received: 7170 msg/s, min/avg/max latency: 1565/3522/11979 microseconds
time: 12.000s, sent: 6043 msg/s, received: 6034 msg/s, min/avg/max latency: 1097/8846/41617 microseconds
time: 13.000s, sent: 6040 msg/s, received: 6051 msg/s, min/avg/max latency: 943/11451/58797 microseconds
[jboss@localhost rabbitmq-java-client-bin-3.5.5] ./runjava.sh com.rabbitmq.examples.MulticastMain --size
10240
starting consumer #0
starting producer #0
time: 5.000s, sent: 2447 msg/s, received: 2447 msg/s, min/avg/max latency: 550/1344/17682 microseconds
time: 6.000s, sent: 2701 msg/s, received: 2702 msg/s, min/avg/max latency: 569/1134/4756 microseconds
time: 7.000s, sent: 2732 msg/s, received: 2731 msg/s, min/avg/max latency: 534/1122/3344 microseconds
time: 8.000s, sent: 2728 msg/s, received: 2730 msg/s, min/avg/max latency: 551/1121/2082 microseconds
time: 9.000s, sent: 2798 msg/s, received: 2798 msg/s, min/avg/max latency: 606/1116/2105 microseconds
10
- Internal Use Only-
Producer/Consumer Simultaneously; 2K and 10K message
17
- Internal Use Only -
Comparison – RabbitMQ vs. ØMQ
Criteria RabbitMQ Ø MQ
Short Response
Time
Short MessagingRoutes Short Short
Performance
(Based on10Kb) 2798msg/sec
4.66 times faster than RabbitMQ – 13048
msg/sec
Asynchronous
Processing
Sync, Async Supported Async based eventprocessing
Light-weight Software
Stacks
Light MoreLight
High Availability
No Single Point of
Failures
HA ClusterSupport No BrokerArchitecture
Flexibility
Supported DataFormats Various(JSON, POJO, etc.) Various(JSON, Thrift, Google ProtoBuf, etc.)
Easy Configuration GUI BasedConfiguration Implementationneeded
Runtime Configuration Runtime deploy for queue, topic Implementationneeded
CommercialSupport SpringSource(VMWare) iMatrix
Monitoring Many plugin for monitoring, web basedGUI Implementationneeded
Remarks
• Powerful web based monitoring
• AMQP1) Support
• Dynamic topic management
• Easy of Development
• High throughput/Low latency
• Auto reconnect amongpeer
• Run on arbitrary platforms (Windows,
Android)
1) AMQP(Asynchronous Message Queuing Protocol) : Supported by Microsoft, Red Hat, VMware, Cisco, Novell, SoftwareAG, etc.
Failover Scenario
19
- Internal Use Only -
Amazon AWS Instances
Provider
Redis(Master-Slave)
Data Service
State Service
Classification
Service
Web
Service
Not in VPC
TCP/HTTP
RabbitMQ Cluster
AP Northeast(Tokyo)
CIDR: 172.31.0.0/16
Data Service
172.31.7.219
Availability Zone#1c
Classification Service
172.31.7.218
Web Service
172.31.7.216
Redis #1
172.31.21.218
Availability Zone#1a
RabbitMQ #1
172.31.21.219
RabbitMQ #2
172.31.16.52
State Service
172.31.7.217
Redis #2
172.31.21.17
security group(realtime-analysis-sg)
Name Instance Type
Data Service t2.medium
State Service t2.medium
Classification Service t2.medium
Web Service t2.medium
RabbitMQ-1 t2.large
RabbitMQ-2 t2.large
Redis-1 t2.large
Redis-2 t2.large
20
- Internal Use Only -
사전 작업 고려 조건
인스턴스
• 클라우드 인스턴스 shutdown에 대비한 중앙 집중형 모니터링(Nagios, Zabbix 등) 솔루션을 통한
shutdown alarm 구성 및 인스턴스 재기동 프로세스
• 인스턴스 shutdown에 대해서는 Cloud API 연계를 통한 template launch를 활용하여야 가능함
Process
• 프로세스들에 대한 상태 체크 모니터링 및 Process down시 재기동 스크립트를 각 인스턴스에 구성
• 프로세스에 대한 체크는 crontab을 활용하여 처리
• OS와 같은 다른 문제로 인하여 프로세스에 문제가 발생했을 경우 재시작을 한다고 해당 문제가
해결되지 않을 수도 있음
21
- Internal Use Only -
Scenario – Data Service Instance
Active-Active Cluster
RabbitMQ
#1
Data
Service
RabbitMQ
#2
Master-Slave
Redis #1 Redis #2
State
Service
Class
Service
Web
Service
Data
Service
TCP ELB
Client
Tokyo Region
장애내용 테스트 방법
Data Service Virtual Machine에 대한 인스턴스 장애 Data Service에 대한 EC2 Instance를 shutdown 시킴
Data Service Process에 대한 장애 Data Service Process에 대한 kill 명령 수행
1
2
22
- Internal Use Only -
Scenario – Middleware Instance
Active-Active Cluster
RabbitMQ
#1
Data
Service
RabbitMQ
#2
Master-Slave
Redis #1 Redis #2
State
Service
Class
Service
Web
Service
Data
Service
TCP ELB
Client
Tokyo Region
장애내용 테스트 방법 예상 작동
RabbitMQ Active 서비스 장애 RabbitMQ Cluster의 main instance를 shutdown 시킴 RabbitMQ를 통한 지속적인 데이터 송수신 정상 기동
Redis Master-Slave 서비스 장애 Redis Master에 대한 EC2 Instance를 shutdown 시킴 Reids의 configuration 정보, 데이터 송수신 정상 기동
Redis Cache connection error Redis 인스턴스에 대한 process를 kill시킴 서비스에서 정상적으로 slave 서버 접속 후 데이터 처리 확인
3
4
5
23
- Internal Use Only -
Scenario – State/Classification/Web Instance
Active-Active Cluster
RabbitMQ
#1
Data
Service
RabbitMQ
#2
Master-Slave
Redis #1 Redis #2
State
Service
Class
Service
Web
Service
Data
Service
TCP ELB
Client
Tokyo Region
장애내용 테스트 방법 예상 작동
State 인스턴스 프로세스 장애 State Service의 process를 kill crontab 데몬을 통한 감시 및 프로세스 재기동
Classification Service 장애 Classification Service의 process를 kill Reids의 configuration 정보, 데이터 송수신 정상 기동
6
7
24
- Internal Use Only -
Source Code Directory Structure
Directory 구조 및 설명
/home/quant 설명 파일명 실행방법 비고
bin C Code 변환 실행 파일 QuantManager /home/quant/bin/QuantStart.sh QuantStop.sh
C Code 변환 실행 파일 QuantService /home/quant/bin/QuantStart.sh QuantStop.sh
C Code 변환 실행 파일 WebSocketServer /home/quant/bin/WebServerStart.sh WebServerStop.sh
C Code 변환 실행 파일 WebSocketPup /home/quant/bin/WebServerStart.sh WebServerStop.sh
etc 구동시 필요한 config항목 파일 quant.ini
lib 공통 코드 구현체, confing class 구성 CommonClass.py
데몬으로 실행 시키는 class 파일 Daemon.py
QuantService에 상속되어지는 Class 파일 Rabbitmq.py
Rabbitmq에 상속되어지는 Class 파일 Redis.py 개별 파일로 실행 시
Python /home/quant/lib/Redis.py
- Redis에 환경 config 값을 등록 수
정
- 차후 “set” function에 값을 수정
요망
WebSocketServer 사용하는 참조 파일 wsbridge.py
log 차후 로그 수집 디렉토리
cbc(callback) 예전 callback 디렉토리를 cbc로 변경 DataCallBack.py
StateCallBack.py
ClassCallBask.py
QuantServer(ServiceSlass.py) 상속됨 Service Type에 맞춰 파일의 내용을 수
정합니다.
web Css, js, index.html만 남기고 모두 삭제 quant.js에서 WebSocket 구현
src
-/component Service 구동 원천 소스 QuantManager.py
ServiceClass.py
WebSocketPub.py
WebSocketServer.py
- QuantManager
- QuantService(SeviceClass.py)
- WebSocketPub
- WebSocketServer
Cython로 embed된 파일 만들어집니
다.
25
- Internal Use Only -
Source Code Directory Structure
Directory 구조 및 설명
/home/quant 설명 파일명 실행방법 비고
-/make Cython embed 파일 생성 script make.sh ./make.sh or sh make.sh
-/install rebbitmq 설치 script입니다. rabbitmq-install.sh sh rabbitmq-install.sh Erlang, rabbitmq의 yum 설치합니다.
pip로 python 관련 모듈을 설치합니다. pip-setup.sh sh pip-setup.sh Zeromq, redis 등 필요한 library를 설치합니다.
Appendix
- Platform TO-BE Architecture Guide -
27
- Internal Use Only -
RabbitMQ High Availability
Publisher
pika(librabbitmq)
Consumer
Publisher
pika(librabbitmq)
Publisher
pika(librabbitmq)
Consumer
ELB
RabbitMQ 1 RabbitMQ 2
RabbitMQ Cluster
Round-robin
Work Queue Work Queue
Round-robin
Make RabbitMQ Instances as a cluster
 각 Publisher 및 Consumer 에서는 각각 하나의 connection 을 재사용
 Scalability : RabbitMQ Cluster 안의 노드 수를 동적으로 구성할 수 있으며, 각 서비스 또한 동적으로 확장 가능
 Message Durability : RabbitMQ Message Queue 를 파일에 저장하거나 노드들간 복제를 통한 메시지 유실방지
 범용적인 메시징 시스템으로 활용 가능
Features
28
- Internal Use Only -
Redis High Availability with Sentinel
Redis
Slave
Redis
Master
Application Redis Client
Connection Pool
Replication
HA Module
(demon)
Error
health check
health check생성 및
Pool 교체
destroy
Configure Redis master/slave using sentinel to make high availability
 주기적으로 master 서버와 slave 서버를 모니터링(health check) 하고
 예기치 않은 장애 발생으로 master서버에 문제가 발생하는 경우 sentinel은 slave를 신규 master 서버로 승격시킴
 기존 master 서버 connection pool을 신규 connection pool로 교체하고
 기존 connection pool의 자원을 해제한다. (내부적으로 기존 master 서버를 slave 서버로 관리함)
 기존 master 서버 장애 복구 후 slave 서버로 재기동 (수동작업)
29
- Internal Use Only -
Redis High Availability with ZooKeeper
Service
HA Client
Service
HA Client
Service
HA Client
Redis
Slave
Redis
Master
Replication
Master health check
 Redis 접속설정은 ZoooKeeper Server 에서 통합관리
 Redis Client Server 중심의 장애 상황에 따른 Auto Failover를 수행. (by RedisManager)
 ZooKeeper Server 장애 시에도 정상적인 서비스가 가능
ZooKeeper
RedisManager
Features
Architecture
30
- Internal Use Only -
Redis High Availability with ZooKeeper
 HA Client 의 장애 통지는 ZooKeeper 의 /db/redis/master/[client znode] 의 data 를 변경하는 작업.
 Redis Manager 의 Failover 처리
 HA Client 의 Master 변경은 새로운 Master 주소로의 connection pool 을 재생성함.
HA Client ZooKeeper Redis Manager
Master health check
장애 통지 장애정보 변경 Event 발생 장애 여부
Failover 처리
Yes
Master 변경 Event 발생Master 변경
장애 발생
No
Slave 를 Master 로 승격 /db/redis/master 의 host name data 변경
Make Redis HA without sentinel
31
- Internal Use Only -
OPEN
SHARE
CONTRIBUTE
ADOPT
REUSE

Contenu connexe

Tendances

[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1Ji-Woong Choi
 
[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-toJi-Woong Choi
 
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)Ji-Woong Choi
 
오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0sprdd
 
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415sprdd
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-Woong Choi
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3Ji-Woong Choi
 
Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0sprdd
 
Red Hat Enterprise Virtualization
Red Hat Enterprise VirtualizationRed Hat Enterprise Virtualization
Red Hat Enterprise Virtualizationhipark
 
Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0sprdd
 
오픈소스 모니터링비교
오픈소스 모니터링비교오픈소스 모니터링비교
오픈소스 모니터링비교sprdd
 
제3회난공불락 오픈소스 인프라세미나 - Pacemaker
제3회난공불락 오픈소스 인프라세미나 - Pacemaker제3회난공불락 오픈소스 인프라세미나 - Pacemaker
제3회난공불락 오픈소스 인프라세미나 - PacemakerTommy Lee
 
2node cluster
2node cluster2node cluster
2node clustersprdd
 
[오픈소스컨설팅]MySQL Monitoring
[오픈소스컨설팅]MySQL Monitoring[오픈소스컨설팅]MySQL Monitoring
[오픈소스컨설팅]MySQL MonitoringJi-Woong Choi
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick GuideJi-Woong Choi
 
서버, 도커 컨테이너, 데이터베이스, WAS, 네트워크, 쿨링랙, 서버 취약점, IP 주소 관리, 가동률 등 IT 인프라 모니터링 솔루션 ...
서버, 도커 컨테이너, 데이터베이스, WAS, 네트워크, 쿨링랙, 서버 취약점, IP 주소 관리, 가동률 등 IT 인프라 모니터링 솔루션 ...서버, 도커 컨테이너, 데이터베이스, WAS, 네트워크, 쿨링랙, 서버 취약점, IP 주소 관리, 가동률 등 IT 인프라 모니터링 솔루션 ...
서버, 도커 컨테이너, 데이터베이스, WAS, 네트워크, 쿨링랙, 서버 취약점, IP 주소 관리, 가동률 등 IT 인프라 모니터링 솔루션 ...옥시즌
 
[오픈소스컨설팅]Glster FS간단소개
[오픈소스컨설팅]Glster FS간단소개[오픈소스컨설팅]Glster FS간단소개
[오픈소스컨설팅]Glster FS간단소개Ji-Woong Choi
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Ji-Woong Choi
 
Actual PoC guide for Virtual Desktop Infrastructure (Korean)
Actual PoC guide for Virtual Desktop Infrastructure (Korean)Actual PoC guide for Virtual Desktop Infrastructure (Korean)
Actual PoC guide for Virtual Desktop Infrastructure (Korean)Changhyun Lim
 

Tendances (20)

[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
 
[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to
 
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
 
오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0
 
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
 
Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0
 
Red Hat Enterprise Virtualization
Red Hat Enterprise VirtualizationRed Hat Enterprise Virtualization
Red Hat Enterprise Virtualization
 
Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0
 
오픈소스 모니터링비교
오픈소스 모니터링비교오픈소스 모니터링비교
오픈소스 모니터링비교
 
제3회난공불락 오픈소스 인프라세미나 - Pacemaker
제3회난공불락 오픈소스 인프라세미나 - Pacemaker제3회난공불락 오픈소스 인프라세미나 - Pacemaker
제3회난공불락 오픈소스 인프라세미나 - Pacemaker
 
2node cluster
2node cluster2node cluster
2node cluster
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
[오픈소스컨설팅]MySQL Monitoring
[오픈소스컨설팅]MySQL Monitoring[오픈소스컨설팅]MySQL Monitoring
[오픈소스컨설팅]MySQL Monitoring
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
 
서버, 도커 컨테이너, 데이터베이스, WAS, 네트워크, 쿨링랙, 서버 취약점, IP 주소 관리, 가동률 등 IT 인프라 모니터링 솔루션 ...
서버, 도커 컨테이너, 데이터베이스, WAS, 네트워크, 쿨링랙, 서버 취약점, IP 주소 관리, 가동률 등 IT 인프라 모니터링 솔루션 ...서버, 도커 컨테이너, 데이터베이스, WAS, 네트워크, 쿨링랙, 서버 취약점, IP 주소 관리, 가동률 등 IT 인프라 모니터링 솔루션 ...
서버, 도커 컨테이너, 데이터베이스, WAS, 네트워크, 쿨링랙, 서버 취약점, IP 주소 관리, 가동률 등 IT 인프라 모니터링 솔루션 ...
 
[오픈소스컨설팅]Glster FS간단소개
[오픈소스컨설팅]Glster FS간단소개[오픈소스컨설팅]Glster FS간단소개
[오픈소스컨설팅]Glster FS간단소개
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드
 
Actual PoC guide for Virtual Desktop Infrastructure (Korean)
Actual PoC guide for Virtual Desktop Infrastructure (Korean)Actual PoC guide for Virtual Desktop Infrastructure (Korean)
Actual PoC guide for Virtual Desktop Infrastructure (Korean)
 

En vedette

[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance TuningJi-Woong Choi
 
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena DollyJi-Woong Choi
 
[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정Ji-Woong Choi
 
[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여Ji-Woong Choi
 
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편Ji-Woong Choi
 
[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep DiveJi-Woong Choi
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning Ji-Woong Choi
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-RegionJi-Woong Choi
 
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0Ji-Woong Choi
 
[오픈소스컨설팅]오픈소스 기반 솔루션 아키텍처 특징 및 사례
[오픈소스컨설팅]오픈소스 기반 솔루션 아키텍처 특징 및 사례[오픈소스컨설팅]오픈소스 기반 솔루션 아키텍처 특징 및 사례
[오픈소스컨설팅]오픈소스 기반 솔루션 아키텍처 특징 및 사례Ji-Woong Choi
 
[오픈소스컨설팅]J boss6 7_교육자료
[오픈소스컨설팅]J boss6 7_교육자료[오픈소스컨설팅]J boss6 7_교육자료
[오픈소스컨설팅]J boss6 7_교육자료Ji-Woong Choi
 
[오픈소스컨설팅]오픈소스메일시스템
[오픈소스컨설팅]오픈소스메일시스템[오픈소스컨설팅]오픈소스메일시스템
[오픈소스컨설팅]오픈소스메일시스템Ji-Woong Choi
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7Ji-Woong Choi
 
[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기Ji-Woong Choi
 
Docker Setting for Static IP allocation
Docker Setting for Static IP allocationDocker Setting for Static IP allocation
Docker Setting for Static IP allocationJi-Woong Choi
 
[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기Ji-Woong Choi
 
[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick GuideJi-Woong Choi
 
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법Ji-Woong Choi
 
[오픈소스컨설팅]Day #2 MySQL Tuning, Replication, Cluster
[오픈소스컨설팅]Day #2 MySQL Tuning, Replication, Cluster[오픈소스컨설팅]Day #2 MySQL Tuning, Replication, Cluster
[오픈소스컨설팅]Day #2 MySQL Tuning, Replication, ClusterJi-Woong Choi
 

En vedette (20)

[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning
 
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
 
[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정
 
[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여
 
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
 
[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
 
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
 
[오픈소스컨설팅]오픈소스 기반 솔루션 아키텍처 특징 및 사례
[오픈소스컨설팅]오픈소스 기반 솔루션 아키텍처 특징 및 사례[오픈소스컨설팅]오픈소스 기반 솔루션 아키텍처 특징 및 사례
[오픈소스컨설팅]오픈소스 기반 솔루션 아키텍처 특징 및 사례
 
[오픈소스컨설팅]J boss6 7_교육자료
[오픈소스컨설팅]J boss6 7_교육자료[오픈소스컨설팅]J boss6 7_교육자료
[오픈소스컨설팅]J boss6 7_교육자료
 
[오픈소스컨설팅]오픈소스메일시스템
[오픈소스컨설팅]오픈소스메일시스템[오픈소스컨설팅]오픈소스메일시스템
[오픈소스컨설팅]오픈소스메일시스템
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7
 
[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기
 
Docker Setting for Static IP allocation
Docker Setting for Static IP allocationDocker Setting for Static IP allocation
Docker Setting for Static IP allocation
 
[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기
 
[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide
 
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
 
[오픈소스컨설팅]Day #2 MySQL Tuning, Replication, Cluster
[오픈소스컨설팅]Day #2 MySQL Tuning, Replication, Cluster[오픈소스컨설팅]Day #2 MySQL Tuning, Replication, Cluster
[오픈소스컨설팅]Day #2 MySQL Tuning, Replication, Cluster
 

Similaire à [오픈소스컨설팅]파일럿진행예제 on AWS

F5_Active-Active Data Center.pdf
F5_Active-Active Data Center.pdfF5_Active-Active Data Center.pdf
F5_Active-Active Data Center.pdfSolutions Architect
 
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기SangJin Kang
 
한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktf한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktfDaehee Han
 
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 통합 관리 (CB-Tumblebug)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 통합 관리 (CB-Tumblebug)Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 통합 관리 (CB-Tumblebug)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 통합 관리 (CB-Tumblebug)Cloud-Barista Community
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...Cloud-Barista Community
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea Strike
 
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)KH Park (박경훈)
 
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 AdvancedAWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 AdvancedAmazon Web Services Korea
 
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
Private cloud network architecture (2018)
Private cloud network architecture (2018)Private cloud network architecture (2018)
Private cloud network architecture (2018)Gasida Seo
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...Cloud-Barista Community
 
Service mesh(istio) monitoring
Service mesh(istio) monitoringService mesh(istio) monitoring
Service mesh(istio) monitoringJeong-Ho Na
 
Open source apm scouter를 통한 관제 관리 jadecross 정환열 수석
Open source apm scouter를 통한 관제  관리 jadecross 정환열 수석Open source apm scouter를 통한 관제  관리 jadecross 정환열 수석
Open source apm scouter를 통한 관제 관리 jadecross 정환열 수석uEngine Solutions
 

Similaire à [오픈소스컨설팅]파일럿진행예제 on AWS (20)

LTM
LTMLTM
LTM
 
F5_Active-Active Data Center.pdf
F5_Active-Active Data Center.pdfF5_Active-Active Data Center.pdf
F5_Active-Active Data Center.pdf
 
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
 
한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktf한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktf
 
Gtm
GtmGtm
Gtm
 
L4교육자료
L4교육자료L4교육자료
L4교육자료
 
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 통합 관리 (CB-Tumblebug)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 통합 관리 (CB-Tumblebug)Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 통합 관리 (CB-Tumblebug)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 통합 관리 (CB-Tumblebug)
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_Architecture
 
씨디네트웍스_Dynamic Web Acceleration 소개서
씨디네트웍스_Dynamic Web Acceleration 소개서씨디네트웍스_Dynamic Web Acceleration 소개서
씨디네트웍스_Dynamic Web Acceleration 소개서
 
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
 
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 AdvancedAWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
 
CDN overview
CDN overviewCDN overview
CDN overview
 
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
 
Private cloud network architecture (2018)
Private cloud network architecture (2018)Private cloud network architecture (2018)
Private cloud network architecture (2018)
 
3장
3장3장
3장
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
 
Service mesh(istio) monitoring
Service mesh(istio) monitoringService mesh(istio) monitoring
Service mesh(istio) monitoring
 
리로그인 Relogin: 코드스테이츠 데모데이
리로그인 Relogin: 코드스테이츠 데모데이리로그인 Relogin: 코드스테이츠 데모데이
리로그인 Relogin: 코드스테이츠 데모데이
 
Open source apm scouter를 통한 관제 관리 jadecross 정환열 수석
Open source apm scouter를 통한 관제  관리 jadecross 정환열 수석Open source apm scouter를 통한 관제  관리 jadecross 정환열 수석
Open source apm scouter를 통한 관제 관리 jadecross 정환열 수석
 

Plus de Ji-Woong Choi

[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기Ji-Woong Choi
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기Ji-Woong Choi
 
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육Ji-Woong Choi
 
[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략Ji-Woong Choi
 
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기Ji-Woong Choi
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3Ji-Woong Choi
 
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12Ji-Woong Choi
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트Ji-Woong Choi
 
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항Ji-Woong Choi
 
OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기Ji-Woong Choi
 
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1Ji-Woong Choi
 

Plus de Ji-Woong Choi (12)

[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
 
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
 
[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략
 
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
 
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
 
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
 
OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기
 
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
 

[오픈소스컨설팅]파일럿진행예제 on AWS

  • 1. Real Time Analysis Open Source Consulting, Inc
  • 2. 2 - Internal Use Only - RabbitMQ Cluster System Architecture Large Scale Real Time Data Analysis Platform Service Provider Service Vendor Service Vendor Service Vendor Service Vendor HTTP, TCP Data Service Instance Instance PostgreSQL Web Socket Client RabbitMQ #1 RabbitMQ #2 Redis Cluster Redis #1 Redis #2 State Service Instance Classification Service Instance Publish Publish/Subscribe Engine Web Service Instance Publish Subscribe • Client로부터 입력되는 서비스는 TCP 소켓과 HTTP 등의 서비스 벤더 규약에 따라 처리 • 종목 5,000개를 기준으로 1분 단위의 message publish Data Service • DS가 publish한 데이터를 subscribe - Order guarantee • 종목에 대한 상태 추가 후 message publish State Service • 서비스 시작 시 300M의 처리 엔진을 메모리로 로딩 • SS가 publish한 데이터를 subscribe • 상태 분류 작업 및 캐시(Redis) 업데이트 Classification Service • 사전에 연결된 웹 소켓을 통해 클라이언트에 연결 • 캐시로 들어오는 메시지를 인식하고 클라이언트 푸시 진행 • Flask를 활용하여 웹 서비스를 구축 Web Service
  • 3. 3 - Internal Use Only - Data Flow Data Service Linux Python 2.7 Event Handler(callback) pika 3rd Party RabbitMQ API is called by vendor service State Service Linux Python 2.7 pika Publish processed data every 15 seconds Business logic RabbitMQ Classification Service Linux Python 2.7 redis-py Business logic In-memory (Redis) pika Augment the state3 2 1 RabbitMQ Insert/update state processed data to redis Publish4 Engine File Engine file load when CS daemon is started 6 5 Process data Classification Service Linux Python 2.7 redis-py Business logic pika Client 11 Push data to client Publish processed data 7 WebSocket Service Linux Python 2.7 redis-py websocket- client(flask) Subscribe data8 publish9 10 모든 component (DS, SS, CS) 가 Redis 에서 config, state (state history), parameter 등을 받아 service 를 시작 DS: Config + Parameter SS: Config + State History CS: Config + Engine Serialization
  • 4. 4 - Internal Use Only - Data Service Flow Start Config Load Service Vendor Handler Initialize Handler Wait Call DS Module Data Send handlerVendorData Service Vendor 15 or 60 sec? Redis Configuration Parameter 클라이언트 요청 대기 데이터를 큐(메모리)에 누적 Yes Quant 모듈 호출 Module Find queue 해당 종목을 처리하는 큐를 확인 Send data to queue RabbitMQ로 데이터를 전송
  • 5. 5 - Internal Use Only - State Service Flow Start constructor( config, stateHistory ) Start RabbitMQ Receiver updateState Redis Configuration State History DS로부터 수신할 RabbitMQ 큐에 Listener 를 등록 Data Receive Module State augment를 위한 Quant 모듈 호출 Find queue 해당 종목을 처리하는 큐를 확인 Send data to queue RabbitMQ로 상태변경된 SS데이터를 전송 updateCurrentState Redis Redis에 현재 상태 업데이트
  • 6. 6 - Internal Use Only - Classification Service Flow Start constructor( config, serialisation ) Load Engine Files Redis construct engine, RabbitMQ queue subscription registration Call Engine Module Redis로부터 Classification에 사용될 파일 을 로드 CS엔진으로 Load된 JSON을 그대로 전달Classification Engine Start RabbitMQ Receiver SS로부터 수신할 RabbitMQ 큐에 Listener 를 등록 Start Redis Connection Start Redis Connection Waiting queue Data Receive Call Engine Quant 엔진으로 데이터 전달 Insert processed data to Redis Redis push 서비스는 입력된 데이터와 처리 데이터에 대한 로그를 기록해야 함 Redis에는 사전에 설정된 엔진파일을 로드하고 있어야 함 로드시 RabbitMQ 관련된 정보를 활용하여 큐를 구성해야 함 결과를 레디스로 전달
  • 7. 7 - Internal Use Only - Web Service Flow Start Config Load Config Information Connect Redis Redis Start WebSocket CS데이터를 Redis로부터 받으므로 사전 연결 Wait connection 클라이언트로 접속 처리를 위한 WebSocket 시작 Try connect Data Receive Redis로부터 CS데이터 수신 Push data to customers 처리된 데이터를 고객에게 웹소켓을 통해 Push WebSocket를 통해 클라이언트와 연결하고 있어야 함 CS로부터의 데이터 수신은 Redis PUB/SUB 기능을 활용하여 처리하도록 함
  • 8. 8 - Internal Use Only - Start Service Components python script를 활용하여 Redis로부터 필요한 설정정보를 받아서 각각의 Service instance 생성 및 run()을 호출 python script 들로 executable 을 만들어 scheduler (crontab) 에 등록 Large Scale Real Time Data Analysis Platform Data Service Instance Instance State Service Instance Classification Service Instance Engine Web Service Instance Configuration in Redis <각 서비스 crontab에 등록>
  • 9. 9 - Internal Use Only - Platform Requirement Data Service partition: d servers covering T / d topics each process: • to generate random numbers (seeded) to construct outbound me ssage per topic every P seconds • to publish the outbound messages when they are ready State Service partition: s servers covering T / s topics each state model: • list of data published from data service so far (ordered in time) • averages of the data in different time periods process: • to subscribe messages under the topic belongs its coverage as well as relevant shared topics • to update the state held in the instance • to publish the outbound messages when the state is updated • to update the state in cache Classification Service partition: c servers covering G / c engines each classification model: • maximum and minimum of the state • constructor takes a dummy large text data process: • to subscribe messages under the relevant topics • to classify the state • to update the classification result in cache Web Service partition: as required process: • to cache client views • to deliver the update if it is relevant to the client view
  • 11. 11 - Internal Use Only - Production Architecture on AWS Amazon Region (AP-Northeast) TCP Data Service Service Daemon Data Service Service Daemon Redis Redis Master-Slave Redis (Sentinel) RabbitMQ RabbitMQ Active-Active Active-Standby RDS Snapshots Data Backup Amazon S3 bucket State Service Service Daemon State Service Service Daemon Classification ServiceService Daemon Classification Service Daemon Web Service Service Daemon Web Service Service Daemon backup Customers Web Socket 초기 m4.large(2 vCPU, 8GB Memory, EBS) 또는 m3.large(2 vCPU, 7.5GB Memory, SSD) 기반으로 시작 각 서비스에 대한 이중화 구성으로 데이터센터 장애에 대한 대비를 수행하도록 구성
  • 12. 12 - Internal Use Only - Target Instances List 목적 서버 이름 인스턴스 유형 도메인 이름 지역 설명 Admin Server prd-ap-admin t2.medium admin.buysignal.com ap-northeast-1a Data Service prd-ap-ds-1 t2.large/ m3.large N/A ap-northeast-1a • 기본 2개의 서버로 초기 구성 • Elastic IP 할당 prd-ap-ds-2 t2.large/ m3.large ap-northeast-1b State Service prd-ap-ss-1 t2.large/ m3.large N/A ap-northeast-1a • 내부접속만 가능하도록 Security Group 구성 prd-ap-ss-2 t2.large/ m3.large ap-northeast-1b Classification Service prd-ap-cs-1 t2.large/ m3.large N/A ap-northeast-1a • 내부접속만 가능하도록 Security Group 구성 prd-ap-cs-2 t2.large/ m3.large ap-northeast-1b Web Service prd-ap-ws-1 t2.large/ m3.large api.buysignal.com ap-northeast-1a • Service에 따른 Auto Scaling 적용 • Web Socket을 위한ELB적용 prd-ap-ws-2 t2.large/ m3.large ap-northeast-1b RabbitMQ prd-ap-rabbit-1 m3.large N/A ap-northeast-1a • 기본 서버로 구성 prd-ap-rabbit-2 m3.large ap-northeast-1b Redis prd-ap-redis-1 r3.large N/A ap-northeast-1a • 2vCPU, 15G 메모리 구성 • Amazon Elastic Cache 검토 필요prd-ap-redis-2 r3.large ap-northeast-1b Database prd-ap-rds-master db.m3.xlarge N/A • PostgreSQL RDS 시스템에 대한 t2.large 서비스를 최소 기준으로 구성하여 초기 서비스 이후 상태 추이 추적 후 다운그레이드 적용
  • 13. 13 - Internal Use Only - Operating Cost Estimate on AWS Cost Estimate: http://calculator.s3.amazonaws.com/index.html#r=NRT&key=calc-633F3F2A-0C87-484B-8C1A-99AEEB2E5403 각 시스템간 이중화 구성 시 monthly 100% utilization 기준 2,640 USD 예상 Weekly 40 hours 기준 서비스 구동 시 월간 비용 1,306 USD 비용 청구 예상
  • 14. 14 - Internal Use Only - Deployment Plan local master Source Repository Local Dev Product Local Dev, AWS Dev Server 는 소스 저장소에 있는 최신 소스를 기반으로 Deploy를 수행 한다. Production server에는 staging에서 테스트 완료된 애플리케이션을 통한 복사를 통해 배포(장애 발생 요소 제거) 운영단계 콛 Binary copy Staging
  • 15. 15 - Internal Use Only- 1KbMessage [root@localhost perf]# ./remote_thr.sh tcp://192.168.56.101:5555 1024 100000 Sent elapsed time : 2.339 sec Sender 2Kb Message [root@localhost perf]# ./remote_thr.sh tcp://192.168.56.101:5555 2048 100000 Sent elapsed time : 1.499 sec 4KbMessage [root@localhost perf]# ./remote_thr.sh tcp://192.168.56.101:5555 4096 100000 Sent elapsed time : 2.137 sec 10Kb Message Receiver [root@localhost perf]# ./local_thr.sh tcp://eth0:5555 1024 100000 message size: 1024 [B] message count: 100000 mean throughput: 39968[msg/s] mean throughput: 327.417856[Mb/s] [root@localhost perf]# ./local_thr.sh tcp://eth0:5555 2048 100000 message size: 2048 [B] message count: 100000 mean throughput: 49504[msg/s] mean throughput: 811.073536[Mb/s] [root@localhost perf]# ./local_thr.sh tcp://eth0:5555 4096 100000 message size: 4096 [B] mes sage count: 100000 mean throughput: 29446[msg/s] mean throughput: 964.886528[Mb/s] [root@localhost perf]# ./local_thr.sh tcp://eth0:5555 10240 100000 message size: 10240 [B] message count: 100000 mean throughput: 13048[msg/s] mean throughput: 1068.89216[Mb/s] [root@localhost perf]# ./remote_thr.sh tcp://192.168.56.101:5555 10240 100000 Sent elapsed time : 3.091 sec ØMQ Throughput – 2 vCore, 8GB Memory
  • 16. 16 - Internal Use Only - Rabbit MQ Throughput – 2 vCore, 8GB Memory DescriptionSolution RabbitMQ • Stable send/receiveprocess • Can use AMQP(High performance) • Similar producer/consumerspeed • Support runtime queue create/delete(veryflexible) Producer/Consumer [jboss@localhost rabbitmq-java-client-bin-3.5.5] ./runjava.sh com.rabbitmq.examples.MulticastMain --size 2048 starting consumer #0 starting producer #0 time: 6.000s, sent: 7198 msg/s, received: 7190 msg/s, min/avg/max latency: 1463/3982/23183 microseconds time: 7.000s, sent: 7335 msg/s, received: 7341 msg/s, min/avg/max latency: 1508/2892/6231 microseconds time: 8.000s, sent: 7386 msg/s, received: 7370 msg/s, min/avg/max latency: 1358/3691/15787 microseconds time: 9.000s, sent: 7262 msg/s, received: 7270 msg/s, min/avg/max latency: 1306/3091/7463 microseconds time: 10.000s, sent: 7283 msg/s, received: 7287 msg/s, min/avg/max latency: 1551/2924/7089 microseconds time: 11.000s, sent: 7164 msg/s, received: 7170 msg/s, min/avg/max latency: 1565/3522/11979 microseconds time: 12.000s, sent: 6043 msg/s, received: 6034 msg/s, min/avg/max latency: 1097/8846/41617 microseconds time: 13.000s, sent: 6040 msg/s, received: 6051 msg/s, min/avg/max latency: 943/11451/58797 microseconds [jboss@localhost rabbitmq-java-client-bin-3.5.5] ./runjava.sh com.rabbitmq.examples.MulticastMain --size 10240 starting consumer #0 starting producer #0 time: 5.000s, sent: 2447 msg/s, received: 2447 msg/s, min/avg/max latency: 550/1344/17682 microseconds time: 6.000s, sent: 2701 msg/s, received: 2702 msg/s, min/avg/max latency: 569/1134/4756 microseconds time: 7.000s, sent: 2732 msg/s, received: 2731 msg/s, min/avg/max latency: 534/1122/3344 microseconds time: 8.000s, sent: 2728 msg/s, received: 2730 msg/s, min/avg/max latency: 551/1121/2082 microseconds time: 9.000s, sent: 2798 msg/s, received: 2798 msg/s, min/avg/max latency: 606/1116/2105 microseconds 10 - Internal Use Only- Producer/Consumer Simultaneously; 2K and 10K message
  • 17. 17 - Internal Use Only - Comparison – RabbitMQ vs. ØMQ Criteria RabbitMQ Ø MQ Short Response Time Short MessagingRoutes Short Short Performance (Based on10Kb) 2798msg/sec 4.66 times faster than RabbitMQ – 13048 msg/sec Asynchronous Processing Sync, Async Supported Async based eventprocessing Light-weight Software Stacks Light MoreLight High Availability No Single Point of Failures HA ClusterSupport No BrokerArchitecture Flexibility Supported DataFormats Various(JSON, POJO, etc.) Various(JSON, Thrift, Google ProtoBuf, etc.) Easy Configuration GUI BasedConfiguration Implementationneeded Runtime Configuration Runtime deploy for queue, topic Implementationneeded CommercialSupport SpringSource(VMWare) iMatrix Monitoring Many plugin for monitoring, web basedGUI Implementationneeded Remarks • Powerful web based monitoring • AMQP1) Support • Dynamic topic management • Easy of Development • High throughput/Low latency • Auto reconnect amongpeer • Run on arbitrary platforms (Windows, Android) 1) AMQP(Asynchronous Message Queuing Protocol) : Supported by Microsoft, Red Hat, VMware, Cisco, Novell, SoftwareAG, etc.
  • 19. 19 - Internal Use Only - Amazon AWS Instances Provider Redis(Master-Slave) Data Service State Service Classification Service Web Service Not in VPC TCP/HTTP RabbitMQ Cluster AP Northeast(Tokyo) CIDR: 172.31.0.0/16 Data Service 172.31.7.219 Availability Zone#1c Classification Service 172.31.7.218 Web Service 172.31.7.216 Redis #1 172.31.21.218 Availability Zone#1a RabbitMQ #1 172.31.21.219 RabbitMQ #2 172.31.16.52 State Service 172.31.7.217 Redis #2 172.31.21.17 security group(realtime-analysis-sg) Name Instance Type Data Service t2.medium State Service t2.medium Classification Service t2.medium Web Service t2.medium RabbitMQ-1 t2.large RabbitMQ-2 t2.large Redis-1 t2.large Redis-2 t2.large
  • 20. 20 - Internal Use Only - 사전 작업 고려 조건 인스턴스 • 클라우드 인스턴스 shutdown에 대비한 중앙 집중형 모니터링(Nagios, Zabbix 등) 솔루션을 통한 shutdown alarm 구성 및 인스턴스 재기동 프로세스 • 인스턴스 shutdown에 대해서는 Cloud API 연계를 통한 template launch를 활용하여야 가능함 Process • 프로세스들에 대한 상태 체크 모니터링 및 Process down시 재기동 스크립트를 각 인스턴스에 구성 • 프로세스에 대한 체크는 crontab을 활용하여 처리 • OS와 같은 다른 문제로 인하여 프로세스에 문제가 발생했을 경우 재시작을 한다고 해당 문제가 해결되지 않을 수도 있음
  • 21. 21 - Internal Use Only - Scenario – Data Service Instance Active-Active Cluster RabbitMQ #1 Data Service RabbitMQ #2 Master-Slave Redis #1 Redis #2 State Service Class Service Web Service Data Service TCP ELB Client Tokyo Region 장애내용 테스트 방법 Data Service Virtual Machine에 대한 인스턴스 장애 Data Service에 대한 EC2 Instance를 shutdown 시킴 Data Service Process에 대한 장애 Data Service Process에 대한 kill 명령 수행 1 2
  • 22. 22 - Internal Use Only - Scenario – Middleware Instance Active-Active Cluster RabbitMQ #1 Data Service RabbitMQ #2 Master-Slave Redis #1 Redis #2 State Service Class Service Web Service Data Service TCP ELB Client Tokyo Region 장애내용 테스트 방법 예상 작동 RabbitMQ Active 서비스 장애 RabbitMQ Cluster의 main instance를 shutdown 시킴 RabbitMQ를 통한 지속적인 데이터 송수신 정상 기동 Redis Master-Slave 서비스 장애 Redis Master에 대한 EC2 Instance를 shutdown 시킴 Reids의 configuration 정보, 데이터 송수신 정상 기동 Redis Cache connection error Redis 인스턴스에 대한 process를 kill시킴 서비스에서 정상적으로 slave 서버 접속 후 데이터 처리 확인 3 4 5
  • 23. 23 - Internal Use Only - Scenario – State/Classification/Web Instance Active-Active Cluster RabbitMQ #1 Data Service RabbitMQ #2 Master-Slave Redis #1 Redis #2 State Service Class Service Web Service Data Service TCP ELB Client Tokyo Region 장애내용 테스트 방법 예상 작동 State 인스턴스 프로세스 장애 State Service의 process를 kill crontab 데몬을 통한 감시 및 프로세스 재기동 Classification Service 장애 Classification Service의 process를 kill Reids의 configuration 정보, 데이터 송수신 정상 기동 6 7
  • 24. 24 - Internal Use Only - Source Code Directory Structure Directory 구조 및 설명 /home/quant 설명 파일명 실행방법 비고 bin C Code 변환 실행 파일 QuantManager /home/quant/bin/QuantStart.sh QuantStop.sh C Code 변환 실행 파일 QuantService /home/quant/bin/QuantStart.sh QuantStop.sh C Code 변환 실행 파일 WebSocketServer /home/quant/bin/WebServerStart.sh WebServerStop.sh C Code 변환 실행 파일 WebSocketPup /home/quant/bin/WebServerStart.sh WebServerStop.sh etc 구동시 필요한 config항목 파일 quant.ini lib 공통 코드 구현체, confing class 구성 CommonClass.py 데몬으로 실행 시키는 class 파일 Daemon.py QuantService에 상속되어지는 Class 파일 Rabbitmq.py Rabbitmq에 상속되어지는 Class 파일 Redis.py 개별 파일로 실행 시 Python /home/quant/lib/Redis.py - Redis에 환경 config 값을 등록 수 정 - 차후 “set” function에 값을 수정 요망 WebSocketServer 사용하는 참조 파일 wsbridge.py log 차후 로그 수집 디렉토리 cbc(callback) 예전 callback 디렉토리를 cbc로 변경 DataCallBack.py StateCallBack.py ClassCallBask.py QuantServer(ServiceSlass.py) 상속됨 Service Type에 맞춰 파일의 내용을 수 정합니다. web Css, js, index.html만 남기고 모두 삭제 quant.js에서 WebSocket 구현 src -/component Service 구동 원천 소스 QuantManager.py ServiceClass.py WebSocketPub.py WebSocketServer.py - QuantManager - QuantService(SeviceClass.py) - WebSocketPub - WebSocketServer Cython로 embed된 파일 만들어집니 다.
  • 25. 25 - Internal Use Only - Source Code Directory Structure Directory 구조 및 설명 /home/quant 설명 파일명 실행방법 비고 -/make Cython embed 파일 생성 script make.sh ./make.sh or sh make.sh -/install rebbitmq 설치 script입니다. rabbitmq-install.sh sh rabbitmq-install.sh Erlang, rabbitmq의 yum 설치합니다. pip로 python 관련 모듈을 설치합니다. pip-setup.sh sh pip-setup.sh Zeromq, redis 등 필요한 library를 설치합니다.
  • 26. Appendix - Platform TO-BE Architecture Guide -
  • 27. 27 - Internal Use Only - RabbitMQ High Availability Publisher pika(librabbitmq) Consumer Publisher pika(librabbitmq) Publisher pika(librabbitmq) Consumer ELB RabbitMQ 1 RabbitMQ 2 RabbitMQ Cluster Round-robin Work Queue Work Queue Round-robin Make RabbitMQ Instances as a cluster  각 Publisher 및 Consumer 에서는 각각 하나의 connection 을 재사용  Scalability : RabbitMQ Cluster 안의 노드 수를 동적으로 구성할 수 있으며, 각 서비스 또한 동적으로 확장 가능  Message Durability : RabbitMQ Message Queue 를 파일에 저장하거나 노드들간 복제를 통한 메시지 유실방지  범용적인 메시징 시스템으로 활용 가능 Features
  • 28. 28 - Internal Use Only - Redis High Availability with Sentinel Redis Slave Redis Master Application Redis Client Connection Pool Replication HA Module (demon) Error health check health check생성 및 Pool 교체 destroy Configure Redis master/slave using sentinel to make high availability  주기적으로 master 서버와 slave 서버를 모니터링(health check) 하고  예기치 않은 장애 발생으로 master서버에 문제가 발생하는 경우 sentinel은 slave를 신규 master 서버로 승격시킴  기존 master 서버 connection pool을 신규 connection pool로 교체하고  기존 connection pool의 자원을 해제한다. (내부적으로 기존 master 서버를 slave 서버로 관리함)  기존 master 서버 장애 복구 후 slave 서버로 재기동 (수동작업)
  • 29. 29 - Internal Use Only - Redis High Availability with ZooKeeper Service HA Client Service HA Client Service HA Client Redis Slave Redis Master Replication Master health check  Redis 접속설정은 ZoooKeeper Server 에서 통합관리  Redis Client Server 중심의 장애 상황에 따른 Auto Failover를 수행. (by RedisManager)  ZooKeeper Server 장애 시에도 정상적인 서비스가 가능 ZooKeeper RedisManager Features Architecture
  • 30. 30 - Internal Use Only - Redis High Availability with ZooKeeper  HA Client 의 장애 통지는 ZooKeeper 의 /db/redis/master/[client znode] 의 data 를 변경하는 작업.  Redis Manager 의 Failover 처리  HA Client 의 Master 변경은 새로운 Master 주소로의 connection pool 을 재생성함. HA Client ZooKeeper Redis Manager Master health check 장애 통지 장애정보 변경 Event 발생 장애 여부 Failover 처리 Yes Master 변경 Event 발생Master 변경 장애 발생 No Slave 를 Master 로 승격 /db/redis/master 의 host name data 변경 Make Redis HA without sentinel
  • 31. 31 - Internal Use Only - OPEN SHARE CONTRIBUTE ADOPT REUSE