SlideShare a Scribd company logo
서비스 무중단 마이그레이션
KT에서 Amazon으로
애드투페이퍼 방신우
작성자 소개
방신우 Sin-Woo Bang
이메일 : sinwoobang@add2paper.com
Github : https://github.com/sinwoobang/
사이트 : http://sinwoobang.me/
내용 소개
- 중규모 아키텍처(1)
이전 경험을 공유합니다.
- 서비스 무중단 이전 경험을 공유합니다.
- 백엔드 어플리케이션, DB, 캐시, DNS 작업 등이 있습니다.
- 인력 한계로 AWS SaaS(ex. RDS, ElastiCache)를 일부 사용하지 않았습니다.
(1) 대규모까진 아니라 편의로 붙인 이름입니다. 동시 접속자 4,000명 미만을 기준 잡았습니다.
애드투페이퍼
- 대학생 대상 무료 출력 제공
- 누적 회원 70만명
- 전국 132개 대학교 사용
- 약 5,000곳 PC 클라이언트 설치
- 학생 : 모바일 앱 / 모바일 웹 / PC 웹 / PC
클라이언트
- 광고주 : PC 웹
- 현장 관리자 : PC 웹
- 사내 관리자 : PC 웹
플랫폼
기존 서버 스택(~2017.8)
- 2013년 글에서 큰 틀에서 동일
- KT 유클라우드 약 5년 이용
- 핵심
- AP 서버(Python/Django)
- 캐시 서버(Memcached)
- 비동기 워커 서버(Redis)
- 크론 서버(Crontab, Python/Django)
- DB 서버(MySQL 5.5, Master-Slave)
- Amazon Web Services(AWS)
- AP 서버(EC2)
- 캐시 서버(EC2)
- 비동기 워커 서버(EC2)
- 크론 서버(EC2)
- DB 서버(EC2, Master-Slave)
이외에도 DB 프록시 서버 등이 있지만 주제에 집중하기 위해 적지 않았습니다.
현재 스택
1. AWS에 서비스를 띄운다.
2. 유클라우드에 연결된 도메인을 AWS로 연결한다.
검토 : 무엇을 해야하는가
1. AWS에 서비스를 띄운다.
a. 무중단으로 이전하려면
b. 유클라우드와 동일하게 서비스를 띄워야한다.
검토 : 무엇을 해야하는가
1. AWS에 서비스를 띄운다.
a. 무중단으로 이전하려면
b. 유클라우드와 동일하게 서비스를 띄워야한다.
c. 동일하게 띄우려면
i. AP를 띄워야한다.
검토 : 무엇을 해야하는가
1. AWS에 서비스를 띄운다.
a. 무중단으로 이전하려면
b. 유클라우드와 동일하게 서비스를 띄워야한다.
c. 동일하게 띄우려면
i. AP를 띄워야한다.
ii. AP를 띄우려면
1. DB
2. 캐시
3. 비동기 워커
4. 크론
검토 : 무엇을 해야하는가
AWS에 서비스를 띄운다 : 1차 전략
유클라우드 AWS
AP
DB
비동기 워커
AP
캐시
크론
비동기 워커
크론
AWS에 서비스를 띄운다 : 1차 전략
1. DB : 유클라우드 연결
2. 캐시 : 이전 완료까지 제거
a. 고려했던 것들
i. AWS에 새로운 캐시 서버 생성
1. 새로운 값은 새로운 캐시 서버에 SET
2. 한계 : 완벽 이전까지 며칠을 기다려야 하는 문제
3. 서비스가 캐시 의존적이지도 않았다.
ii. repcached : 공식 홈페이지 다수 링크가 404. 신뢰 불가.
b. 캐시 제외했을때 100ms 지연 발생. 잠깐이면 감당할만하다고 판단.
c. 캐시값이 없으면 DB를 바라보도록 의존성 제거.
3. 비동기 워커는 유클라우드, AWS 동시 운영해도 무관
4. 크론도 스케쥴 분리하여 유클라우드, AWS 동시 운영
AWS에 서비스를 띄운다 : 1차 전략
1. DB : 유클라우드 연결
a. 기존에 내부 IP로 통신
b. AWS와 유클라우드 간 외부 통신 필요
c. 유클라우드 MySQL Master 방화벽 설정 변경
i. 기존 : 외부 IP 통신 불허
ii. 변경 : AWS AP IP만 통신 허용
d. 유클라우드 MySQL Master - AWS AP 통신 : SSH 터널링 구성
i. 고려했던 것들
1. 도메인 기반 SSL 사용
a. 편리
b. 한계 : 인증서가 서비스 단일 도메인만 존재
AWS에 서비스를 띄운다 : 1차 전략 완료
1. 1차 전략 완료
2. ELB IP로 직접 연결하여 테스트
3. AWS에서도 서비스 정상 작동(환호)
AWS에 서비스를 띄운다 : 2차 전략
유클라우드 AWS
AP
DB
비동기 워커
AP
캐시
크론
비동기 워커
크론
DB
AWS에 서비스를 띄운다 : 2차 전략
1. DB 이전 큰 그림
a. 유클라우드 MySQL Master - AWS MySQL Slave 구성
b. AWS MySQL Slave를 Master로 승격
2. 큰 그림만 마치면 이전 95% 완료
그런데 말입니다
최초 검토사항 수정 필요
1. AWS에 서비스를 띄운다.
2. 유클라우드에 연결된 도메인을 AWS로 연결한다.
최초 검토사항 수정 필요
1. AWS에 유클라우드 의존적인(ex. DB) 서비스를 띄운다.
2. 유클라우드에 연결된 도메인을 AWS로 연결한다.
3. AWS에서 유클라우드 의존성을 걷어낸다.
최초 검토사항 수정 필요
1. (1차 전략) AWS에 유클라우드 의존적인(ex. DB) 서비스를 띄운다.
2. 유클라우드에 연결된 도메인을 AWS로 연결한다.
3. (2차 전략) AWS에서 유클라우드 의존성을 걷어낸다.
최초 검토사항 수정 필요
1. (1차 전략) AWS에 유클라우드 의존적인(ex. DB) 서비스를 띄운다.
2. 유클라우드에 연결된 도메인을 AWS로 연결한다.
a. 2차 전략을 위해서 선행 필요
3. (2차 전략) AWS에서 유클라우드 의존성을 걷어낸다.
1. DNS TTL : 0으로 설정
2. 유클라우드 LB IP에서 AWS ELB로 설정
3. AWS CloudWatch : 유저 유입 확인
도메인 연결 : Route 53
2차 전략으로 돌아가서
AWS에 서비스를 띄운다 : 2차 전략
유클라우드 AWS
AP
DB
비동기 워커
AP
캐시
크론
비동기 워커
크론
DB
AWS에 서비스를 띄운다 : 2차 전략
1. DB 이전 큰 그림
a. 유클라우드 MySQL Master - AWS MySQL Slave 구성
b. AWS MySQL Slave를 Master로 승격
2. 큰 그림만 마치면 이전 95% 완료
AWS에 서비스를 띄운다 : 2차 전략
1. DB 이전 큰 그림
a. 유클라우드 MySQL Master - AWS MySQL Slave 구성
i. SSH 터널링 구성
ii. Slave 무중단 생성 : Percona XtraBackup https://goo.gl/6hB1mn
b. 유클라우드 AP - AWS MySQL Slave간 SSH 터널링 구성
c. AWS MySQL Slave를 Master로 승격
i. Slave) STOP SLAVE
d. AP DB IP를 Slave IP로 변경 후 배포
AWS에 서비스를 띄운다 : 2차 전략
1. DB 이전 큰 그림
a. 유클라우드 MySQL Master - AWS MySQL Slave 구성
i. SSH 터널링 구성
ii. Slave 무중단 생성 : Percona XtraBackup https://goo.gl/6hB1mn
b. 유클라우드 AP - AWS MySQL Slave간 SSH 터널링 구성
c. AWS MySQL Slave를 Master로 승격
i. Slave) STOP SLAVE
d. AP DB IP를 Slave IP로 변경 후 배포
2. 서비스 정상 작동 확인
1. 비동기 워커
a. KT, AWS 동시 운영 후 KT AP 트래픽이 사라지자 비동기 워커도 자동 소멸
2. 크론
a. KT, AWS 동시 운영 후 스케쥴별로 점진 이전
3. HTTPS 트래픽
a. 유클라우드 사용 시절 HTTP, HTTPS 로드밸런서를 따로 운영
i. 유클라우드 서비스 초기 HTTPS 로드밸런서 미지원
ii. HTTP 트래픽을 먼저 옮기고 HTTPS는 차후 이전하였음.
4. 고정 IP 대응
a. 일부 클라이언트(학교) 방화벽 정책 : IP 화이트리스트
b. 고정 IP는 구입 불가
c. 해당 IP에서 운영중인 서버를 프록시 서버로 전환
d. 프록시 서버는 AWS 서버 HTTP 호출
ETC
Q&A
1. 왜 AWS RDS, DMS를 사용하지 않았나요?
a. MySQL 5.5 GTID 미지원
b. MySQL 5.5 binlog_format=STATEMENT 상태
c. Percona XtraBackup은 디렉토리 직접 접근 필요하나 RDS는 SSH 접속 미지원
감사합니다
내용이 많아 PPT에 못 담은 내용이 많습니다.
문의 : sinwoobang@add2paper.com

