SlideShare a Scribd company logo
1 of 40
Download to read offline
RDS to Aurora PostgreSQL
Migration
변규현 / 개발자, 당근마켓
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
발표자 소개
• 당근마켓 채팅플랫폼 개발자
• AWS Serverless Hero
• Go언어를 주로 사용함
• 개발을 잘하고 싶어함
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
RDS를 쓰고 계시나요?
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
그럼 RDS를 왜 쓰시나요?
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
RDS의 특징
• 데이터 베이스 설치에 대한 부담이 없음
• 데이터 베이스 업그레이드, Backup 및 확장에 대해서 부담이 없음
(Maintenance, Scalability, Replication)
• Multi AZ를 통한 고가용성
• IOPS에 따른 스토리지 선택 가능
(Magnetic, SSD, Provisioned IOPS Storage)
• Security Group을 통한 접근 제어
• IAM을 통한 사용자 제어 가능
• MySQL, MariaDB, PostgreSQL, Oracle, MSSQL Server 지원
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
RDS PostgreSQL에서 겪었던 어려움
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
RDS PostgreSQL에서 겪었던 어려움
• Replica를 직접 설정하고 관리
(Replica 생성 > Rout53 가중치 기반 레코드 설정)
-> 인스턴스 추가할 때 마다 Route53 에서 설정 필요
• Replica instance가 5대로 제한
• 저장공간을 직접 늘려주어야 함
(Storage autoscaling 기능을 사용할 수 있음)
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
처음에는 운영상 어려움은 없었어요
서비스가 크지 않다면
RDS PostgreSQL로 충분해요
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
그런데, 우리는 빠르게 성장하고 있었어요
DB 부하는 매주 높아지고 있었고,
이를 더욱 잘 대응하기 위한 준비가 필요했어요.
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
Migration 이전 RDS PostgreSQL의 CPU
2019.07.10 ~ 2019.07.15
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
Aurora PostgreSQL은 해답이 될 수 있을까
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
Amazon Aurora의 특징
• MySQL 데이터 베이스보다 최대 5배 많은 처리량 지원
• 표준 PostgreSQL 보다 3배 많은 처리량 지원
• 1/10 비용으로 상용 데이터베이스의 보안, 가용성 및 안정성 제공
• RDS의 기본 기능 모두 사용 가능
• 분산 스토리지 시스템으로, 인스턴스당 최대 128TB까지 자동 확장
• Replica 15개 사용 가능
• 3개의 AZ에 걸친 복제
• 손쉬운 Custom Endpoint 설정
• 빠른 마스터 복원
• IOPS 사용량에 따른 과금
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
가장 와닿은 내용들
- 처리량
- 스토리지
- Replica 15개
- 빠른 마스터 복원
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
Migration을 준비하기로 결정했어요.
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
근데, Migration은 어떻게 준비하나요?
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
Migration할 인스턴스에 대해서
Aurora PostgreSQL을 Read Replica로 생성
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
준비는 이게 전부에요.
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
그리고 Migration은 신중해야하니
연습을 했어요
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
Migration 연습
• 연습환경 만들기
• 백업 AMI로 RDS 복구
• 네트워크 설정 확인
(Security Group, Subnet Group, VPC)
• Aurora PostgreSQL로 복제본 생성
• Migration Simulation
• 트래픽 완전 차단(Webserver, Security Group)
• 웹서버 DB Endpoint 수정
• Aurora PostgreSQL을 Master로 승격
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
각 스테이지 별 적용 및 테스트 완료!
Production Migration Simulation 5회
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
연습한 대로 Migration을 시작했어요
Aurora PostgreSQL을 Master로 승격시키고
모니터링을 했어요.
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
문제는 없었을까요?
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
DB가 3번 재시작했어요
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
RDS Performance Insight와 PGHero 를 통해
특정 쿼리가 해결되지 않고
계속 남아있는 것을 발견했어요.
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
SELECT pg_terminate_backend(PID);
이걸로도 죽지 않는 쿼리가 있었어요.
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
전체 트래픽을 차단하고
워커도 전부 중지시켰다고 생각했는데,
Migration 시점에 워커 하나가 동작하고 있었어요
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
Hanging Query가 있었고,
그 쿼리들은 워커에서 사용한 테이블들과 연관이 있었어요.
더 살펴보니, 이 테이블들의 인덱스를
사용하는 쿼리들만 문제가 있었어요
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
관련된 테이블들의 Index에 대해서
REINDEX를 진행하고,
다시 모니터링을 시작했어요.
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
이후의 Aurora PostgreSQL CPU
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
REINDEX 명령어를 통해
깨졌던 인덱스가 복구되고,
문제가 되었던 Index 범위의 쿼리들도
정상적으로 처리되기 시작했어요! 😊
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
복구를 성공적으로 완료했어요 🎉
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
Aurora로 전환하고
어떤 점이 개선되었을까요?
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
1년 운영 후기
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
1년 간 느낀점
• 대규모 이벤트 진행 또는 급작스런 트래픽 증가에 대해
Read replica를 사용한 유연한 대응이 용이함
• Custom Endpoint를 활용한 서비스별 커넥션 관리 가능
• 용량 확장 및 IOPS에 대한 고민 사라짐
• 빠른 Master DB 복구
(AZ 장애 발생 시 알람과 동시에 복구됨)
• Performance Insight를 통한 Slow Query 대응
• 빠르고 유연한 확장이 가능하기 때문에 DB인스턴스 CPU 및 Memory를 피크 시간
기준 50% 이상 사용
• 테이블 삭제시 1초도 안돼서 명령이 종료됨
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
현재 운영중인 Aurora PostgreSQL CPU
• Writer 1대
• Reader for webserver
7대
• 데이터 분석용 1대
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
운영을 하는 부담이 많이 줄었네요!
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
Aurora를 도입해보는 건 어떨까요?
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
마지막으로...
2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현
에서
함께할 분을 찾고 있어요 😊
dngn.kr/join-us-dev
감사합니다!
Email: novemberde1@gmail.com
Blog: novemberde.github.io
Github: github.com/novemberde

