[AWS Builders 프로그램] 데이터베이스 이론 및 실습

  • 교육 일자 : 2021. 04. 21(수)
  • 이 강의에서는 AWS의 완전관리형 데이터베이스인 Aurora 서비스에 대해 알아보고 실습을 진행 (오전 강의)
  • 또, 효율적인 Aurora의 활용을 위해 인터널 아키텍처의 구조를 알아보고 상세 기능의 사용법에 대해 배움 (오후 강의)

오전 강의 : AWS의 Aurora 서비스

열어보기

AWS RDS 서비스의 특징

  • 자체 관리형 DB의 경우 많은 작업들을 부담해야 하지만 AWS의 완전 관리형 DB를 사용한다면 개발자는 스키마 디자인, 쿼리 구성, 쿼리 최적화만 담당하고 그 외의 일은 AWS에서 담당하게 된다
  • AWS에서 담당하는 것은 자동 백업 및 복구, 보안 및 격리, 산업 규정 준수, 자동 패치, 모니터링, 서버 유지관리 등
  • Amazon RDS(이하 RDS)에서 제공하는 DB: Aurora, MySQL, PostgreSQL, MariaDB, SQLServer, ORACLE
  • AWS 콘솔에서 몇 분 만에 서비스에 필요한 데이터베이스를 구성할 수 있으며, 서버나 네트워크 OS, DB의 설치 등 모든 작업은 불필요함
  • DB 인스턴스에 대한 CloudWatch 지표로 모니터링이 가능하며 SNS와 연계해 이벤트가 발생할 때 경보 수신이 가능
  • 데이터베이스 성능 개선 도우미를 제공하며 로드를 유발하는 SQL문과 그 이유를 찾기에 용이함
  • 물리적으로 분리된 가용영역에 standby DB를 운영하며 동기식 복제 및 자동 Failover를 수행함
  • 또한 읽기 전용 DB를 제공(MySQL, MariaDB, PostgreSQL, Oracle에서 지원)하며, 장애 발생 시에 빠른 복구를 위해 읽기 전용 복제본을 마스터로 승격 가능함
  • 매일 전체 인스턴스에 대한 볼륨을 백업, DB변경 로그가 저장 됨 (기본 7일 최대 35일 보관)

AWS Aurora 서비스

  • 클라우드 용으로 구축된 MySQL, PostgreSQL 호환 관계형 데이터베이스
  • 3개의 가용 영역에 복제본을 하나씩 갖는 6벌의 데이터 베이스로 내구성이 매우 높다
  • Aurora Serverless 서비스가 새로 런칭, 필요할 때만 사용하고 사용하지 않을 때는 Shutdown되는 초당 과금 서비스

Amazon Redshift 서비스

  • 빠르고 강력한 페타 바이트 규모의 데이터 웨어하우스
  • 2PB까지 데이터 확장 가능(SSD 및 SAS 디스크 옵션 존재)

Amazon Dynamo DB 서비스

  • 완전관리형 key-value, 문서 데이터베이스
  • 어떤 규모에서도 10밀리초 미만의 성능 제공
  • 내구성이 뛰어난 다중 리전, 다중 마스터 DB
  • 하루 10조 개 이상 요청 처리 가능

Amazon DocumentDB

  • JSON 데이터에 최적화된 완전관리형 문서 데이터베이스
  • MongoDB와 호환되어 기존 MongoDB 드라이버 사용 가능

Amazon ElastiCache

  • Redis, Memcached와 호환되는 인 메모리 DB

AWS Schema Conversion Tool

  • 기존 DB 스키마를 다른 DB 엔진 스키마로 변환하는 툴

오전 강의 : AWS Aurora 실습

열어보기
  1. CloudFormation Template을 사용해 실습환경 생성 (Stack 생성에 10~20분 정도 걸림)
  2. Stack이 생성되면 출력(Outputs)에 Key-Value가 표시됨
  3. Session Manager를 이용해 EC2 인스턴스에 접속
  4. 터미널에서 우분투 유저로 스위칭하기 sudo su -l ubuntu
  5. tail -n1 /debug.log로 인스턴스의 정상 기동 확인 * bootstrap complete, rebootin
  6. env |grep DB로 DBUSER, DBPASS, DBUS_SESSION_BUS_ADDRESS를 각각 확인
  7. mysql client를 사용해 aurora 인스턴스로 접속을 확인 clusterEndpoint는 2번에서 확인 가능
1
2
3
4
5
6
7
8
9
export DBURL=auroralab-mysql-cluster.cluster-cqxoqejlondh.ap-northeast-2.rds.amazonaws.com
mysql -h$DBURL -u$DBUSER -p"$DBPASS" -e"SELECT @@aurora_version;"

mysql: [Warning] Using a password on the command line interface can be insecure.
+------------------+
| @@aurora_version |
+------------------+
| 2.09.1 |
+------------------+
  1. 스프링을 sudo apt-get install openjdk-11-jdk -y로 설치
  2. PetClinic을 사용하기 위해 클론 및 빌드
1
2
3
4
5
git clone https://github.com/kiwonyoon0701/spring-petclinic.git
wget https://shared-kiwony.s3.ap-northeast-2.amazonaws.com/m2.tar.Z
tar xvfz m2.tar.Z
cd spring-petclinic/
./mvnw package -Dmaven.test.skip=true
  1. EC2의 퍼블릭 IP를 curl -s ifconfig.me | awk ' { print $1 "\n" }'로 확인 11.java -jar target/*.jar로 어플리케이션 기동
  2. 퍼블릭 IP와 8080포트로 어플리케이션 접속

→ 이후 DB관련 작업 및 DB복제 등의 작업이 이어짐 (클론 후 이어지는 작업이므로 생략)