More Related Content

What's hot

왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
Jo Hoon
 
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
ssuserf8b8bd1
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
Eueung Mulyana
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
Peng Xiao
 
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4
Amazon Web Services Korea
 
Final terraform
Final terraformFinal terraform
Final terraform
Gourav Varma
 
Introduction to helm
Introduction to helmIntroduction to helm
Introduction to helm
Jeeva Chelladhurai
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
Amazon Web Services Korea
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to Kubernetes
Imesh Gunaratne
 
Hands-on Helm
Hands-on Helm Hands-on Helm
Hands-on Helm
Docker, Inc.
 
Helm 3
Helm 3Helm 3
Introducing Amazon EKS Anywhere On Apache CloudStack
Introducing Amazon EKS Anywhere On Apache CloudStackIntroducing Amazon EKS Anywhere On Apache CloudStack
Introducing Amazon EKS Anywhere On Apache CloudStack
ShapeBlue
 
Docker Ecosystem on Azure
Docker Ecosystem on AzureDocker Ecosystem on Azure
Docker Ecosystem on Azure
Patrick Chanezon
 
Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17
Ryan Jarvinen
 
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
Amazon Web Services Korea
 
An intro to Kubernetes operators
An intro to Kubernetes operatorsAn intro to Kubernetes operators
An intro to Kubernetes operators
J On The Beach
 
