itlchn 20 - Kien truc he thong chung khoan - Phan 1
1. Kiến trúc Hệ thống Core chứng khoán &
một số giải pháp về non-functional
Trình bày:
Nguyễn Nhật Quang
Vũ Việt Anh
Hà Nội, 05/2015
Hội thảo
2. Slides được soạn thảo dựa trên các tư liệu của đồng nghiệp, các
nhà cung cấp phần mềm core chứng khoán và các nhà cung cấp
phần mềm khác.
Các tài liệu khi công bố đã được chỉnh sửa khác với nguyên bản để
tránh tiết lộ bí mật thông tin, nhưng qua người trình bày vẫn truyền
tải được các ý tưởng cơ bản.
Mục đích công bố tài liệu là để giao lưu, học hỏi cộng đồng người
làm nghề CNTT, thu nhận những ý kiến phản biện để khi quay lại hệ
thống có thể làm cho nó tốt lên.
Tài liệu và trình bày cũng là dịp để cộng đồng CNTT có được khái
niệm và hiểu hơn về hệ thống chứng khoán, giao dịch trên thị trường
chứng khoán, từ đó có được sự tương tác tốt hơn đối với anh em
đang làm trong lĩnh vực này.
Lời ngỏ
4. Vũ Việt Anh
Tốt nghiệp đại học Bách khoa Paris, đại học viễn thông quốc gia Pháp
Thạc sỹ đại học Columbia (New York city)
Kinh nghiệm:
Làm việc tại Tervela Inc (NYC). Tervela là một trong những nhà tiên
phong về middleware tại Wallstreet, là công ty đầu tiên đưa giải
pháp messaging dựa trên hardware
Sáng lập OCTech
Stock Exchange Gateway, Order Routing System – C, C++,
ZeroMQ, Oracle, PostgresDB
5. Nguyễn Nhật Quang
Bách khoa Hà Nội, Điện tử Viễn thông + Đại học Quốc gia HN, CNTT
Các công ty đã làm việc: CDiT, VTN, Hanoi Telecom, CBOSS, SHS,
FPT
Kinh nghiệm:
Hệ thống Telecom Billing (VNPT, VTN) – C, C++, STL, Lua, Delphi,
Oracle
Hệ thống Mobile Tracking System (BCA) – C, C++, Oracle
Hệ thống Core chứng khoán (iBroker, eSMS, Miroku) – C#, C++,
Java, Oracle, MSSQL, MySQL, ProC, WildFly, Spring, ActiveMQ,
Infinispan, Nginx, Crystal Report, iReport.
Stock Exchange Gateway (C++, C#, MSSQL, MSMQ)
6. AGENDA
1. Overview về kiến trúc
2. Overview về TTCK
3. Lịch sử phát triển Core CK tại VN & các vấn đề
4. Kiến trúc hệ thống Core chứng khoán
5. Các giải pháp kỹ thuật & case study
7. KIẾN TRÚC LÀ GÌ?
AGENDA
1.Overview về kiến trúc
2.Overview về TTCK
3.Lịch sử phát triển Core CK tại VN & các vấn đề
4.Kiến trúc hệ thống Core chứng khoán
5.Các giải pháp kỹ thuật & case study
11. Sáng tạo và tái sử dụng
DO NOT
REINVENT
THE
WHEELS
12. Kết luận phần 1
1. Khái niệm về kiến trúc
2. Vai trò thiết yếu của nó trong việc xây dựng bất cứ 1
thứ gì – bao gồm phần mềm, đặc biệt là các phần
mềm lớn, phức tạp, nhiều yêu cầu khắt khe
13. OVERVIEW VỀ THỊ
TRƯỜNG CHỨNG KHOÁN
AGENDA
1.Overview về kiến trúc
2.Overview về TTCK
3.Lịch sử phát triển Core CK tại VN & các vấn đề
4.Kiến trúc hệ thống Core chứng khoán
5.Các giải pháp kỹ thuật & case study
19. Core chứng khoán trong các mối tương quan
Front Office
Back Office
Khách
hàng
Ngân hàng
Ngân hàng Thanh toán
Trung tâm
Lưu ký CK
Sở GDCKSở GDCK
20. Nội dung trao đổi dữ liệu
Công ty Chứng khoán
Kênh khác
Sở GDCK
Ngân hàng
Thanh toán
(BIDV)
Trung tâm Lưu
ký
Ngân hàng
Web ,
Mobile
KH
Lệnh
Lệnh
Lệnh
Lệnh
Xác nhận số dư và giao dịch CK
Xác nhận
thanh toán
KQ Lệnh
Chuyển tiền
Chuyển
tiền
Lệnh thanh
toán
KQ Lệnh
So khớp, đối
soát
Mở TK, thay đổi thông tin, yêu cầu GD
21. Thời gian trao đổi dữ liệu
Công ty Chứng khoán
Kênh khác
Sở GDCK
Ngân hàng
Thanh toán
(BIDV)
Trung tâm Lưu
ký CK
Ngân hàng
9:00-14:45
Web ,
Mobile
Mọi lúc
9:00-14:45
9:00-14:45
Ngày 1 lần
Ngày 1 lần
15:30
Ngày 1 lần
Ngày 1 lần
9:00-14:45
Ngày 1 lần
Ngày 1 lần
Ngày 1 lần
KH
22. LỊCH SỬ PHÁT TRIỂN
CORE CK TẠI VN
& CÁC VẤN ĐỀ
AGENDA
1.Overview về kiến trúc
2.Overview về TTCK
3.Lịch sử phát triển Core CK tại VN & các vấn đề
4.Kiến trúc hệ thống Core chứng khoán
5.Các giải pháp kỹ thuật & case study
23. Các NCC Core chứng khoán tại VN
CORE NỘI
FPT.BOSC (FPT) – chiếm lĩnh thị trường trong giai đoạn đầu
FPT.Index
FPT.UTS: từ 2009, thay thế cho Index
@Direct (FSS)
VSSD.SBS – 15 CTCK, từ 2007, triển khai cho SHS,BSC,
Thống Nhất
MegaStock (RPSoft) – VTS, Click & Phone, WSS
Stock24 (TLS/MBS)
KLS
Navisoft – eBroker, eTrading (ABS, Tân Việt)
GoLine
HT2D – SMS, iTrading, Rabbit Trade
FSS - Flex
24. Core chứng khoán tại VN
CORE NGOẠI
FreeWill
Lotte – HPT (Tong Yang – HPT)
AFE (Hongkong)
TTL (Hongkong)
Syscom (Taiwan): PNS
CMS-Nova/TAW (Australia + India)
3i-Infotech (India)
Okasan & Goline V-GAIA (hợp tác Nhật Việt): MHBS
Formis BASS EBOS/EBETS (Malysia): ABS
Miroku (NRI – FPT, phái sinh)
25. Thị trường Chứng khoán Việt Nam
CÁC PHẦN MỀM khác CORE
Gateway:
OCTech (Gateway, ORS)
Stockbiz
Kế toán:
Bravo
Oracle
Web, datafeed, dịch vụ dữ liệu
Vietstock (web, datafeed)
Stox/StoxPlus
CafeF, Cophieu68, iStock.vn...
BANK Connection
CÁC HỆ THỐNG PHẦN MỀM CỦA CÁC CƠ QUAN QUẢN LÝ
Hệ thống của Sở HNX
Hệ thống của Sở HOSE
Hệ thống VSD
FIS, FSS, Navisoft
30. Thị trường chứng khoán VN
PHƯƠNG THỨC ĐẶT LỆNH và QUẢN LÝ DANH MỤC
Thời gian đầu: Quản lý lệnh = Excel, Đại diện sàn, đặt lệnh
bằng gọi điện...
“Thông sàn”, kết nối CTCK – Sở bằng phần mềm, bỏ đại diện
sàn. Tự động cập nhật kết quả GD.
Nhận lệnh tự động, giao dịch online qua Internet, mobile
SẢN PHẨM, DỊCH VỤ:
Lệnh thông thường, chuyển tiền thủ công
Giao dịch ký quỹ, chuyển tiền online, thanh toán T+3
Giao dịch phái sinh
Bán khống, giao dịch trong ngày, thanh toán T+2, T+0
34. Thực trạng
Số lượng các CTCK: gần 100 CTCK, giờ rút xuống còn 71
CTCK đang hoạt động (theo danh sách thành viên hnx.vn ngày
3/5/2016) quá đông, quá nguy hiểm
Thị trường còn tồn tại nhiều đặc điểm cũ: T+3, nhiều khâu giao
dịch chưa tự động, giấy tờ thủ tục rườm rà, chưa có nhiều sản
phẩm tài chính tốt, KHÔNG MINH BẠCH, bị thao túng, làm giá
(đội lái, tay to).
Chất lượng hàng hóa chưa cao, vốn hóa thị trường thấp, thanh
khoản thấp (ngày 3/5/2016, nguồn cafef.vn)
35. Các vấn đề hiện tại
Năng lực thấp (Capacity): số lượng khách hàng cùng lúc cao nhất là
vài nghìn, thực tế < 1000.
Thời gian để đặt 1 lệnh là chậm (tốc độ thấp): chục lệnh / s
Lỗi: đúp lệnh, sai lệnh, bán khống...
Nếu thị trường phát triển, volume tăng, dịch vụ mới triển khai
không đáp ứng được.
36. Một số trường hợp sự cố phần mềm Core
(2012) HSC (AFE) bị lỗi hệ thống GD do nâng cấp HT,
thay đổi các tham số hoạt động của HT.
(2014) SHS (LotteHPT) nghẽn cổ chai khi giao dịch,
hệ thống đặt lệnh “đơ”, khách hàng phàn nàn, bức xúc.
Bị nhiều lần, trong thời gian dài, mà không khắc phục
được triệt để.
(2014) VNDirect (FSS) bị lỗi đẩy nhầm lệnh lên Sở
HNX, hơn 20k lệnh trong 1 phút. Phải khắc phục hậu
quả rất nặng nề, thiệt hại hàng chục tỷ đồng.
37. KIẾN TRÚC HỆ THỐNG
CORE CHỨNG KHOÁN
AGENDA
1.Overview về kiến trúc
2.Overview về TTCK
3.Lịch sử phát triển Core CK tại VN & các vấn đề
4.Kiến trúc hệ thống Core chứng khoán
5.Các giải pháp kỹ thuật & case study
38. Kiến trúc tổng thể Core chứng khoán
5 hướng tiếp cận:
BA – Business
PA – Performance or Non-Function requirements
DA - Data
AA - Application
TA - Technology
39. Kiến trúc tổng thể Core chứng khoán
SA
Non-functional requirements
Phân tích thị trường CK
Cấu trúc nghiệp vụ
Yêu cầu nghiệp vụ
Kiến trúc, định nghĩa dữ liệu
Cấu trúc chức năng, ứng dụng
Công nghệ, Software Stack,
Lược đồ Software, Network & Hardware
PA
Kiến trúc năng lực
BA
Kiến trúc nghiệp vụ
DA
Kiến trúc dữ liệu
AA
Kiến trúc ứng dụng
TA
Kiến trúc công nghệ
40. Kiến trúc nghiệp vụ
Application (window form)
Web (thick/thin)
Stock info Mng.
Securities Deposit &
Withdraw
Rights basic Info Mng.
Rights
execution/Correction
Inquiries/Reports
Market Data
Stock Price Data
Tick Data
Other data
Buying/Selling Order
Order Correction/Cancel
Odd lot Order
PT Order
Conditional Order
Deals Correction
Order & Match List Inquiry
Inquiries/Reports
Buying/Selling Settlement
Put-thru/Bond Settlement
Date Mng.
Settlement Cash Transfer to
Bank
Commission Grade /ratio
Mng.
Inquiries/Reports
Open/Close Account
Customer/Account info.
Signature/Password Mng.
Fault Mng.
Variable List Check
Account History
Account Balance
Cash deposit/withdrawal
Bank information Mng.
Transfer
Interest on deposit
Bank Connection
Stock basket, limit policy
Stock evaluation
Interest/Fee Mng.
Pay in advance/Repayment
Loan/Repayment
Margin/Loan info Mng.
Inquiries/Reports
Basic Information Mng.
Common policy
Authentication
Authorisation
Inquiries/Reports
Person in Charge
Registration
Account activities/status
Broker performance report
Branch performance report
Agency performance report
FRONTAccount Cash Data
OrderSettlement Finance Service
Securities and Custody Remiser Common
BACK
Gateway to Exchanges
SMS Gateway
Call center
Bank
External Institutions
(Securities Depository)
VSD Gateway
Accounting
Mobile (web /app)
41. Front và Back office
Front
Office
Back
OfficeThời gian thực
Số dư tài khoản Tiền, Giao dịch Tiền
Dữ liệu thị trường, giá CK
Thời gian thực
Thông tin KH, hợp đồng, ủy quyền
Số dư CK, GDCK
Số dư Tiền, GD Tiền (Thanh toán, biên nhận, nộp, rút, chuyển khoản, cổ tức...)
Chính sách dịch vụ (Ký quỹ, Hạn mức, Giao dịch)
BOD (Ngày 1 lần, đầu ngày)
TT Khách hàng, tài khoản, ủy quyền
Thông tin CTCK, môi giới
Số dư tài khoản CK của KH
Số dư tài khoản Tiền của KH
Chính sách dịch vụ (Ký quỹ, Hạn mức, Giao dịch)
EOD (Ngày 1 lần, cuối ngày)
Lệnh, KQGD
Dữ liệu thị trường, giá CK
42. Kiến trúc tổng thể Core chứng khoán
SA
Non-functional requirements
Phân tích thị trường CK
Cấu trúc nghiệp vụ
Yêu cầu nghiệp vụ
Kiến trúc, định nghĩa dữ liệu
Cấu trúc chức năng, ứng dụng
Công nghệ, Software Stack,
Lược đồ Software, Network & Hardware
PA
Kiến trúc năng lực
BA
Kiến trúc nghiệp vụ
DA
Kiến trúc dữ liệu
AA
Kiến trúc ứng dụng
TA
Kiến trúc công nghệ
43. Performance Architecture – Market Analysis
43
Year4 GDP ($bil) % Market Cap/GDP Market Cap ($bil)
2014 171.22 32% 54.79
2022 468.04 (based on
GRavg)
70% (government’s report) 327.6
Market Cap increases 5.97 times (327.6/ 54.79) ~ 6 times
Giả sử mức tăng GPD trung bình = GRavg đạt được 14.07% (rất cao)
44. Performance Architecture - Account Number Analysis
44
Account number analysis
Current 1.5 mil accounts in VN.
10 top BRs take 65% market share --> let assume
take 65% account number ~ 1mil
Each BR in top10 take 100k accounts on average
Average (top 10 market share) - both retail &
institutional customers
Order number per day 2-10k, peak may be 30k
No of transactions per day 100k – 500k altogether
No of order transactions per day 10-50k, peak may be 100k
45. Nếu thị trường phái sinh hoạt động mạnh
45
• Tỷ lệ giao dịch phái sinh chiếm 1 tỷ trọng cao trong tổng khối lượng
giao dịch
• Tỷ lệ thanh khoản của derivatives / cash tùy thuộc thị trường CK mỗi
nước, có những nước tính bằng lần
• Đặc biệt tại TTCK Mỹ, khối lượng giao dịch phái sinh chiếm ~ 95%,
khối lượng giao dịch “thực” chiếm ~5%
• Thực tế trên 1 số thị trường khác VD Vàng, FX, tỷ lệ trading của
phái sinh rất cao
46. Performance Architecture - System targets
46
Loại hình Mục Hiện tại (1CTCK) Mục tiêu 2022 (1CTCK, 6 lần)
Reliability / MTBF 45,000 hours (5
years)
100,000 hours (12 years)
Availability Operating ratio 99.999% (five nine)
Serviceability MTTR ~ 1 hour
(100,000/99,999)
RTO N/A None (auto fail-over & fallback)
RPO N/A None (auto fail-over & fallback)
Integrity Data Collision Yes No
Market Cap tăng ~ 6 lần đến 2022, nếu tính cả thị trường phái sinh có thể sẽ nhiều
hơn (~ vài chục lần). Sẽ thảo luận thêm trong phần giải pháp kỹ thuật.
48. Performance Architecture - System targets
48
Phân loại Mục Chỉ tiêu Hiện tại
(1CTCK)
Mục tiêu (1CTCK) 2022 (6
times)
Mục tiêu (tính cả Phái
sinh, 1CTCK) 2022 (60
times)
Hiệu năng Khối lượng
giao dịch
Chỉ giao dịch Trading 10,000 60,000 order requests 600,000 order requests
Tất cả giao dịch (trading +
truy vấn + nộp rút tiền...)
1 triệu 6 triệu 60 triệu
Số giao dịch
đồng thời
Chỉ giao dịch trading 1,000 6,000 60,000
Tất cả giao dịch (trading +
truy vấn + nộp rút tiền...)
10,000 60,000 600,000
Dữ liệu thị
trường
Số lượng Mã chứng khoán 660 1,000 1,000
Số lượng tài khoản 100,000 600,000 6,000,000 (scaled)
Độ trễ Order response time (tính cả
độ trễ đường truyền)
100ms-1s 50-100 millisecond 50-100 millisecond
Order response time (Chỉ
Gateway)
30ms-500ms 10-20 millisecond 10-20 millisecond
Data distribution time 100ms-1s 10-100 millisecond 10-100 millisecond
Băng thông Số lệnh / giây 100 600 6,000 (scaled)
Số giao dịch / giây 1,000 6,000 60,000 (scaled)
49. Kiến trúc tổng thể Core chứng khoán
PA
Kiến trúc năng lực
BA
Kiến trúc nghiệp vụ
DA
Kiến trúc dữ liệu
AA
Kiến trúc ứng dụng
TA
Kiến trúc công nghệ
S
A
Non-functional requirements
Phân tích thị trường CK
Cấu trúc nghiệp vụ
Yêu cầu nghiệp vụ
Kiến trúc, định nghĩa dữ liệu
Cấu trúc chức năng, ứng dụng
Công nghệ, Software Stack,
Lược đồ Software, Network & Hardware
50. DA: Kiến trúc dữ liệu
Quản lý giao dịch và số dư tiền
-Số dư tiền
-Giao dịch tiền
Quản lý Khách
hàng
Kênh giao dịch
- Tại sàn
- Web
- Mobile
- Desktop
- Call center, SMS
Quản lý giao dịch đặt lệnh
- Lệnh thường
- Lệnh margin
- Quản lý DM
- Lệnh nâng cao
Tham số chung
-Chính sách margin
-Chính sách hạn mức
-Chính sách GD
.......
Core Back
- Thanh toán bù trừ
- Thực hiện quyền
- QL CK
- QL Tiền
- Báo cáo
Kết nối HT khác
-Gateway
-Interface
Quản lý TT Thị trường
- Thị trường
- Giá CK
Common
Market DBCust DB
CRM
-CRM
-Sales force mngt
Báo cáo
-Báo cáo
-Hỗ trợ ra quyết định
Quản lý CTCK và
Môi giới
-CTCK
-Môi giới
Cash DB
BF DB
Trade DB
Kế toán
- GL
- Management
Quản lý giao dịch và số dư CK
-Số dư CK
-GD CK
Securities
DB
Back DB
51. Kiến trúc tổng thể Core chứng khoán
PA
Kiến trúc năng lực
BA
Kiến trúc nghiệp vụ
DA
Kiến trúc dữ liệu
AA
Kiến trúc ứng dụng
TA
Kiến trúc công nghệ
S
A
Non-functional requirements
Phân tích thị trường CK
Cấu trúc nghiệp vụ
Yêu cầu nghiệp vụ
Kiến trúc, định nghĩa dữ liệu
Cấu trúc chức năng, ứng dụng
Công nghệ, Software Stack,
Lược đồ Software, Network & Hardware
52. Kiến trúc ứng dụng – mô hình logic
Data Feed Gateway
Exchange Gateway
Back Office System
View (HTML5)
Controller (JS framework)
Front End Services Layer (JS
framework)
Restful + Websocket Resource
Layer
Business Layer
Main
Databases
Browser/Mobile
Browser
Rest Services call
JSON compressed
Data
JDBC
Exchange System
Trading Module
Trading Gateway
Receiving Module
BOD Data
Real-time Data
EOD Data
Client Presentation Business Data Access Database
Data Access
Real-time Data Gateway
(TCP/IP, FIX, REST, SOAP)
Data Feed System
Bloombergs
Broadcast gateway (UDP) UDP
Data Sync
JPA
Common Services ( Configuration, Logging, Security, Audit, Email, SMS, Scheduling)
Broadcast Module
Reuters
Domestic Data Vendors
Periodical Data Gateway
(REST, SOAP)
File Gateway (Secured
FTP)
JPA
Cache
Cache for Biz Layer
Cache for DataFeed
Cache Client protocol
BO Gateway
MQ gateway
SFTP/SCP gateway
Cache Replicate protocol
Cache Client protocol
Data Feed
Databases
File Server
For Data
Feed
SCP / SFTP
Gateway & IF External Systems
JDBC
File Server
For BO
SCP/SFTP
Cache Replicate protocol
Cache Client protocol
VM or TCP
MQ
OMS/EMS
(Active/Standby)
Execution
Receiv
eMQ
Sendin
gMQ
TCP
Order Processing TCP VM
VM Trading Gateway
Sending Module
TCP/IP
TCP/IP
2.1
2.2
2.32.4
2.5
2.6
3.13.2
3.3b
3.3a
3.4a
3.4b
3.5b
1.1
1.2
1.3
1.4 1.5 1.6
1.7
MQ
VM or TCP
4.1
4.24.3
4.5
SCP/SFTPSCP/SFTP
File Server
FO-BO IF
5.1
5.2
5.4
5.5
5.6
Variable Protocols
(TCP/IP, FIX, REST,
SOAP or SFTP)
53. Kiến trúc tổng thể Core chứng khoán
PA
Kiến trúc năng lực
BA
Kiến trúc nghiệp vụ
DA
Kiến trúc dữ liệu
AA
Kiến trúc ứng dụng
TA
Kiến trúc công nghệ
S
A
Non-functional requirements
Phân tích thị trường CK
Cấu trúc nghiệp vụ
Yêu cầu nghiệp vụ
Kiến trúc, định nghĩa dữ liệu
Cấu trúc chức năng, ứng dụng
Công nghệ, Software Stack,
Lược đồ Software, Network & Hardware
54. TA – Mô hình triển khai cài đặt
Application Server
Red Hat Enterprise Linux 7.1
VM or Physical Machine
Oracle JDK 8
Hibernate 4EJB 3.2
Angular JS
WildflyApplication Server 9.0.1.Final
Twitter
bootstrap, CSS 3
JQuery
DRBD
Internal Load Balancing Server
Red Hat Enterprise Linux 7.1
VM or Physical Machine
nginx 1.9.3
Cache
Red Hat Enterprise Linux 7.1
VM or Physical Machine
Infinispan
DRBD
Oracle JDK 8
log4J
Database Server
Red Hat Enterprise Linux 7.1
VM or Physical Machine
MySQL 5.7.7
DRBD
Internal Gateway
Red Hat Enterprise Linux 7.1
VM or Physical Machine
ActiveMQ/ ZeroMQ
DRBD
Oracle JDK 8
log4J
Datafeed
Red Hat Enterprise Linux 7.1
VM or Physical Machine
ActiveMQ/ ZeroMQ
DRBD
Oracle JDK 8
log4J
Hibernate 4EJB 3.2
Infinispan SFTP(OpenSSH)
Exchange Gateway
Red Hat Enterprise Linux 7.1
VM or Physical Machine
ActiveMQ/ ZeroMQ
DRBD
Oracle JDK 8
log4J
FIXEngine
RESTeasyWebSocket (JavaEE)
55. TA – Sơ đồ máy chủ thực tế
Investors
HTTPS HTTP
VRRP HTTP
Back GW
Replication
ExternalGW
standby
ExternalGW
active
Synchronizer StandbySynchronizer Active
Back
Exchanges
Data Vendors
Datafeed standbyDatafeed active
jGroup
TCP
jGroup
TCP
SFTP
TCP(MQ)
Auto-t
FIX
HOSE
HNX
CORE SYSTEM HT BÊN NGOÀI
OMS active
DB master
Load Balancer active
Cache active
Load Balancer standby Cache active
OMS standby
App server active
DB slave
App server active
Data Vendors
57. TA – Load balancing
Sử dụng 2 loại request từ client: RESTful, Websocket
HTTPS RESTful để lấy truy vấn thông tin tài khoản, giá chứng khoán ban
đầu, đặt lệnh...
Websocket để update giá chứng khoán, update trạng thái lệnh trong phiên
giao dịch...
HTTP/S là giao thức stateless nhưng Websocket là statefull, do
vậy phải chia việc quản lý connection ra làm 2 đối với load
balancing.
Cổng 80 cho websocket WS
Cổng 443 cho HTTPS
Load Balancer phân phối request đến các application server
dựa vào tên miền.
58. TA – Load balancing
Nginx: Load balancing + fault tolerance cho web server
Tốc độ và hiệu năng
Nhẹ
Ổn định, tin cậy
Dễ dàng cấu hình
Cộng đồng sử dụng
LVS – Linux Virtual Server
KeepAlived
Cấu hình
Quản lý connection theo domain
Đảm bảo performance cho websocket bằng việc nén dữ liệu
Multi-tenancy: nhiều công ty, nhiều chi nhánh. Dịch vụ theo tên miền. SSL
accelerator.
# Tên công ty Chức năng Tên miền Cổng LB Cổng ứng dụng
1 AAA RESTful AAA.tenmien.com 443 8080
2 BBB RESTful BBB.tenmien.com 443 8081
3 Common WebSocket Websocket.tenmien.com 80 9080
59. TA – Mô hình Load Balancing
KeepAlived
KeepAlived
NGINX
NGINX
Virtual IP Heart Beet
JBOSS
JBOSS
Request
Request
Status Check
Status Check
LB1 Active
LB2 Standby
App Server 1 Active
App Server 2 Active
Websocket
RESTful
60. TA – Load Balancing – kết nối
App Server 2
Websocket:1234Web: 8888
App Server 1
Websocket:1234Web: 8888
LoadBalancer
App - Mobile - Web
HTTPS:443
ctck.tenmien.com:443
To App Server 1 :8888
websocket.tenmien.com:80
To App Server 2 :8888
To Application Server#1 :1234
To Application Server#2 :1234
WS:80
62. TA – Database
MySQL là sự lựa
chọn tốt vì free, đủ
mạnh
Oracle đắt hơn, là
sự lựa chọn tối ưu
hơn về tốc độ, hiệu
năng, dành cho các
CTCK có tiền
Scale-out
HA
Clustering
Replication
65. TA – Database – đồng bộ dữ liệu
MySQL replicate dữ liệu từ master server sang slave server. Có 2 phương thức:
PT bán đồng bộ chậm hơn nhưng đảm bảo được dữ liệu được nhất quán
Việc copy dữ liệu được MySQL thực hiện bằng cách copy binary log file từ
master sang slave server.
# Phương thức Mô tả
1 Asynchronous – Bất
đồng bộ
Khi application update dữ liệu vào master
server, Mysql gửi phản hồi về Application mà
không cần đợi dữ liệu được “replicate” sang
slave server.
2 Semi-synchronous –
Bán đồng bộ
Khi application update dữ liệu vào master
server, Mysql gửi phản hồi về Application sau
khi đợi dữ liệu được “replicate” sang slave
server.
67. TA – Database – HA
Sử dụng LVS, KeepAlived, VIP
Các server thật sẽ sử dụng chung một IP ảo, sau đó
dùng KeepAlived để quản lý
Tại một thời điểm KeepAlived sẽ kiểm tra xem là cái
IP ảo đang trỏ tới máy vật lý nào. Nếu connection OK
thì giữ kết nối đó, nếu không thì release và trỏ sang
con khác.
78. TA – Cache - Mode đọc, ghi dữ liệu
Replicated mode: tất cả dữ liệu được replicated qua tất cả các
server. Đọc dữ liệu nhanh hơn, ghi lâu hơn Distributed mode.
Distributed mode: dữ liệu được không replicated qua tất cả
server. Đọc dữ liệu lâu hơn, ghi nhanh hơn.
Mô hình phân tán
Write (Key, Value)
Node 2Node 1 Node 4
Read (Key, Value)
Node 3
Mô hình nhân bản
Write (Key, Value)
Node 2Node 1 Node 4
Read (Key, Value)
Node 3
Value
Data Item
Key
Value
Data Item
Key
Value
Data Item
Key
Value
Data Item
Key
Value
Data Item
Key
Value
Data Item
Key
Value
Data Item
Key
Value
Data Item
Key
Value
Data Item
Key
Value
Data Item
Key
79. TA – Cache Clustering
Tất cả các server liên quan đến việc trao đổi dữ liệu được đưa
vào trong 1 cluster. Sử dụng multicast network để đồng bộ dữ liệu
giữa các server trong cluster.
Các server gồm có:
Application servers
OMS servers
Cache servers
Datafeed Servers
Internal GW servers
External GW servers
81. TA – Cache Configuration
Multicast
Replication
DatafeedOMS
Cache
App servers
Gateways
Synchronizer
Cache server with only
cache function
jGroup jGroup jGroup
jGroup
jGroup
jGroup
jGroup
jGroup
Net Area 1 Net Area 2
Net Cluster (jGroup protocol)
Multicast
Routing
DatafeedOMS
Cache
App servers
Gateways
Synchronizer
82. TA – Cache Dataflow
Đường đi của dữ liệu “có vấn đề” ??! Quá “loằng ngoằng”, không nhanh, không tin cậy
OMS Gateway
Application
Cache
App Server
Database
Desktop
Mobile
Web
Order
1.Write cache
Application
Cache
2.Replication
Cache Listener
3.Notification
Order Handler
4.Write Cache
Cache5.Replication
Application
Cache Listener
Message Handler
6.Notification
7.MQOrder API
Cache Listener
83. TA – Cache Dataflow
Trong lược đồ này, đường đi của dữ liệu ngắn, nhanh hơn, tin cậy hơn
OMS Gateway
Application
Cache
App Server
Database
Desktop
Mobile
Web
Order
1.Write cache
Application
Cache2.Replication
Cache Listener
3.Notification
Order Handler
4.Write Cache
Application
Message Handler 5.MQOrder API
Cache Listener
85. TA – Message
JMS, Message Queue
Truyền thông bất đồng bộ (Async Comm)
Đối tượng tham gia: GW của back và front, GW kết nối Sở GD
Failover Handler
Master GW
Slave GW
Failover Master-IP -> Slave-IP
Message Queue
Application
Cache
Message Queue
Application
Cache
Back GW
Message
Active OMS
Active OMS
Application
Cache
Application
Cache
Replicate
Replicate
86. TA – MQ HA
Failover Handler
Master Front GW
Slave Slave GW
Failover Master-IP -> Slave-IP
Message Adapter
Back GW
Message
Persistent
&
Exclusive lockreplication
JDBC
JDBC
Message Adapter
Message
Master DB
Slave DB
87. Các giải pháp kỹ thuật
& Case Study
AGENDA
1.Overview về kiến trúc
2.Overview về TTCK
3.Lịch sử phát triển Core CK tại VN & các vấn đề
4.Kiến trúc hệ thống Core chứng khoán
5.Các giải pháp kỹ thuật & case study
88. Tổng hợp các vấn đề kỹ thuật khi xây dựng
Core chứng khoán
HA:
Fail-over, fall back
Load balancing
Scalability
Performance & throughput (response time, speed, concurrent
trans, payload...), cân bằng giữa tốc độ và an toàn an ninh thông tin
Trao đổi message real-time
Nhiều đơn vị kết nối, Multi-tenancy
Truy cập DB sử dụng ORM hay không
Java: EJB hay Spring?
Entity ? Conversion? DTO ?
Multi-cast?
Which memory techniques are used?
Cache?
Message queue / JMS?
89. Kết luận
Đã mô tả về TTCK, các đối tượng tham gia, vai trò của Core
đối với 1 trong những đối tượng quan trọng nhất – CTCK
Kiến trúc sơ bộ của 1 Core system. Phương pháp tiếp cận
khi xây dựng kiến trúc đó. Các công việc cần thực hiện khi
thực hiện kiến trúc – lựa chọn công nghệ, design (overview,
data, app, hardware...)
Các vấn đề của TTCK VN và các core system hiện tại. Các
vấn đề kỹ thuật đặt ra khi thực hiện 1 kiến trúc. (kiến trúc
khác có thể gặp các vấn đề khác)
Biz quyết định tất cả
Không có kiến trúc tốt mãi, chỉ có KT phù hợp với chiến
lược kinh doanh của DN trong 1 giai đoạn nhất định mà thôi.
Các phương diện khác cần xem xét: Budget, Non-functional
target, Stakeholders, Market/Marco Economy, Customers
90. Slides trình bày Case Study +
Thảo luận (bởi Mr Vũ Việt Anh)
Thảm khảo thêm : http://bit.ly/itlchn-stockcore-event
Hinweis der Redaktion
1
2
3
Đang dẫn dắt OCTech – là 1 công ty chuyên phát triển các PM trong ngành tài chính, CK với chất lượng cao
Một trong những SP được giới CK biết đến đó là GW kết nối với 2 sở GDCK
OCTech đã có gần 10 năm hoạt động trong lĩnh vực này.
Điều đáng nói nhất là Q có khoảng 10 năm làm trong lĩnh vực phần mềm CK, cho cả 2 phía – bên làm sản phẩm và bên tiêu thụ SP
6
Nếu không có KT, bất kỳ một công trình, một sản phẩm nào sẽ được xây dựng và hoàn thiện một cách “vô tổ chức”, không có quy củ, lộn xộn và thường không đáp ứng được công năng sử dụng
10
11
12
10 Stock Exchanges lớn trên thế giới:
1. Frankfurt Stock Exchange, Đức
2. Indonesia Stock Exchange
3. New York Stock Exchange, Mỹ
4. Madrid Stock Exchange, Tây Ban Nha
5. Hong Kong Stock Exchange
6. Bahrain Stock Exchange
7. London Stock Exchange, Vương quốc Anh
8. Chicago Board of Trade, Mỹ
9. Dubai Financial Market, UAE
10. Buenos Aires Stock Exchange, Argentina
Nguyên tắc: ưu tiên mua cao, bán thấp
Tích lũy bên bán: từ giá thấp đến cao
Tích lũy bên mua: từ giá cao đến thấp
2 bên chạm nhau tại mức giá mà KL các bên mua-bán đạt được là lớn nhất đó là mức giá khớp lệnh
Khách hàng
CTCK (Broker Firms, Securities Firms - SSI, HSC, VNDS)
Môi giới
Đầu mối tiếp nhận và chuyển lệnh
Thành viên lưu ký, thanh toán bù trừ
Nghiệp vụ khác: tư vấn, cho vay ký quỹ
Chi nhánh, phòng GD
Sở GDCK (HOSE, HNX)
Trung tâm lưu ký CSD (VSD)
Ngân hàng thanh toán (BIDV)
Ngân hàng
Ngân hàng lưu ký (HSBC)
Trung tâm thanh khoản (CCP)
Đối tác đặt lệnh (Reuters, Bloomberg)
Datafeed vendors (Reuters, Bloomberg, StoxPro, StockBiz)
SMS Vendors
Đi qua nhanh
Đi qua nhanh
Đi qua nhanh
Đi qua nhanh
AFE – màn hình đặt lệnh cho môi giới
SH-PRO, LotteHPT, màn hình đặt lệnh
SH-Mobile, LotteHPT, màn hình đặt lệnh + giá hiện tại + đặt lệnh nhanh với 3 giá tốt nhất
PHƯƠNG THỨC ĐẶT LỆNH và QUẢN LÝ DANH MỤC
Thời gian đầu: Quản lý lệnh = Excel, Đại diện sàn, đặt lệnh bằng gọi điện...
“Thông sàn”, kết nối CTCK – Sở bằng phần mềm, bỏ đại diện sàn. Tự động cập nhật kết quả GD.
Nhận lệnh tự động, giao dịch online qua Internet, mobile
TTCK Việt Nam hoạt động được hơn 15 năm với khá nhiều thăng trầm, với sự góp mặt của nhiều NCC trong và ngoài nước. Số lượng và và chất lượng các giải pháp core khá đa dạng.
1. Nâng cấp từ hệ thống cũ là không khả thi, tương tự như xây 1 nhà cao tầng trên nền móng của nhà cấp 4
2. Nếu việc nâng cấp khả thi, không có kinh phí, kinh nghiệm, con người, kiến thức để thực hiện nâng cấp
3. Công việc kinh doanh vẫn phải chạy, khách hàng không thể dừng giao dịch phải chắp vá việc dị dạng là không thể tránh khỏi
Performance hệ thống không đáp ứng được nhu cầu hiện tại về giao dịch 1 phần do gần đây TTCK khó khăn, các CTCK không đầu tư nhiều cho HT như trước, đặc biệt bảo trì, nâng cấp...1 phần do các vendor ngoại khó khăn, rút vốn và nguồn lực khỏi VN, các vendor nội không có chiến lược dài hạn và sức khỏe tài chính tốt nên bị “hụt hơi”.
Quy định về giao dịch, đặc biệt giao dịch ký quỹ, room, tỷ lệ an toàn tài chính...check các điều kiện trước khi đặt lệnh làm chậm tốc độ đặt lệnh hệ thống.
Core ngoại được đầu tư phát triển bài bản hơn, mặc dù công nghệ khá cũ nhưng kiến trúc khá tốt nên vẫn trụ được đến ngày nay. Core nội vẫn gặp nhiều vấn đề về kiến trúc, không có chiến lược đầu tư phát triển dài hạn sinh ra các vấn đề về hiệu năng, tốc độ thậm chí lỗi hệ thống nếu chạy trong thời gian dài.
Hệ thống Core chứng khoán CMS, lấy 2 từ đầu của tên 2 hệ thống đang phát triển + system
Xây dựng kiến trúc hệ thống dựa trên phương pháp luận với 5 hướng tiếp cận
Có gì đó hơi tương đồng với TOGAF
Quản lý tài khoản, tiền, chứng khoán, đặt lệnh, thực hiện quyền, quản lý môi giới, dịch vụ tài chính...
Các nghiệp vụ liên quan đến việc kết nối với Sở GDCK, Trung tâm lưu ký, ngân hàng
....
FO giao tiếp với KH, thường qua kênh Internet
BO giao tiếp với user là NV công ty, trong mạng LAN
FO, BO nối với VSD, Bank tùy
FO phải nối với Sở GDCK
Để tìm ra năng lực phục vụ của hệ thống, cần phân tích so sánh các thông số (TT, vốn hóa, số lệnh...) hiện tại với thị trường trong tương lai
Tương lai mấy năm phụ thuộc vào chiến lược KD của CTCK, vào vòng quay khấu hao mong muốn của CTCK..
Hiện tại 1 ngày giá trị GD khoảng 200tr USD, 2022 mong muốn đạt khoảng 1 tỷ USD
1,5 triệu tài khoản
Mỗi CTCK khoảng 100k tài khoản
Số lệnh 1 ngày khoảng 2-10k, đỉnh là 30k (VND)
Số transaction 1 ngày khoảng 10-50k tính cả đặt lệnh, truy vấn số dư, chuyển tiền..., đỉnh có thể đạt 100k
Khả năng xử lý song song, đồng thời cao, đòi hỏi độ chính xác tuyệt đối, an toàn khắt khe.
Hơi khác so với 1 hệ thống TMĐT, báo (mặc dù với các trang này tổng số lượng request có thể lớn hơn)
Cần dẫn 1 số nguồn. TTCK Ấn Độ có nguồn nhưng số liệu thống kê khá dài dòng phức tạp.
47
48
Phân hoạch dữ liệu theo nghiệp vụ, chỗ nào cần bố trí DB chỗ nào không
Giúp cho việc lưu trữ, truy vấn, xử lý dữ liệu nhanh chóng, suôn sẻ
Giúp cho việc bảo trì bảo dưỡng dữ liệu đỡ tốn kém và thuận tiện
Giúp cho việc phát triển các phần mềm vệ tinh như CRM, BPM...
Đây không phải là ví dụ tốt về AA, đây là mô hình tích hợp, có bóng dáng của Techical
AA diagram phải là các khối ứng dụng (logic) và chức năng của nó, quan hệ giữa các khối ứng dụng
Phần TA là phần tốn nhiều công sức, thời gian nhất
Khi có kiến trúc ứng dụng, anh em TA và Dev sẽ ngồi lại lựa chọn các công nghệ phù hợp cho mỗi “máy chủ” (logic)
Sau đó đưa ra sơ đồ triển khai với thông tin của các máy chủ cần thiết
Một trong những vấn đề rất quan trọng đối với các hệ thống hiệu năng cao, có lượng truy cập lớn là phải chia tải
62
http://imysql.com/mysql-refman/5.6/replication.html tham khảo khá tốt và đầy đủ về replication của MySQL
Hệ thống lựa chọn mô hình Master – Slave để tốc độ ghi tốt hơn
http://imysql.com/mysql-refman/5.6/replication.html tham khảo khá tốt và đầy đủ về replication của MySQL
Phải cân bằng giữa các non-funtional target với phương thức đồng bộ database
Sẽ thảo luận kỹ hơn về option sử dụng PT nào ở phần Thảo luận Giải pháp Kỹ thuật
App write (thong qua Connection Thread)
Update binary log
Update master DB
Send binary log tu Master Server qua Slave Server; Slave server tu dong Update Slave DB
Send ACK cho Connection Thread
Connection Thread send OK cho App
VIP = Virtual IP; LVS = Linux Virtual Server
Tiêu chí chọn: support Java, lưu được object và text, tương thích với App Server, nhà phát triển uy tín, OSS, hiệu năng tốt, HA, cân bằng đọc ghi, max value...
Tham khảo
http://infinispan.org/docs/7.0.x/user_guide/user_guide.html
http://db-engines.com/en/system/Couchbase%3BMemcached%3BRedis
http://vschart.com/compare/jboss-infinispan/vs/redis-database/vs/couchbase
Run mode:
Library mode: App chạy cùng JVM với Infinispan. Rich API, có thể dùng Listener API, gọi API nhanh hơn. Dễ phát triển app hơn.
Client-Server mode: App chạy khác JVM với Infinispan, process của ứng dụng là độc lập. Có thể dùng các giao thức HotRod, REST, memcached...để giao tiếp App với Cache.