More Related Content

More from AWSKRUG - AWS한국사용자모임

커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021
커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021
커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021
복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021
복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...AWSKRUG - AWS한국사용자모임
 
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...
[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...
[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...AWSKRUG - AWS한국사용자모임
 
초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020
초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020
초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020AWSKRUG - AWS한국사용자모임
 
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...AWSKRUG - AWS한국사용자모임
 
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020AWSKRUG - AWS한국사용자모임
 
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020AWSKRUG - AWS한국사용자모임
 
엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C) :: AWS Community Day Online 2020
엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C)  :: AWS Community Day Online 2020엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C)  :: AWS Community Day Online 2020
엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C) :: AWS Community Day Online 2020AWSKRUG - AWS한국사용자모임
 
AWS Cloud Development Kit (CDK)를 이용한 코드 기반 인프라 개발 및 배포 - 공찬호(리얼리티매직) :: AWS C...
AWS Cloud Development Kit (CDK)를 이용한 코드 기반 인프라 개발 및 배포 - 공찬호(리얼리티매직) :: AWS C...AWS Cloud Development Kit (CDK)를 이용한 코드 기반 인프라 개발 및 배포 - 공찬호(리얼리티매직) :: AWS C...
AWS Cloud Development Kit (CDK)를 이용한 코드 기반 인프라 개발 및 배포 - 공찬호(리얼리티매직) :: AWS C...AWSKRUG - AWS한국사용자모임
 
Cloud로 나아가는 Frond-end 개발자 - 박찬민(버드뷰) :: AWS Communityday online 2020
Cloud로 나아가는 Frond-end 개발자 - 박찬민(버드뷰) :: AWS Communityday online 2020Cloud로 나아가는 Frond-end 개발자 - 박찬민(버드뷰) :: AWS Communityday online 2020
Cloud로 나아가는 Frond-end 개발자 - 박찬민(버드뷰) :: AWS Communityday online 2020AWSKRUG - AWS한국사용자모임
 