Kubernetes PPT.pptx
Kubernetes PPT.pptxKubernetes PPT.pptx
Kubernetes PPT.pptx
ssuser0cc9131
 
Azure kubernetes service (aks)
Azure kubernetes service (aks)Azure kubernetes service (aks)
Azure kubernetes service (aks)
Akash Agrawal
 
Kubernetes - introduction
Kubernetes - introductionKubernetes - introduction
Kubernetes - introduction
Sparkbit
 
Kubernetes Internals
Kubernetes InternalsKubernetes Internals
Kubernetes Internals
Shimi Bandiel
 

What's hot (20)

왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
 
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4
 
Final terraform
Final terraformFinal terraform
Final terraform
 
Introduction to helm
Introduction to helmIntroduction to helm
Introduction to helm
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to Kubernetes
 
Hands-on Helm
Hands-on Helm Hands-on Helm
Hands-on Helm
 
Helm 3
Helm 3Helm 3
Helm 3
 
Introducing Amazon EKS Anywhere On Apache CloudStack
Introducing Amazon EKS Anywhere On Apache CloudStackIntroducing Amazon EKS Anywhere On Apache CloudStack
Introducing Amazon EKS Anywhere On Apache CloudStack
 
Docker Ecosystem on Azure
Docker Ecosystem on AzureDocker Ecosystem on Azure
Docker Ecosystem on Azure
 
Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17
 
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
 
An intro to Kubernetes operators
An intro to Kubernetes operatorsAn intro to Kubernetes operators
An intro to Kubernetes operators
 
Kubernetes PPT.pptx
Kubernetes PPT.pptxKubernetes PPT.pptx
Kubernetes PPT.pptx
 
Azure kubernetes service (aks)
Azure kubernetes service (aks)Azure kubernetes service (aks)
Azure kubernetes service (aks)
 
Kubernetes - introduction
Kubernetes - introductionKubernetes - introduction
Kubernetes - introduction
 
Kubernetes Internals
Kubernetes InternalsKubernetes Internals
Kubernetes Internals
 

Similar to 서비스 무중단 마이그레이션 : KT에서 Amazon으로

AWS Cloud Design Pattenr (Korean) - CDP Seminar in Korea
AWS Cloud Design Pattenr (Korean) - CDP Seminar in KoreaAWS Cloud Design Pattenr (Korean) - CDP Seminar in Korea
AWS Cloud Design Pattenr (Korean) - CDP Seminar in Korea
SORACOM, INC
 
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
Amazon Web Services Korea
 
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
고포릿 default
 
