AWS2 RDS (1)생성, AZ, VPC
===
이 수업은 관계형 데이터베이스를 서비스해주는 AWS의 RDS(Relational Database Service)를 다루고 있는 수업입니다. 데이터베이스 서버를 생성하고, 상태를 파악하고, 사용하고, 수정하고, 삭제하는 방법을 다룹니다.
===
Amazon Relational Database Service
컴퓨터에 DB를 설치해주고 나대신 운영해주는 서비스
최대단점 : 비싸다
내컴에 mysql깔면 무료고
EC2에 내가 DB까는것보다 2배쯤 비싸다
그럼 왜써?
Managed : 관리를 우리가 대신 해줄게요
DB를 관리하는 것은 매우 어렵고 위험한 일이기 때문
데이터가 유실되거나 유출되는것은 어떤 사고보다 치명적이다
정보비즈니스에서는 DB를 빠르고 안전하게 지키기 위해 갖은 노력과 많은 비용을 투자하고 있다
이런 노력을 전문 인력에게 위임하는 비용만큼 RDS가 비싸다
RDS의 방대한 기능중 CRUD를 볼 것
===
RDS를 이용해서 MySQL instance를 만들어보자
이 화면을 보니 RDS는 여러개의 주요한 관계형 데이터베이스를 빌려주는 서비스구나
이거 체크하면 프리티어
다음
버전
DB 인스턴스 클래스
: DB서버를 이용하려면 컴퓨터가 있어야하는데, 그 컴퓨터의 사양 지정
저 프리티어 사양으로 해도 차고 넘친다. 또 언제든지 5분이면 윗사양으로 업그레이드 할 수 있다(스케일업).
다중 AZ 배포 :
다른 영역에 복제본 만들기 선택을 하면 데이터가 들어오면 두개의 건물에 있는 DB서버에 모두 저장이 되고 하나가 사고로 완파가 되면 자동으로 다른 가용 지역에 있는 데이터베이스 서버에 데이터가 사용되는걸 통해 데이터의 유실을 막고 서비스의 중지를 막는것
단점 : 비용 두배 //안전함이 중요한지 비용이 중요한지를 따져서 선택
*AZ :
AWS의 Region(지역)에는 2~3개의 가용성 지역이라고 하는 건물들이 있다.
이 건물들은 서로 멀리 떨어져 있다.
하나의 건물이 파괴가 돼도 다른 건물은 멀쩡한 상태가 유지됨
스토리지 유형
스토리지는 데이터를 저장하는 디스크라고 생각하면 되고
AWS는 현재 새로 만드는 인스턴스들은 SSD만을 제공한다(옛날엔 HDD도)
범용 : 느린 애
이건 스토리지를 빌릴 수 있는 양. 20기가에서 16300기가까지 가능, 이게 커지면 월별 추정 요금이 올라간다
특이한 점은 범용SSD에서는 용량이 클수록 저장장치의 속도가 빨라짐. 속도가 용량에 연동돼있다.
프로비저닝된 IOPS :
IOPS : Input Output 데이터를 저장하고 데이터를 쓸 때 초당 얼마나 작업할 수 있는지
기본적으로 얜 범용보다 더 비싸고 빠르다. 얜 용량따로 속도 따로인데
약간 연관성이 있음 완전히 연동 안 되는건 아님. 어쨌든 저장용량과 성능을 좀 더 자유롭게 지정가능
DB인스턴스 식별자 : 인스턴스를 여러개 만들면 각각의 인스턴스 이름이 필요할것
마스터 사용자 이름 : DB에 접속하려면 그 DB의 사용자가 있어야하고 비밀번호가 있어야. 그 사용자 이름
비밀번호 : 비밀번호
===
다음 단계
네트워크 및 보안 파트
결론적으로 VPC는 기본 VPC, 서브넷 그룹을 그냥 default.
*VPC란 AWS안에서 외부로부터 독립된 안전한 네트워크를 구성해주는 서비스라고 생각하시면 됩니다
VPC라는걸 생성하고, 나는 이 안에다가 AWS RDS 인스턴스를 만들게 되면 외부에서는 VPC를 통해 RDS에 직접적으로 접속하는 걸 막을 수 있다. 해킹이나 이런 위협으로부터 훨씬 더 안전해 지는 것.
그리고 같은 VPC안에 EC2 인스턴스와 같은 컴퓨터를 세팅을 해서 nodejs, python, php와 같은 애플리케이션 서버를 설치하고 이 애플리케이션 서버만큼은 RDS에 접근할 수 있게 하는 것. 이러면 RDS가 훨씬 안전해진다. 실제로는 상당히 복잡하지만 일단 이렇게 생각하면 된다
서브넷 그룹은 설명X
퍼블릭 액세스 가능성은 아니오를 하면
같은 VPC안에서 RDS가 허가한 EC2인스턴스만 접속할 수 있게 할 수 있다
외부에서 접속할 수 있게 하면 위의 그림과는 다르게 직접 접속할 수 있는 상태
EC2인스턴스를 만들어서 RDS를 사용할거라면 외부에서 접속할 수 없도록 하는것이 훨씬 더 안전한 방법이 될 것이다.
그게아니라 외부에서 RDS를 이용하게 하려고 하면(AWS의 서비스가 아닌것을 이용하게 하려고 하면) 외부에서 인터넷으로 접속할 수 있게 하는것이 가장 단순한 설정
새로운 VPC 보안 그룹 만들기 해줘
위 그림에서
네모난 부분이 보안그룹
RDS가 있을 때, 같은 VPC라고 하더라도 VPC안에 있는 모든 머신들이 RDS에 접속할 수 있게 하는게 아니라 어떤 특정 머신들만 RDS로 접속할 수 있도록 지정할 수 있다. 이런걸 하는게 보안그룹. 좀 있다가 더 자세하게 합시다
하나하나 설명. 데이터베이스 이름은
RDS에 접속
이거 하나하나가 데이터베이스고 그 데이터베이스를 지정하는 것. example이라고 쓰면
이렇게 하면 나오는것과 같이 기본 데이터베이스를 지정하는 것
포트정보는 DB에 접속할 때 그 DB의 기본 포트를 지정. mysql은 3306
DB 파라미터 그룹 / 옵션 그룹은 나중에 맥락적으로 설명할게요
IAM DB 인증은 저도 잘 모르겠어요 현시점에선 중요하지 않아서 비활성화!
암호화도 DB에 데이터를 저장할 때 더 안전하게 저장하고 싶다면 암호화 지정
백업보존기간 : 백업을 RDS가 자동으로 생성하는데 7일치가 최대한의 저장기간이다. 8일째는 자동삭제 늘리면 돈 더 듦
백업 기간 : 백업 보존기간을 하면 자동백업이 되는데 그걸 언제 할거냐. 사용자들이 많이 안쓰는 시간에 하는게 좋겠죠
모니터링은
확장을 쓰면 AWS RDS 인스턴스에 대한 아주 상세한 상태에대한 기록
에러가 발생하거나, 너무 오래걸리는 쿼리들에 대해 별도로 관리한다거나
나중에 문제가 발생했을 때 그 문제를 파악하는데 도움을 주는 기능
mysql5를 mysql8로 업그레이드 이런건 메이저 업그레이드. 아주 마이너한 업그레이드 할 때 그런건 자동으로 해주는 것
유지관리기간은 aws의 마이너 버전 자동 업그레이드 기능이라든지 rds여러가지 설정들을 변경할 때 그 변경을 아무때나 하면 사용자 데이터베이스가 죽을 수도 있고 사용자가 불편함을 겪을 수도 있다. 사고가 났을 때 대응하는것도 어렵다
어떤 특정한 시간에 rds에 변화를 주고 싶은 사항들을 모아놨다가 그 시간에 자동으로 해주는 것
기본 설정 없음을 하면 rds가 알아서
이거하면 나중에 기본적으로 삭제가 안되도록, 안전장치
생성이 된 상태