서버리스 데이터 플로우 개발기 - 김재현 (Superb AI) :: AWS Community Day 2020
서버리스 데이터 플로우 개발기 - 김재현 (Superb AI) :: AWS Community Day 2020서버리스 데이터 플로우 개발기 - 김재현 (Superb AI) :: AWS Community Day 2020
서버리스 데이터 플로우 개발기 - 김재현 (Superb AI) :: AWS Community Day 2020AWSKRUG - AWS한국사용자모임
 
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호(넥슨코리아) :: AWS Community Day 2020
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호(넥슨코리아) :: AWS Community Day 2020쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호(넥슨코리아) :: AWS Community Day 2020
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호(넥슨코리아) :: AWS Community Day 2020AWSKRUG - AWS한국사용자모임
 
자율 주행 레이싱, 딥레이서 리그에 도전하세요 - 유정열(메가존클라우드) :: AWS Community Day 2020
자율 주행 레이싱, 딥레이서 리그에 도전하세요 - 유정열(메가존클라우드) :: AWS Community Day 2020자율 주행 레이싱, 딥레이서 리그에 도전하세요 - 유정열(메가존클라우드) :: AWS Community Day 2020
자율 주행 레이싱, 딥레이서 리그에 도전하세요 - 유정열(메가존클라우드) :: AWS Community Day 2020AWSKRUG - AWS한국사용자모임
 
자바를 잡아주는 GURU가 있다구!? - 우여명 (아이스크림에듀) :: AWS Community Day 2020
자바를 잡아주는 GURU가 있다구!? - 우여명 (아이스크림에듀) :: AWS Community Day 2020 자바를 잡아주는 GURU가 있다구!? - 우여명 (아이스크림에듀) :: AWS Community Day 2020
자바를 잡아주는 GURU가 있다구!? - 우여명 (아이스크림에듀) :: AWS Community Day 2020 AWSKRUG - AWS한국사용자모임
 
개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020
개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020
개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020AWSKRUG - AWS한국사용자모임
 

More from AWSKRUG - AWS한국사용자모임 (20)

커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021
커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021
커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021
 
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
 
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
 
복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021
복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021
복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021
 
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
 
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
 
[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...
[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...
[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...
 
초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020
초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020
초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020
 
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
 
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
 
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
 
엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C) :: AWS Community Day Online 2020
엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C)  :: AWS Community Day Online 2020엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C)  :: AWS Community Day Online 2020
엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C) :: AWS Community Day Online 2020
 
AWS Cloud Development Kit (CDK)를 이용한 코드 기반 인프라 개발 및 배포 - 공찬호(리얼리티매직) :: AWS C...
AWS Cloud Development Kit (CDK)를 이용한 코드 기반 인프라 개발 및 배포 - 공찬호(리얼리티매직) :: AWS C...AWS Cloud Development Kit (CDK)를 이용한 코드 기반 인프라 개발 및 배포 - 공찬호(리얼리티매직) :: AWS C...
AWS Cloud Development Kit (CDK)를 이용한 코드 기반 인프라 개발 및 배포 - 공찬호(리얼리티매직) :: AWS C...
 
Cloud로 나아가는 Frond-end 개발자 - 박찬민(버드뷰) :: AWS Communityday online 2020
Cloud로 나아가는 Frond-end 개발자 - 박찬민(버드뷰) :: AWS Communityday online 2020Cloud로 나아가는 Frond-end 개발자 - 박찬민(버드뷰) :: AWS Communityday online 2020
Cloud로 나아가는 Frond-end 개발자 - 박찬민(버드뷰) :: AWS Communityday online 2020
 
AWS Fargate on EKS 실전 사용하기
AWS Fargate on EKS 실전 사용하기AWS Fargate on EKS 실전 사용하기
AWS Fargate on EKS 실전 사용하기
 