AWS CloudFront 가속 및 DDoS 방어
AWS CloudFront 가속 및 DDoS 방어AWS CloudFront 가속 및 DDoS 방어
AWS CloudFront 가속 및 DDoS 방어
Kyle(KY) Yang
 
[2017 Windows on AWS] AWS를 활용한 그룹웨어 구축 방안
[2017 Windows on AWS] AWS를 활용한 그룹웨어 구축 방안[2017 Windows on AWS] AWS를 활용한 그룹웨어 구축 방안
[2017 Windows on AWS] AWS를 활용한 그룹웨어 구축 방안
Amazon Web Services Korea
 
[3주차] 알파 유저를 위한 AWS 스터디
[3주차] 알파 유저를 위한 AWS 스터디[3주차] 알파 유저를 위한 AWS 스터디
[3주차] 알파 유저를 위한 AWS 스터디
Amazon Web Services Korea
 
리스펙토링 6월 세미나, AWS로 개인서버 구축하기
리스펙토링 6월 세미나, AWS로 개인서버 구축하기리스펙토링 6월 세미나, AWS로 개인서버 구축하기
리스펙토링 6월 세미나, AWS로 개인서버 구축하기
JungHoon Lee
 
AWS 클라우드 기반 나의 첫 웹 애플리케이션 만들기 – 윤석찬 :: AWS Builders Online Series
AWS 클라우드 기반 나의 첫 웹 애플리케이션 만들기 – 윤석찬 :: AWS Builders Online SeriesAWS 클라우드 기반 나의 첫 웹 애플리케이션 만들기 – 윤석찬 :: AWS Builders Online Series
AWS 클라우드 기반 나의 첫 웹 애플리케이션 만들기 – 윤석찬 :: AWS Builders Online Series
Amazon Web Services Korea
 
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
Amazon Web Services Korea
 
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon Web Services Korea
 
Aws개념 EC2로 API서버 구축
Aws개념 EC2로 API서버 구축Aws개념 EC2로 API서버 구축
Aws개념 EC2로 API서버 구축
Gi Bong Kim
 
Aws발표자료 final
Aws발표자료 finalAws발표자료 final
Aws발표자료 finalGi Bong Kim
 
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
Jongwon Han
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
Amazon Web Services Korea
 
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
Amazon Web Services Korea
 
20150115 AWS BlackBelt - Amazon VPC (Korea)
20150115 AWS BlackBelt - Amazon VPC (Korea)20150115 AWS BlackBelt - Amazon VPC (Korea)
20150115 AWS BlackBelt - Amazon VPC (Korea)
Amazon Web Services Korea
 
AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015 AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
Amazon Web Services Korea
 
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
Amazon Web Services Korea
 
AWS Finance Symposium_천만 고객을 위한 AWS 클라우드 아키텍쳐 확장하기
AWS Finance Symposium_천만 고객을 위한 AWS 클라우드 아키텍쳐 확장하기AWS Finance Symposium_천만 고객을 위한 AWS 클라우드 아키텍쳐 확장하기
AWS Finance Symposium_천만 고객을 위한 AWS 클라우드 아키텍쳐 확장하기
Amazon Web Services Korea
 
AWS를 활용한 글로벌 오피스 업무 환경 구축하기 - 류한진, 이랜드시스템스 :: AWS Summit Seoul 2019
AWS를 활용한 글로벌 오피스 업무 환경 구축하기 - 류한진, 이랜드시스템스 :: AWS Summit Seoul 2019AWS를 활용한 글로벌 오피스 업무 환경 구축하기 - 류한진, 이랜드시스템스 :: AWS Summit Seoul 2019
AWS를 활용한 글로벌 오피스 업무 환경 구축하기 - 류한진, 이랜드시스템스 :: AWS Summit Seoul 2019
Amazon Web Services Korea
 

Similar to 서비스 무중단 마이그레이션 : KT에서 Amazon으로 (20)

AWS Cloud Design Pattenr (Korean) - CDP Seminar in Korea
AWS Cloud Design Pattenr (Korean) - CDP Seminar in KoreaAWS Cloud Design Pattenr (Korean) - CDP Seminar in Korea
AWS Cloud Design Pattenr (Korean) - CDP Seminar in Korea
 
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
 
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
 
