32
AWS 경험기 YoungJin Lee ([email protected]) AWS-SE 소모임 3차 2017-02-08

Aws se-aws 경험기

Embed Size (px)

Citation preview

Page 1: Aws se-aws 경험기

AWS 경험기

YoungJin Lee ( [email protected])

AWS-SE 소모임 3차

2017-02-08

Page 2: Aws se-aws 경험기

발표자

2

Name : 이 영 진 (Lee Young Jin)

Email : [email protected]

Java, Android, .Net, CISA, CISSP

Page 3: Aws se-aws 경험기

발표 내용

3

서비스 소개

3만 다운로드 부터 3천만 다운로드

이 후 준비

Page 4: Aws se-aws 경험기

서비스 소개

4

True Balance 란?

- 인도 선불 유심의 밸런스(잔량) 확인 및 충전 앱

- 선불폰의 원터치 잔액조회 기능

- 일 단위 사용량 통계정보

- 자동 잔액 알림, 충전 기능

- 향후 개인별 통신 패턴 분석기능을 기반으로 한 요금제

큐레이팅, 즉각적인 충전 플랫폼, 결제와 송금, 크라우

드 펀딩 등 핀테크 서비스로 비즈니스를 확장할 계획

Page 5: Aws se-aws 경험기

3만 다운로드 부터 3천만 다운로드

5

2015.06 2015.08 2016.01 2016.07 2016.10 2017.01

팀 합류3만 유저서비스 지역 - 델리

15만 유저서비스 지역 - 델리

100만 유저서비스 지역 – 델리 외 4

2천만 다운로드서비스 지역 - 전국

1천만 다운로드서비스 지역 - 전국

3천만 다운로드서비스 지역 - 전국

Page 6: Aws se-aws 경험기

3만 다운로드

Page 7: Aws se-aws 경험기

3만 유저

7

• 팀 합류

• 개발자 5인 (안드로이드 2명, 서버 3명)

• 서비스 시험 단계

• 인도 델리만 서비스

• 3만 유저 대상 로그 수집 및 분석을 통한 전략 구상

• AWS 계정 처음 겟!

AWS 가 뭔가요? (A)아마도 (W)웹 (S)서비스?

Page 8: Aws se-aws 경험기

3만 유저 – 시스템

8

Available-Zone

PublicELBusers

Public subnet

AWS CLOUD

Production VPC

Internet gateway

API 인증 API 로그MySQL

Page 9: Aws se-aws 경험기

3만 유저 – 문제점 개선

9

• 로컬 빌드 후 패키지 EC2 에 복사 하고 실행하고 아… 승질나서 -> Jenkins 배포 구성

• 유저 관리는 뭘로? -> CMS 개발

• 3rd Party Service API 호출 응답이 느려…. -> 비동기 처리 Queue (RabbitMQ)

• 서비스가 죽어도 몰라요 -> CloudWatch Alarm

• 인증 토큰은 캐시에 넣자 -> Memcached 적용

• 프로젝트 이슈 트래킹 관리도 해야지 -> JIRA 운영

• 개발 기술문서 관리나 공유는? -> WIKI 운영

할 일이 많구만….

Page 10: Aws se-aws 경험기

15만 다운로드

Page 11: Aws se-aws 경험기

15만 유저

11

• 가입 프로모션으로 사용자 점차 증가

• 밸런스 충전 기능 제공

• 델리 이외 지역 확대 준비

사용자를 확보하자! 서비스 지역 확대

Page 12: Aws se-aws 경험기

15만 유저 – 시스템

12

Available-Zone

PublicELBusers

Public subnet

AWS CLOUD

Production VPC

Internet gateway

API API 로그

MySQLMaster

MySQLSlave

Worker

Memcached RabbitMQ

JIRA, WIKI CMS

Jenkins

Page 13: Aws se-aws 경험기

15만 유저 – 문제점 개선

13

• 지역 확대 후 사용자가 몰리면 어떻게 처리하지? -> Auto Sacaling 구성