서버리스 데이터 플로우 개발기 - 김재현 (Superb AI) :: AWS Community Day 2020
서버리스 데이터 플로우 개발기 - 김재현 (Superb AI) :: AWS Community Day 2020서버리스 데이터 플로우 개발기 - 김재현 (Superb AI) :: AWS Community Day 2020
서버리스 데이터 플로우 개발기 - 김재현 (Superb AI) :: AWS Community Day 2020
 
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호(넥슨코리아) :: AWS Community Day 2020
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호(넥슨코리아) :: AWS Community Day 2020쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호(넥슨코리아) :: AWS Community Day 2020
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호(넥슨코리아) :: AWS Community Day 2020
 
자율 주행 레이싱, 딥레이서 리그에 도전하세요 - 유정열(메가존클라우드) :: AWS Community Day 2020
자율 주행 레이싱, 딥레이서 리그에 도전하세요 - 유정열(메가존클라우드) :: AWS Community Day 2020자율 주행 레이싱, 딥레이서 리그에 도전하세요 - 유정열(메가존클라우드) :: AWS Community Day 2020
자율 주행 레이싱, 딥레이서 리그에 도전하세요 - 유정열(메가존클라우드) :: AWS Community Day 2020
 
자바를 잡아주는 GURU가 있다구!? - 우여명 (아이스크림에듀) :: AWS Community Day 2020
자바를 잡아주는 GURU가 있다구!? - 우여명 (아이스크림에듀) :: AWS Community Day 2020 자바를 잡아주는 GURU가 있다구!? - 우여명 (아이스크림에듀) :: AWS Community Day 2020
자바를 잡아주는 GURU가 있다구!? - 우여명 (아이스크림에듀) :: AWS Community Day 2020
 
개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020
개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020
개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020
 