AWS CloudFront 가속 및 DDoS 방어
AWS CloudFront 가속 및 DDoS 방어AWS CloudFront 가속 및 DDoS 방어
AWS CloudFront 가속 및 DDoS 방어
 
[2017 Windows on AWS] AWS를 활용한 그룹웨어 구축 방안
[2017 Windows on AWS] AWS를 활용한 그룹웨어 구축 방안[2017 Windows on AWS] AWS를 활용한 그룹웨어 구축 방안
[2017 Windows on AWS] AWS를 활용한 그룹웨어 구축 방안
 
[3주차] 알파 유저를 위한 AWS 스터디
[3주차] 알파 유저를 위한 AWS 스터디[3주차] 알파 유저를 위한 AWS 스터디
[3주차] 알파 유저를 위한 AWS 스터디
 
리스펙토링 6월 세미나, AWS로 개인서버 구축하기
리스펙토링 6월 세미나, AWS로 개인서버 구축하기리스펙토링 6월 세미나, AWS로 개인서버 구축하기
리스펙토링 6월 세미나, AWS로 개인서버 구축하기
 
AWS 클라우드 기반 나의 첫 웹 애플리케이션 만들기 – 윤석찬 :: AWS Builders Online Series
AWS 클라우드 기반 나의 첫 웹 애플리케이션 만들기 – 윤석찬 :: AWS Builders Online SeriesAWS 클라우드 기반 나의 첫 웹 애플리케이션 만들기 – 윤석찬 :: AWS Builders Online Series
AWS 클라우드 기반 나의 첫 웹 애플리케이션 만들기 – 윤석찬 :: AWS Builders Online Series
 
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
 
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
 
Aws개념 EC2로 API서버 구축
Aws개념 EC2로 API서버 구축Aws개념 EC2로 API서버 구축
Aws개념 EC2로 API서버 구축
 
Aws발표자료 final
Aws발표자료 finalAws발표자료 final
Aws발표자료 final
 
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
 
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
 
20150115 AWS BlackBelt - Amazon VPC (Korea)
20150115 AWS BlackBelt - Amazon VPC (Korea)20150115 AWS BlackBelt - Amazon VPC (Korea)
20150115 AWS BlackBelt - Amazon VPC (Korea)
 
AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015 AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
 
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
 
AWS Finance Symposium_천만 고객을 위한 AWS 클라우드 아키텍쳐 확장하기
AWS Finance Symposium_천만 고객을 위한 AWS 클라우드 아키텍쳐 확장하기AWS Finance Symposium_천만 고객을 위한 AWS 클라우드 아키텍쳐 확장하기
AWS Finance Symposium_천만 고객을 위한 AWS 클라우드 아키텍쳐 확장하기
 
AWS를 활용한 글로벌 오피스 업무 환경 구축하기 - 류한진, 이랜드시스템스 :: AWS Summit Seoul 2019
AWS를 활용한 글로벌 오피스 업무 환경 구축하기 - 류한진, 이랜드시스템스 :: AWS Summit Seoul 2019AWS를 활용한 글로벌 오피스 업무 환경 구축하기 - 류한진, 이랜드시스템스 :: AWS Summit Seoul 2019
AWS를 활용한 글로벌 오피스 업무 환경 구축하기 - 류한진, 이랜드시스템스 :: AWS Summit Seoul 2019
 

