폴라리스오피스 운영시스템
-
Upload
sanggi-choi -
Category
Internet
-
view
133 -
download
9
Transcript of 폴라리스오피스 운영시스템
5,300 만 가입자를 운영하는 Polaris Office 운영 시스템
Polaris Office 운영파트2017.1 | Ver. 1.0
Architecture
3
Technology Stack
VM
Service Platform Stack
Data Processing
Development Stack
Framework
SpringAOP, Batch,
Security, MVC
Dev Env
개발 환경SVN, ReviewBoard
성능 테스트nGrinder
WEB ServerNginx
WASTomcat
Service Component
AWS
ETLSpring Batch
ServerEC2
Data LakeS3
ORMHibernate
Agile 도구JIRA, Confluence
Data ProcessingEMR
Data WarehouseRedshift
DBRDS, MySQL
OSWindows Linux
Cent OS
UIjQuery
빌드 / 배포 관리Jenkins, SonarQube
Search
ElasticSearch
NoSQLDynamoDB,
Middleware
Office Engine
AccountGoogle, Facebook
BillingGoogle, Apple, Amazon, Alipay
NotificationAWS SES, GCM, APN, Baidu
Collaborative Real-time Editing, Sharing
Reverse ProxyNginx
Document View
Data Grid
Distributed Coordina-tion
ZooKeeperDrive SyncSync Transaction
Memcached
Message Queue
RabbitMQ
AWS SQSRedis
B2B Batch
Message Search
DocumentConvert, Edit
Operation Stack
Monitoring
Intrusion detector
Telegram
NewRelic
ElasticSearch
Log Collect
LogStash
KIbana
Deployment
Chef
Zabbix / Grafana
Analytics Stack
Batch ProcessingHadoop, Hive, Pig
OSS
BI System
KPI System집계 / 통계 / 리포트
Splunk
Log CollectorForwarder, Flume, Sqoop
Analytics Sys-tem
Distributed MQKinesis
Data MiningR
Textfilter
AWSElasticcache
NetworkNetty
4
System Architecture - Backend
AZ - 1
AZ - 2
Access Tier
InternetGateway
Application Tier Database Tier
EC2
EC2
EC2
EC2
ELBRoute 53
S3
Glacier
RDS DB Instance Standby (Multi-AZ)
RDS DB Instance Read Replica
Cache Cluster Store Tier
Elastic Beanstalk
ElastiCache(Redis)
ELB
RDS DB Instance
ElastiCache(Redis)
Elastic Beanstalk
SES SQS CloudWatch EMRKinesis Cloud FrontCognitoSNS DynamoCloudTrailIAM OpsWorks Lambda
5
System Architecture – Proxy & Whitelist
Auto Scaling group
Nginx Nginx
Frankfurt Region
Auto Scaling group
Nginx Nginx
Auto Scaling group
WAS WAS
California Region
Auto Scaling group
Nginx Nginx
Tokyo Region
Whitelist & Relay & Static Resource
Whitelist & Relay & Static Resource
API
Whitelist & Relay & Static Resource
Network Latency 로 발생되는 성능 문제를 Route53 의 Latency Based Routing 으로 지역별 사용자 Request 를 아시아 , 유럽 , 미주지역으로 분리하여 개선
사용자( 아시아 )
사용자( 미주 )
사용자( 유럽 )
6
System Architecture – Proxy & Whitelist & Static Re-source Cache
Auto Scaling group
Nginx Nginx
Frankfurt Region
Auto Scaling group
Nginx Nginx
Auto Scaling group
WAS WAS
California Region
Auto Scaling group
Nginx Nginx
Tokyo Region
Whitelist & Relay & Static Resource Cache
Whitelist & Relay & Static Resource Cache
API
Whitelist & Relay & Static Resource
Cache
사용자( 아시아 )
사용자( 미주 )
사용자( 유럽 )
Auto Scaling group
Nginx Nginx
Static Re-source
Static 과 Dynamic Resource 분리로 서비스 운영 편의성 향상
7
Static
서비스 복잡도 증가로 인한 WAS 부하를 여러 WAS 로 트래픽을 분리하여 개선
System Architecture – 트래픽 분리
Auto Scaling group
Nginx Nginx
Frankfurt Region
Nginx Nginx
California Region
Auto Scaling group
Nginx Nginx
Tokyo Region
API
사용자( 아시아 )
사용자( 미주 )
사용자( 유럽 )
Nginx WAS1 WAS2 WAS3 WAS4 •••
8
Auto Scaling group
Nginx Nginx
Auto Scaling group
WAS WAS
https://www.polarisoffice.com
polarisoffice.comwww.polarisoffice.com
http://www.polarisoffice.comhttps://polarisoffice.com
Connect
302 Temporary Redirection
System Architecture – SEO(1/2) Search Engine Optimization(As Is)
9
Search Engine Optimization(To Be)
System Architecture – SEO(2/2)
Auto Scaling group
Nginx Nginx
Relay & Static Resource Cache
Auto Scaling group
WAS WAS
API
http://www.polarisoffice.com
polarisoffice.comwww.polarisoffice.com Connect
301 permanent Redirection
https://drive.polarisoffice.com
Auto Scaling group
Nginx Nginx
Static Resource 메뉴를 통해 이동
Monitoring
11
Update
AWS Multi-Region 모니터링 시스템 구축 및 개발
Frankfurt region Tokyo region California region
users
Availability Zone
Availability Zone
CloudWatch
Nginx Redis
Chef etc
ZabbixProxy
Service
AlarmServer
ZabbixServer
GrafanaServer
Availability Zone
WAS
Auto Scaling group
…ZabbixProxy
Update
Availability Zone
WAS
Auto Scaling group
…ZabbixProxy
Nginx Redis
Nginx etc
ZabbixProxy
Service
users
Cacti & Nagios 으로는 여러 Region 을 모니터링 하기에 부적합하여 Zabbix 로 변경
12
Zabbix Dashboard
Zabbix Dashboard Zabbix Screen
13
Grafana Dashboard
AWS ELB AWS RDS
Zabbix Dashboard 의 부족함을 Grafana 로 보완
14
SNS 알림 시스템
AWS Califor-
nia
AWS Tokyo
AWS Ireland
Alarm SystemZabbix System
Dev Group
Operator Group
Data Group
REST API
trigger event
REST API
여러 chat 과 연동하는 알림 시스템
형상관리
16
AWS Multi-Region 인프라 관리
CaliforniaChina
Tokyo
Frankfurt
ireland
요구 사항 증가에 따른 반복적인 인프라 구성을 Chef 를 통해 개선
17
CI / CD Architecture
Jenkins
Build
Verifydeploy
빌드 자동화
정적분석Static AnalysisCode Review
SonarQube
Production
모니터링 시스템
(Zabbix)
Dev
Test
Quality GatesPASS
배포자동화시스템
get source UnitTest
개발자 테스트 자동화
Test Result
S3build info
- Verify - Production
Nexus
SVN
소스 형상관리를 위해 Jenkins + SonarQube 도입 및 운영
18
CI / CD Docker 이용한 환경 구축
Bin/Libs
JenkInsMaster
Bin/Libs
JenkInsSlave
Bin/Libs
JenkInsSlave
Bin/Libs
Sonar-Qube
Bin/Libs
TestLink
Bin/Libs
MySQL
Bin/Libs
WAS
Bin/Libs
Redis
Bin/Libs
MySQL
Dev & Op
Dev & Mgr
Amazon Linux ECS
Amazon Linux ECS
Amazon Linux ECS
1
2
3
Docker 를 기반 형상관리 환경 구성 및 운영
DB
20
RDS 운영 현황
MAZ
Master(active)
Master(standby)
Replica-1
Replica-2
WAS
Update
Batch
EMR
Application
Availability Zone
California Region
Oregon Region
[Master]db.r3.4xlarge : 16 vCore / 122GBStorage : 3TB / 1,2000 IOPs메인 서비스 및 Multi-AZ 구성
[Replica-1 / Replica-2]db.m4.2xlarge : 8 vCore / 32GBStorage : 3TB / 9,000 IOPs용도 : Data Dump 및 Disaster Re-
coveryDisaster Recovery Replica-2 는 Ore-
gon 에 구성되어 있으며 , Batch Job 등 , 비 실시간 서비스에서 주로 사용하고 있음[Database 사용 현황 ]
Storage 현황 : 1.95 TB(Index 비율 : 37%)
CPU 현황 : 45% IOPs 현황 : 6,000 IOPs
[ 주요 Table 현황 ]Table 1 : Rows(21 억 ), Data(626
GB)Table 2 : Rows(12 억 ), Data(671
GB)
21
Database Schema 변경 Process
개발자DB Schema변경 요청 등록
ERD,Table
Schema이력 관리
JIRA Confluence
DB Schema변경 요청 이력 관리
DBADB Schema 변경 검토 , 보완 사항 협의 및 확정
보완 사항 적용
Schema변경 적용
Schema변경 관리최소 배포 2 일 전에검토 완료되어야 함
22
Slow Query 최적화 Process Slow Query 이슈 원인을 분석하여 보완
RDS 모니터링 시스템Slow Query 및 Error Log 분석 ,이슈 발견 시 , 매시간 알림 Email
DBASlow Query 및 Error
Log(Dead Lock 등 ) 이슈 분석
DBA & 개발자이슈 검토 협의 , 보완 방안 계획
JIRA Ticket이슈 Ticket 등록DBA이슈 보완 결과 추적 , 관리
RDS-Analyzer
추가 개선 사항 발견 시 , 보완 계획 재협의
23
RDS 모니터링 시스템
Master
RDS-Analyze
RDS 알림 Email 전송 시스템
Elasticsearch 에서 1 시간 전에 저장된Data(Slowquery & Errorlog) 를 가져온 후 ,통계 분석 처리
통계 분석 결과와 Alarm Threshold 값 비교
조건을 충족하는 통계 자료에 대한Alarm Email 정보 발송
Kibana4(Slowquery, Errorlog,
DBCP)
시간당 , Slow Query 및 Error Log 수집 10 초당 , Process List 수집
수집 Data 가공 후 , ES 에 저장 Log Data 시각화Elasticsearch
[Slow Query 정보 ]Slow Query 수 및 Average / Max Query TimeExanmined Row 총 합 및 Average / Max 수
[Error Log 정보 ]Dead Lock 및 Aborted Connection 유형별 집계Access Denided 정보 표시
[DBCP 정보 ]계정 및 서버별 , Active / Sleep Process List 정보
해당 정보는 계정별 , 서버별로 통계가 표시되고 있으며 , 최소 1 초 (DBCP 10 초 ) 단위로 추적 가능함
24
RDS 보안 시스템
Tadpole
Bastion
RDS
WAS
Batch
MessagePush
Application
Database 작업자
Tadpole Audit
mysql Console접근 차단
KMS
[Database Audit]Tedpole 을 통해서만 Database 접근 가능
mysql Console 은 원천적으로 차단시킴Tedpole 을 이용하여 모든 사용자 Log 관리일반 사용자는 Select Query 만 가능하며 ,
DML 권한은 DBA 에게만 허용됨DB 접근 계정은 일반 사용자 , 운영 사용자 ,
DB 관리자 , DBA 및 파트장으로 구분됨[Data 보안 ]
KMS 를 통하여 Data 암호화 보안 Key 를 발급 받아 처리하고 있음중요 Data 에 대해 암호화시킴
1 급 : 사용자 및 시스템 암호2 급 : 전화번호 및 Email 등 사용자 정보3 급 : 기타
KMS 에서 보안 Key 발급
발급된 보안 Key 로중요 Data 암호화
25
NoSQL(DynamoDB) 사용 현황
서비스 첫 해 , 가입자 1 천만명을 모집하면서 Database 부하 및 Storage 사용량이 급증하였고 , RDS 운영 비용도 크게 증가하였음
RDS 부하 분산 방안
향후 계획 File Data(670MB, 12 억건 ) 처리를 위해 Couchbase 도입을 검토하였으나 , 성능 및 AWS RDS 운영
비용과 비교하여 큰 이점이 없었음 향후 AWS Aurora 를 사용하는 것이 최적의 대안이 될 것으로 판단하고 있음
• Data 이전 : Event 및 Read Position 등 , 750MB, 20 억건 이상
• 신규 Data 추가 : 총 15 개 신규 테이블 NoSQL 에 추가 구성
Query 복잡도가 낮은 Log 성 Data, NoSQL 이전
26
서비스 무중단 Database Schema 변경 및 Data Mi-gration
Trigger 기반 Solution 은 Data 1 억건이 초과할 경우 , 거의 사용할 수 없음
Replication 은 Index 변경 , Column 추가 등 , 단순 DB Schema 변경만 지원 가능 복제 후 , Master RDS 에 Multi-AZ 을 설정하면 , Storage 복제로 인한 심각한
Read/Write 성능 저하가 (7 시간 이상 ) 발생함 AWS DMS 기능으로 성능 저하 방지 및 보다 복잡한 DB Schema 변경 ( 수평 및 수직 Partitioning) 작업도 가능하나 , 아래 몇가지 주의 사항이 있음
Slave 에서 복제 시 , Data 누락 및 longtext 의 복제 시간을 예측하기 어려움 대용량 Data 복제 시 , Disk 공간의 확보가 필요함 (24 시간 Binary Log 유지 )
서비스 무중단 DB Schema 변경 및 Data Migration 진행
초기 (2014 년 )
최근 (2016 년 )
향후 방안
보안
28
진행한 사항 AWS 전체 리소스에 대한 자산 현황 파악 AWS Key Management System 활용한 DB 암호화 Key 관리 AWS CloudTrail 을 통한 AWS Web Console 에 접근 로그 관리 AWS IAM(user, role 등 ) 를 통한 AWS Resource 에 대한 접근 제어 처리 각종 로그 보안 관리 리눅스 접근 보안 로그 관리
해야할 사항 지속적으로 변화하는 각종 계정 관리 리눅스 시스템에 대한 계정 관리 (LAP, Active Directory 연동 ) RDS(MySql) 에 대한 로깅
ISO27001
29
Lambda, Elasticsearch Service(Kibana, ElasticSearch)
AWS CloudTail Dashboard
AWSCloudTrail
AWSLambda
AWSResource Activity
Amazon CloudWatch
Logs
Amazon Elasticsearch
Service
30
허가되지 않은 곳에서 AWS Web Console 에 접근을 할 경우 관리자에게 알람이 가도록 CloudTrail 과 Lambda 를 통해서 자동화
AWS Web Console 접근제어
AWSCloudTrail
AmazonS3
AWSLambda
AWSResource Activity
Object Put Event
Telegram 보안관리자
- 허가되지 않은 곳 ( 회사 외부 등 e) 에서의 접근- Bastion On / Off 여부
31
Nginx whitelist 기반 API 처리 ElasticSearch 에 저장된 Accesslog 를 기반으로 Client 의 이상 Request 를 감지하여
관리자에게 알림 전달 ( 특정 IP 에서 10 분사이 12,000 Request 가 발생되었을 경우 ) 관리자는 침입 상태를 확인하여 , Network ACL 에 해당 Client 가 접속을 하지 못 하도록 처리
침입탐지 시스템
Intrusion DetectorAccess Log
보안관리자
Network ACLNetwork ACL
Invalid Request
32
Security 취약점 확인 SSL 인증서 Audit Security Group 변동 사항 파악 IAM(User, Role) 변동 사항 파악 IAM 및 S3 Policy 변동 사항 파악 EIP 변동 사항 파악
Security Monkey 운영
서비스 운영
34
인프라 구성 Process
개발자인프라 구성 요청서 작성
JIRA Confluence
- 요구 사항- Architecture
- 권한 요청- 로그 백업 항목 등
Architect- 요구 사항 확인
- Architecture 수정
보완
보완 사항 적용수정 보완 사항
협의
운영자- 인프라 구성 진행
- 자동 배포를 위한
배포 시스템 정비
35
모니터링 (Zabbix, NewRelic, CloudWatch) 를 통해 Incident & Problem 인지 시급한 이슈 일 경우 운영자가 1 차 긴급 대응을 진행 한다 .
Incident & Problem 은 Jira 에 등록되고 , 서버 운영자가 1 차 확인을 한 후 운영 이슈일 경우 운영자가 , 개발 이슈일 경우 개발 담당자가 이슈 분석 및 리뷰를 한 이후에 Backlog
에 반영 Backlog 에 등록된 이슈는 내부 우선 순위에 의해 이슈 수정 후 테스트 거쳐 상용 시스템에 반영
Service Incidents & Problem 관리
Incident & Problem 발생
서버 운영자
서버 개발자Kanban Board
서비스 품질 활동
37
NewRelic Synthetics 기반 서비스 SLA 관리
Origin
38
AWS OpsWorks 기반 서비스 확장
39
AWS AutoScaling 기반 서비스 확장
40
AWS 를 활용한 백업 및 복구
그 외 사항들
42
로그 수집 시스템Client Log Collect System(Kinesis)
S3
Shard ShardShard
Kinesis Consumer
Log Collector Config WAS
DeveloperProvider
Cognito
logKinesisToS3
Polaris OfficeMobile Client
Polaris OfficePC Client
Operator Log Collector System
ELB Log
Tomcat
Access Log
S3
LogStash
LogStash
CloudTail Log
43
AWS Lambda Cron Job 을 통한 자동 Resource 관리 주기적으로 AMI, Snapshot Retention All Open Security Group Mailing Running Instance Mailing -> 비용 관리 Resource Tagging 현황 파악 Spot Instance Detail Mailing(CloudTrail 연동 )
Resource Management - AWS Lambda 활용
AMI, Snap-shot Reten-
tion
Amazon CloudWatchScheduled
Event All Open SG
TB RunningInstance
Resource Tagging
Spot In-stance Result Report Invoke
44
Billing Tagging 을 통한 비용 분석 및 최적화
Resource Management - Billing Tagging
Amazon EC2
Create In-stance
AWSCloudTrail
Tagging
Amazon CloudWatch
Alarm
Find Invalid Tag Resource
AmazonSNSAWS
Lambda
AWSLambda
EBS, AMI, Network Interface Tagging etc.
45
자동 배포 시스템
Operator
Amazon S3 bucket
Elastic Load Balancing
in-stances
AWS Elas-tic
Beanstalkin-
stanceAWS
OpsWorks
1
23
4 5
6
ARMS
Backend: SpringBoot, MySQL, Python / Frontend: BootStrap, Angularjs, Flask
46
서비스 품질 검증 시스템 nGrinder 를 이용하여 전체 서비스 품질에 대한 Black Box 검증 테스트 Data 양은 검증 목적에 맞춰 조정 가능하며 , 성능 및 안정성 , 장애 복구 검증 진행
nGrinder Agent(Python)
Black Box( 서비스 Infra)
Conroller(Web)
API Call
TPS 측정 결과
Agent 제어
종류 검증 방법
단위 기능테스트
여러 API 로 구성된 단위 기능에 대한 성능 및 안정성 검증 성능 검증 : Baseline TPS 이상 충분한 성능이 나오는 지 검증 안정성 검증 : Full 부하 , 12 시간 이상 안정적인 동작 상태 검증
복합 기능테스트
실제 서비스와 동일한 비율로 상위 20 개 주요 단위 기능을 동시에 수행 결과 검증
장애 복구테스트
70% 부하 상태에서 다수 서버 장애 시 , 복구 과정 및 상태 점검 서비스 복구 여부 및 시간 , 성능 TPS 변화 추이 등을 주로 점검
Thank you