[AWS Hero 스페셜] RDS to Aurora PostgreSQL Migration - 변규현(당근마켓) :: AWS Community Day Online 2020

  • 1. RDS to Aurora PostgreSQL Migration 변규현 / 개발자, 당근마켓
  • 2. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 발표자 소개 • 당근마켓 채팅플랫폼 개발자 • AWS Serverless Hero • Go언어를 주로 사용함 • 개발을 잘하고 싶어함
  • 3. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 RDS를 쓰고 계시나요?
  • 4. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 그럼 RDS를 왜 쓰시나요?
  • 5. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 RDS의 특징 • 데이터 베이스 설치에 대한 부담이 없음 • 데이터 베이스 업그레이드, Backup 및 확장에 대해서 부담이 없음 (Maintenance, Scalability, Replication) • Multi AZ를 통한 고가용성 • IOPS에 따른 스토리지 선택 가능 (Magnetic, SSD, Provisioned IOPS Storage) • Security Group을 통한 접근 제어 • IAM을 통한 사용자 제어 가능 • MySQL, MariaDB, PostgreSQL, Oracle, MSSQL Server 지원
  • 6. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 RDS PostgreSQL에서 겪었던 어려움
  • 7. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 RDS PostgreSQL에서 겪었던 어려움 • Replica를 직접 설정하고 관리 (Replica 생성 > Rout53 가중치 기반 레코드 설정) -> 인스턴스 추가할 때 마다 Route53 에서 설정 필요 • Replica instance가 5대로 제한 • 저장공간을 직접 늘려주어야 함 (Storage autoscaling 기능을 사용할 수 있음)
  • 8. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 처음에는 운영상 어려움은 없었어요 서비스가 크지 않다면 RDS PostgreSQL로 충분해요
  • 9. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 그런데, 우리는 빠르게 성장하고 있었어요 DB 부하는 매주 높아지고 있었고, 이를 더욱 잘 대응하기 위한 준비가 필요했어요.
  • 10. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 Migration 이전 RDS PostgreSQL의 CPU 2019.07.10 ~ 2019.07.15
  • 11. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 Aurora PostgreSQL은 해답이 될 수 있을까
  • 12. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 Amazon Aurora의 특징 • MySQL 데이터 베이스보다 최대 5배 많은 처리량 지원 • 표준 PostgreSQL 보다 3배 많은 처리량 지원 • 1/10 비용으로 상용 데이터베이스의 보안, 가용성 및 안정성 제공 • RDS의 기본 기능 모두 사용 가능 • 분산 스토리지 시스템으로, 인스턴스당 최대 128TB까지 자동 확장 • Replica 15개 사용 가능 • 3개의 AZ에 걸친 복제 • 손쉬운 Custom Endpoint 설정 • 빠른 마스터 복원 • IOPS 사용량에 따른 과금
  • 13. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 가장 와닿은 내용들 - 처리량 - 스토리지 - Replica 15개 - 빠른 마스터 복원
  • 14. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 Migration을 준비하기로 결정했어요.
  • 15. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 근데, Migration은 어떻게 준비하나요?
  • 16. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 Migration할 인스턴스에 대해서 Aurora PostgreSQL을 Read Replica로 생성
  • 17. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 준비는 이게 전부에요.
  • 18. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 그리고 Migration은 신중해야하니 연습을 했어요
  • 19. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 Migration 연습 • 연습환경 만들기 • 백업 AMI로 RDS 복구 • 네트워크 설정 확인 (Security Group, Subnet Group, VPC) • Aurora PostgreSQL로 복제본 생성 • Migration Simulation • 트래픽 완전 차단(Webserver, Security Group) • 웹서버 DB Endpoint 수정 • Aurora PostgreSQL을 Master로 승격
  • 20. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 각 스테이지 별 적용 및 테스트 완료! Production Migration Simulation 5회
  • 21. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 연습한 대로 Migration을 시작했어요 Aurora PostgreSQL을 Master로 승격시키고 모니터링을 했어요.
  • 22. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 문제는 없었을까요?
  • 23. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 DB가 3번 재시작했어요
  • 24. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 RDS Performance Insight와 PGHero 를 통해 특정 쿼리가 해결되지 않고 계속 남아있는 것을 발견했어요.
  • 25. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 SELECT pg_terminate_backend(PID); 이걸로도 죽지 않는 쿼리가 있었어요.
  • 26. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 전체 트래픽을 차단하고 워커도 전부 중지시켰다고 생각했는데, Migration 시점에 워커 하나가 동작하고 있었어요
  • 27. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 Hanging Query가 있었고, 그 쿼리들은 워커에서 사용한 테이블들과 연관이 있었어요. 더 살펴보니, 이 테이블들의 인덱스를 사용하는 쿼리들만 문제가 있었어요
  • 28. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 관련된 테이블들의 Index에 대해서 REINDEX를 진행하고, 다시 모니터링을 시작했어요.
  • 29. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 이후의 Aurora PostgreSQL CPU
  • 30. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 REINDEX 명령어를 통해 깨졌던 인덱스가 복구되고, 문제가 되었던 Index 범위의 쿼리들도 정상적으로 처리되기 시작했어요! 😊
  • 31. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 복구를 성공적으로 완료했어요 🎉
  • 32. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 Aurora로 전환하고 어떤 점이 개선되었을까요?
  • 33. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 1년 운영 후기
  • 34. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 1년 간 느낀점 • 대규모 이벤트 진행 또는 급작스런 트래픽 증가에 대해 Read replica를 사용한 유연한 대응이 용이함 • Custom Endpoint를 활용한 서비스별 커넥션 관리 가능 • 용량 확장 및 IOPS에 대한 고민 사라짐 • 빠른 Master DB 복구 (AZ 장애 발생 시 알람과 동시에 복구됨) • Performance Insight를 통한 Slow Query 대응 • 빠르고 유연한 확장이 가능하기 때문에 DB인스턴스 CPU 및 Memory를 피크 시간 기준 50% 이상 사용 • 테이블 삭제시 1초도 안돼서 명령이 종료됨
  • 35. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 현재 운영중인 Aurora PostgreSQL CPU • Writer 1대 • Reader for webserver 7대 • 데이터 분석용 1대
  • 36. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 운영을 하는 부담이 많이 줄었네요!
  • 37. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 Aurora를 도입해보는 건 어떨까요?
  • 38. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 마지막으로...
  • 39. 2020.10.17 | AWS Community Day Online | Aurora Postgres | 변규현 에서 함께할 분을 찾고 있어요 😊 dngn.kr/join-us-dev