서비스 무중단 마이그레이션 : KT에서 Amazon으로

  • 1. 서비스 무중단 마이그레이션 KT에서 Amazon으로 애드투페이퍼 방신우
  • 2. 작성자 소개 방신우 Sin-Woo Bang 이메일 : sinwoobang@add2paper.com Github : https://github.com/sinwoobang/ 사이트 : http://sinwoobang.me/
  • 3. 내용 소개 - 중규모 아키텍처(1) 이전 경험을 공유합니다. - 서비스 무중단 이전 경험을 공유합니다. - 백엔드 어플리케이션, DB, 캐시, DNS 작업 등이 있습니다. - 인력 한계로 AWS SaaS(ex. RDS, ElastiCache)를 일부 사용하지 않았습니다. (1) 대규모까진 아니라 편의로 붙인 이름입니다. 동시 접속자 4,000명 미만을 기준 잡았습니다.
  • 4. 애드투페이퍼 - 대학생 대상 무료 출력 제공 - 누적 회원 70만명 - 전국 132개 대학교 사용 - 약 5,000곳 PC 클라이언트 설치
  • 5. - 학생 : 모바일 앱 / 모바일 웹 / PC 웹 / PC 클라이언트 - 광고주 : PC 웹 - 현장 관리자 : PC 웹 - 사내 관리자 : PC 웹 플랫폼
  • 6. 기존 서버 스택(~2017.8) - 2013년 글에서 큰 틀에서 동일 - KT 유클라우드 약 5년 이용 - 핵심 - AP 서버(Python/Django) - 캐시 서버(Memcached) - 비동기 워커 서버(Redis) - 크론 서버(Crontab, Python/Django) - DB 서버(MySQL 5.5, Master-Slave)
  • 7. - Amazon Web Services(AWS) - AP 서버(EC2) - 캐시 서버(EC2) - 비동기 워커 서버(EC2) - 크론 서버(EC2) - DB 서버(EC2, Master-Slave) 이외에도 DB 프록시 서버 등이 있지만 주제에 집중하기 위해 적지 않았습니다. 현재 스택
  • 8. 1. AWS에 서비스를 띄운다. 2. 유클라우드에 연결된 도메인을 AWS로 연결한다. 검토 : 무엇을 해야하는가
  • 9. 1. AWS에 서비스를 띄운다. a. 무중단으로 이전하려면 b. 유클라우드와 동일하게 서비스를 띄워야한다. 검토 : 무엇을 해야하는가
  • 10. 1. AWS에 서비스를 띄운다. a. 무중단으로 이전하려면 b. 유클라우드와 동일하게 서비스를 띄워야한다. c. 동일하게 띄우려면 i. AP를 띄워야한다. 검토 : 무엇을 해야하는가
  • 11. 1. AWS에 서비스를 띄운다. a. 무중단으로 이전하려면 b. 유클라우드와 동일하게 서비스를 띄워야한다. c. 동일하게 띄우려면 i. AP를 띄워야한다. ii. AP를 띄우려면 1. DB 2. 캐시 3. 비동기 워커 4. 크론 검토 : 무엇을 해야하는가
  • 12. AWS에 서비스를 띄운다 : 1차 전략 유클라우드 AWS AP DB 비동기 워커 AP 캐시 크론 비동기 워커 크론
  • 13. AWS에 서비스를 띄운다 : 1차 전략 1. DB : 유클라우드 연결 2. 캐시 : 이전 완료까지 제거 a. 고려했던 것들 i. AWS에 새로운 캐시 서버 생성 1. 새로운 값은 새로운 캐시 서버에 SET 2. 한계 : 완벽 이전까지 며칠을 기다려야 하는 문제 3. 서비스가 캐시 의존적이지도 않았다. ii. repcached : 공식 홈페이지 다수 링크가 404. 신뢰 불가. b. 캐시 제외했을때 100ms 지연 발생. 잠깐이면 감당할만하다고 판단. c. 캐시값이 없으면 DB를 바라보도록 의존성 제거. 3. 비동기 워커는 유클라우드, AWS 동시 운영해도 무관 4. 크론도 스케쥴 분리하여 유클라우드, AWS 동시 운영
  • 14. AWS에 서비스를 띄운다 : 1차 전략 1. DB : 유클라우드 연결 a. 기존에 내부 IP로 통신 b. AWS와 유클라우드 간 외부 통신 필요 c. 유클라우드 MySQL Master 방화벽 설정 변경 i. 기존 : 외부 IP 통신 불허 ii. 변경 : AWS AP IP만 통신 허용 d. 유클라우드 MySQL Master - AWS AP 통신 : SSH 터널링 구성 i. 고려했던 것들 1. 도메인 기반 SSL 사용 a. 편리 b. 한계 : 인증서가 서비스 단일 도메인만 존재
  • 15. AWS에 서비스를 띄운다 : 1차 전략 완료 1. 1차 전략 완료 2. ELB IP로 직접 연결하여 테스트 3. AWS에서도 서비스 정상 작동(환호)
  • 16. AWS에 서비스를 띄운다 : 2차 전략 유클라우드 AWS AP DB 비동기 워커 AP 캐시 크론 비동기 워커 크론 DB
  • 17. AWS에 서비스를 띄운다 : 2차 전략 1. DB 이전 큰 그림 a. 유클라우드 MySQL Master - AWS MySQL Slave 구성 b. AWS MySQL Slave를 Master로 승격 2. 큰 그림만 마치면 이전 95% 완료
  • 19. 최초 검토사항 수정 필요 1. AWS에 서비스를 띄운다. 2. 유클라우드에 연결된 도메인을 AWS로 연결한다.
  • 20. 최초 검토사항 수정 필요 1. AWS에 유클라우드 의존적인(ex. DB) 서비스를 띄운다. 2. 유클라우드에 연결된 도메인을 AWS로 연결한다. 3. AWS에서 유클라우드 의존성을 걷어낸다.
  • 21. 최초 검토사항 수정 필요 1. (1차 전략) AWS에 유클라우드 의존적인(ex. DB) 서비스를 띄운다. 2. 유클라우드에 연결된 도메인을 AWS로 연결한다. 3. (2차 전략) AWS에서 유클라우드 의존성을 걷어낸다.
  • 22. 최초 검토사항 수정 필요 1. (1차 전략) AWS에 유클라우드 의존적인(ex. DB) 서비스를 띄운다. 2. 유클라우드에 연결된 도메인을 AWS로 연결한다. a. 2차 전략을 위해서 선행 필요 3. (2차 전략) AWS에서 유클라우드 의존성을 걷어낸다.
  • 23. 1. DNS TTL : 0으로 설정 2. 유클라우드 LB IP에서 AWS ELB로 설정 3. AWS CloudWatch : 유저 유입 확인 도메인 연결 : Route 53
  • 25. AWS에 서비스를 띄운다 : 2차 전략 유클라우드 AWS AP DB 비동기 워커 AP 캐시 크론 비동기 워커 크론 DB
  • 26. AWS에 서비스를 띄운다 : 2차 전략 1. DB 이전 큰 그림 a. 유클라우드 MySQL Master - AWS MySQL Slave 구성 b. AWS MySQL Slave를 Master로 승격 2. 큰 그림만 마치면 이전 95% 완료
  • 27. AWS에 서비스를 띄운다 : 2차 전략 1. DB 이전 큰 그림 a. 유클라우드 MySQL Master - AWS MySQL Slave 구성 i. SSH 터널링 구성 ii. Slave 무중단 생성 : Percona XtraBackup https://goo.gl/6hB1mn b. 유클라우드 AP - AWS MySQL Slave간 SSH 터널링 구성 c. AWS MySQL Slave를 Master로 승격 i. Slave) STOP SLAVE d. AP DB IP를 Slave IP로 변경 후 배포
  • 28. AWS에 서비스를 띄운다 : 2차 전략 1. DB 이전 큰 그림 a. 유클라우드 MySQL Master - AWS MySQL Slave 구성 i. SSH 터널링 구성 ii. Slave 무중단 생성 : Percona XtraBackup https://goo.gl/6hB1mn b. 유클라우드 AP - AWS MySQL Slave간 SSH 터널링 구성 c. AWS MySQL Slave를 Master로 승격 i. Slave) STOP SLAVE d. AP DB IP를 Slave IP로 변경 후 배포 2. 서비스 정상 작동 확인
  • 29. 1. 비동기 워커 a. KT, AWS 동시 운영 후 KT AP 트래픽이 사라지자 비동기 워커도 자동 소멸 2. 크론 a. KT, AWS 동시 운영 후 스케쥴별로 점진 이전 3. HTTPS 트래픽 a. 유클라우드 사용 시절 HTTP, HTTPS 로드밸런서를 따로 운영 i. 유클라우드 서비스 초기 HTTPS 로드밸런서 미지원 ii. HTTP 트래픽을 먼저 옮기고 HTTPS는 차후 이전하였음. 4. 고정 IP 대응 a. 일부 클라이언트(학교) 방화벽 정책 : IP 화이트리스트 b. 고정 IP는 구입 불가 c. 해당 IP에서 운영중인 서버를 프록시 서버로 전환 d. 프록시 서버는 AWS 서버 HTTP 호출 ETC
  • 30. Q&A 1. 왜 AWS RDS, DMS를 사용하지 않았나요? a. MySQL 5.5 GTID 미지원 b. MySQL 5.5 binlog_format=STATEMENT 상태 c. Percona XtraBackup은 디렉토리 직접 접근 필요하나 RDS는 SSH 접속 미지원
  • 31. 감사합니다 내용이 많아 PPT에 못 담은 내용이 많습니다. 문의 : sinwoobang@add2paper.com