RDS PostgreSQL에서 Amazon Aurora를 도입하기 위한 결정적 이유들에 대해서 알아보고, Aurora를 도입한 후에 달라진 점을 살펴봅니다.
마이그레이션시 발생했던 문제점을 해결하고 1년동안 서비스를 운영하며 어떤 특징들을 이용해서 대응했는지 공유합니다.
2017년 12월 6일 W3C Conference에서 "Docker와 DevOps에서 Serverless와 NoOps로의 여정"라는 주제로 발표한 자료입니다.
데모로 시연한 샘플코드는 아래와 같습니다.
https://github.com/novemberde/serverless-webapp-demo
기본적인 웹어플리케이션 아키텍쳐인 ELB와 EC2로 이루어진 환경에서 Serverless Architecture인 API Gateway + Lambda로 전환한 사례 공유입니다.
데모 Git repository는 다음과 같습니다.
https://github.com/novemberde/serverless-webapp-demo
AWS의 Serverless 서비스들을 활용하여
단 하나의 서버도 없이 데이터를 수집하고 분석한다.
사용하는 AWS 서비스
- AWS Lambda
- Amazon S3
- Amazon Athena
- AWS Glue
- Amazon CloudWatch
- Amazon QuickSight
2017년 12월 6일 W3C Conference에서 "Docker와 DevOps에서 Serverless와 NoOps로의 여정"라는 주제로 발표한 자료입니다.
데모로 시연한 샘플코드는 아래와 같습니다.
https://github.com/novemberde/serverless-webapp-demo
기본적인 웹어플리케이션 아키텍쳐인 ELB와 EC2로 이루어진 환경에서 Serverless Architecture인 API Gateway + Lambda로 전환한 사례 공유입니다.
데모 Git repository는 다음과 같습니다.
https://github.com/novemberde/serverless-webapp-demo
AWS의 Serverless 서비스들을 활용하여
단 하나의 서버도 없이 데이터를 수집하고 분석한다.
사용하는 AWS 서비스
- AWS Lambda
- Amazon S3
- Amazon Athena
- AWS Glue
- Amazon CloudWatch
- Amazon QuickSight
천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020Amazon Web Services Korea
발표영상 다시보기: https://youtu.be/z68l2X5KoC4
AWS 클라우드는 초기에 적은 비용으로 웹 서비스를 시작하고, 향후 사업이 발전했을 때 천만 이상의 유저가 사용할 수 있는 고가용성, 확장성, 민첩성이 뛰어난 웹 서비스를 만들 수 있습니다. 본 세션에서는 작은 서비스로 시작하여 AWS의 다양한 서비스를 사용하여 천만 이상의 대규모 유저 트래픽을 수용할 수 있는 웹 서비스로 발전시키는 것을 단계별로 오토스케일링, 트래픽 경감, 모니터링과 자동화, 고가용성 확보를 위한 아키텍처 구성 방법을 소개합니다.
본 세션에서는 Amazon의 관리형 데이터베이스 서비스(RDS) 중 기존 상용데이터베이스의 5배 성능 및 1/10 가격으로도 확장성을 보장하는 Aurora에 대한 소개 및 사용법 그리고 기존의 DB에서의 마이그레이션 방법에 대해 소개해드립니다. 10월 리인벤트를 통해 동경 리전에 Aurora를 사용가능하게 되었습니다.
발표 다시보기: https://youtu.be/V6g1SE4DkK4?list=PLORxAVAC5fUWg_jFcq8hNJEMzELtAD6kc
Oracle, SQL Server 등과 같은 상업용 데이터베이스로부터 AWS 관리형 데이터베이스 서비스로 이동함으로써 많은 비용을 절감할 수 있습니다. 본 세션에서는 AWS가 제공하고 있는 관리형 데이터베이스 서비스의 종류 및 특징에 대해서 알아보도록 하겠습니다.
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...Amazon Web Services Korea
SK Telecom의 망관리 프로젝트인 TANGO에서는 오라클을 기반으로 시스템을 구축하여 운영해 왔습니다. 하지만 늘어나는 사용자와 데이터로 인해 유연하고 비용 효율적인 인프라가 필요하게 되었고, 이에 클라우드 도입을 검토 및 실행에 옮기게 되었습니다. TANGO 프로젝트의 클라우드 도입을 위한 검토부터 준비, 실행 및 이를 통해 얻게 된 교훈과 향후 계획에 대해 소개합니다.
I will share the initial reasons for introducing Golang and the architecture choices we made based on the scale of the chat service we developed over 4 years. Additionally, I will share the lessons learned from the problems we encountered while operating the service and how we resolved them.
다양한 방법으로 성장을 할 수 있다고 믿고있다. 짧은 시간동안 더욱 많은 사람의 고민을 해결하는데 집중하고 싶었고, 그 중에서 4가지 정도의 키워드를 뽑아서 공유하였다.
- 단거리 달리기와 마라톤의 차이
- Back to the basics: 기초 지식을 찾아보고 공부하기
- Repeat, Rebuild: 반복해서 손에 익히기
- 1만시간의 법칙의 이면
이와같이 주제를 두고 하나씩 공감가며 주니어들이 방향성을 잡을 수 있는데 도움이 되고자한 발표이다.
Deploy a todo app via Serverless framework.
Build app with golang and echo server.
This presentation is the guide "How to deploy Golang apps via AWS Lambda and ETC".
Demo: https://go-todo.judoka.dev/
Github: https://github.com/novemberde/go-serverless-demo
Blog: https://novemberde.github.io/
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