• 가만있어봐 인스턴스가 자동으로 뜨는데 버전 관리는?

-> Jenkins 빌드 시 S3 업로드

-> 인스턴스 구동 시 Bash Shell 사용, S3 최종 버전 다운 후 구동

• 로그도 많아질 테니 로그 DB는 추가 설치

AWS… 이제 EC2 는 좀 알아요.

Page 14: Aws se-aws 경험기

100만 다운로드

Page 15: Aws se-aws 경험기

100만 유저 – 상황

15

• 50만 -> 100만 까지 7일만에 돌파. 후 프로모션 중단

• 인도 플레이스토어 라이프 스타일 1위

• 일일 가입자 15만 (7일째)

델리 외 4개 지역 오픈!

Page 16: Aws se-aws 경험기

100만 유저 – 시스템

16

Available-Zone

PublicELBusers

Public subnet

AWS CLOUD

Production VPC

Internet gateway

API API 로그

MySQLMaster

MySQLSlave

Worker

Auto Scaling group

MemcacheJIRACMSWIKIRabbitMQ…..

MySQLLOG

Page 17: Aws se-aws 경험기

100만 유저 – 문제점 개선

17

• EC2에 올린 MySQL 서버를 사양을 늘려야 겠는데 개발자만 있으니 관리가 어렵고…

-> RDS 로 이관, AWS DMS 를 이용한 마이그레이션

• MySQL 에 저장된 로그를 볼 수가 없어요… 느려서

-> ELK (Elasticsearch, Logstash, Kibana) 구성

• AWS를 최대한 활용 관리 부담을 줄이자!

-> RabbitMQ -> SQS 로 변경

-> Memcached -> AWS elasticache (Memcached)

사용자는 많아져서 좋지만 뭔가 불안한데….

Page 18: Aws se-aws 경험기

1천만 다운로드

Page 19: Aws se-aws 경험기

1천만 유저

19

• Payment Gateway 연동으로 신용카드 충전 서비스 시작

• CPI, 광고 적용

• 치터,어뷰저 와의 전쟁

• 치터 막고 ( IP Block , HTTP Header 검증, Signature 강화 )

• 치터 막고 (Device IMEI, Sim Serial 체크섬)

• 치터 막고 (루팅 단말 API 후킹 회피)

• 치터 막자 (그밖에 검증 강화)

인도 전 지역 서비스 확대

Page 20: Aws se-aws 경험기

1천만 유저 – 시스템

20

Available-Zone

PublicELBusers

Public subnet

AWS CLOUD

Production VPC

Internet gateway

APIWorker

Auto Scaling group

JIRACMSWIKI…..

RDS Memcached

RedisRDS

AWS S3

AWS SQS

API

Auto Scaling group

치터 막느라 바뻐서 그대로에요!!

Page 21: Aws se-aws 경험기

1천만 유저 – 문제점 개선

21

사용자는 많아져서 좋지만 뭔가 불안한데….

• 결제 API 는 보안이 중요하지!

-> 결제/충전 API, Worker -> Private Subnet 으로, NAT Gateway 구성

• 이제 로그 데이터는 많으니 GA를 대체할 시스템이 필요해요

-> AWS EMR, Spark (DAU, MAU 3주 데이터 보정)

-> 실시간 분석을 위한 Kinesis 구성

-> Zeppelin 으로 조회

-> 통계 시스템 개발 – 시각화

• DB 부하를 줄여야겠지

-> elasticache Redis 사용, 캐싱

• SSL 인증서 만료가 언제였지?

-> ACM (AWS Certificate Manager) 으로 대체

Page 22: Aws se-aws 경험기

2천만 다운로드

Page 23: Aws se-aws 경험기

2천만 유저 – 상황

23

• 개발,운영,마케팅,디자인 등 다양한 포지션 인력 채용 본격화

• 매출 확보를 위한 다양한 시도

• 결제 매출 늘리기

• 광고 매출 늘리기

• 지속적인 성장을 위한 다양한 프로모션 시도

인도 시장 상황 변화로 속도전!! 인력 채용 본격화

Page 24: Aws se-aws 경험기

2천만 유저 – 시스템

24

Available-Zone

PublicELBusers

Public subnet

AWS CLOUD

Production VPC

Internet gateway

APIWorker

Auto Scaling group

JIRACMSWIKI…..

RDS

MemcachedRedis

RDS

AWS S3

AWS SQS

API

Auto Scaling group

Private subnet

NAT Gateway

Internet

API - Payment

Auto Scaling group Auto Scaling group

Worker - Payment

Internet gateway

PublicELB AWS

EMR

AWSKinesis

Page 25: Aws se-aws 경험기

2천만 유저 – 문제점 개선

25

시스템 구조 개선

• API 모놀리식(Monolithic Architecture) 약간의 변경에 전체 배포 부담.

-> MSA(microservice architecture) 로 변경

• 치터(어뷰저)를 막을 시스템이 필요

-> 데이터 기반 FDS 시스템 개발 준비

• 통계 시스템 개발속도가 요구사항을 따라가지 못함

-> BI 시스템으로 AWS QuickSight 사용

• 금융 서비스 서버는 해당 국가에 위치

-> Mumbai Region 이관 준비

• DNS 관리

-> Route 53 사용

Page 26: Aws se-aws 경험기

3천만 다운로드

Page 27: Aws se-aws 경험기

3천만 유저 – 상황

27

• 인도 RBI 은행으로 부터 월릿 라이선스 획득

• PCI-DSS 인증 준비

• 인프라 보안 감사 준비

• 본격적인 핀테크 비즈니스 시작

핀테크 서비스로...

Page 28: Aws se-aws 경험기

3천만 유저 – 시스템

28Available-Zone A/B

RDS Memcached

Redis

Route 53

ExternalELB

InternalELB

InternalELB

NAT

NAT-PG

users

Internet

private-subnet-110.1.0.0/22

RDS

private-subnet-210.1.8.0/22

public-subnet-210.1.136.0/22

public-subnet-110.1.128.0/22

OpenVPN

private-subnet-310.1.16.0/22

APIsPayment

WorkerPayment

private-subnet-410.1.24.0/22

WorkerPublish

Recharge

WorkerPush

WorkerSMS

DiscoveryNginx APIs

router

router

router

router

router

Internet gateway

Mgmt VPC

Internet gateway

router

AWS CLOUD

Internet

Production VPC 10.1.0.0/16

router

AWS S3

AWS SQS

Internet gateway

VPN connection

AWSQuickSight

AWS EMR

AWSKinesis

Page 29: Aws se-aws 경험기

3천만 유저 – 문제점 개선

29

보안, 보안, 보안

• PCI-DSS 인증, 보안 감사 의 요구사항을 맞추기 위한 인프라 변경

• Singapole Region -> Mumbai Region 이관

• VPC 구성부터 모두 다시 (Security Group, Network ACL, Route Table, …….)

• Zabbix 모니터링 및 알람

• OpenVPN 을 통한 보안 연결

• AWS Inspector 을 이용한 취약점 분석

• IAM Role 활용

• VPC Flow Log, CloudTrail 감사로그 사용

• CloudFront, WAF 사용 준비

Page 30: Aws se-aws 경험기

이제 시작!

Page 31: Aws se-aws 경험기

회고

31

개발한다고 바빠 인프라에 너무 신경쓰지 못한 상황이 부채로..

서비스가 성장하기 시작하면 인프라 변경이 어렵다. (잘 모를땐 설정 변경 조차 무섭다.)

찾아보니 AWS 설명서 문서가 정말 잘 되어 있었다. AWS를 사용한다면 우선 설명서를 보자!

API 기반 서비스에서 최소 VPC (Subnet,Route,Securite Ggroup)는 이해해야 고생을 안한다.

이제는 AWS 가 뭔지는 알아요!!!.

Page 32: Aws se-aws 경험기

끝!

32

Q & A

감사합니다.

2017.02.08

다음엔 좀 더 구체적인 내용으로....