본문 바로가기

Sparta

[Sparta] 17-1. AWS RDS

2021-10-08

To-Do

  • 7시 기상
  • 아침식사
  • 오전운동

  • 벌써 한주가 지나갔다... 시간 참 빠르다 ...ㅠ

Today I Learned


1. AWS RDS


1. RDS란?


지금은 바야흐로 클라우드 시대이다. 글로벌 IT기업들도 AWS와 같은 클라우드 서버에 자신들의 서버를 옮기고 있다. 클라우드 시대 이전의 DB는 어땠을까? DB의 역할은 이전이나 이후나 매우 중요했다. 사용자 정보, 구매 정보 등을 저장하고 있는 이터베이스가 어플리케이션서 가장 중요한 부분 중 하나였다. 그래서 다음과 같이 2tier(Monolithic)로 구성하는 사례가 많았다.



하지만 아키텍처의 변화로 인해 클라우드 시대가 오면서, Monolithic에서 MSA로의 변화가 이루어지게 된다. 이에 따라 데이터베이스 또한 가벼워지게 된다. 서버가 그러한 것 처럼 데이터베이스 또한 클라우드 서비스에서 매니징 하면서 데이터베이스를 직접 다뤄야하는 일이 줄어들게 되었다.



RDS는 AWS에서 제공하는 클라우드 관계형 데이터 베이스이다.


Amazon Relational Database Service(RDS)를 사용하면 클라우드에서 관계형 데이터베이스를 간편하게 설정, 운영 및 확장할 수 있습니다. 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 시간 소모적인 관리 작업을 자동화하면서 비용 효율적이고 크기 조정 가능한 용량을 제공합니다. 사용자가 애플리케이션에 집중하여 애플리케이션에 필요한 빠른 성능, 고가용성, 보안 및 호환성을 제공할 수 있도록 지원합니다.


MSA의 특징을 모두 가지고 있다고 볼 수 있다. 확장성이 뛰어나고, 가용성과 내구성이 좋으면서 속도 또한 빠르고 보안까지 책임지는 서비스로 세계 유수의 기업들이 이용하고 있다고 한다.


여기서 관계형 데이터 베이스가 뭔지 잠깐 알아보고 넘어가자. 한진물류연구원 인턴시절에 잠깐 다뤄 본 적이 있는데. RDBMS(Relational DataBase Management System) 즉, 관계형 데이터베이스 관리 시스템은 쉽게말해 "여러개의 엑셀 테이블을 연결 해 놓은 것" 이라고 정의 할 수 있겠다.


내가 지금까지 사용한 MongoDB는 RDBMS가 아닌 NoSQL이었다. 둘의 가장 큰 차이는 테이블과 도큐먼트에 있는데, RDBMS는 엑셀과 같이 정형화된 테이블이 존재하고, 칼럼이 미리 다 정해져있다. 따라서 이미 완성된 서비스를 제공하는 업체들은 대부분 RDBMS를 사용하고 있다. 정형화된 테이블내에서의 그리고 테이블 간의 정보검색이 용이하기 때문이다. 단점도 있다. 테이블을 만들때 컬럼이 고정되어 있기때문에 데이터가 실제로 저장되면 컬럼을 수정하기가 쉽지 않다.



이와 반대되는 것이 NoSQL이다. NoSQL은 딕셔너리 형태로 데이터를 저장하는데, JSON형식을 떠올리면 쉽다. 도큐먼트라는 RDBMS의 테이블과 비슷한 곳에 저장된다. 도큐먼트는 생성될때 컬럼이 고정되지 않기 때문에 변경이 용이하여, 정형화된 데이터 보다는 비정형화된 데이터를 저장하는 용도로 사용한다. 대신 정보의 검색이나 도큐먼트 간 연계가 쉽지 않다.



AWS RDS는 RDBMS를 데이터베이스 엔진으로 사용한다. RDS에서 제공하는 엔진으로는 Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle Database 및 SQL Server가 있다.


2. RDS사용법


RDS접속 > 데이터베이스 생성


  1. 데이터베이스 생성 방식 선택
    • 표준 생성
  2. 엔진 옵션
    • MySQL. 오로라가 제일 좋다고는 하는데, 프리티어에 들어가지 않아 과금이 된다고 한다ㅠ
  3. 템플릿
    • 프리 티어
  4. 설정
    • 적당히 입력
  5. DB 인스턴스 클래스
    • t2micro를 선택해주자.
  6. 스토리지
  7. 가용성 및 내구성
  8. 연결
    • vpc는 기존에 쓰던거 (default)
    • 퍼블릭 액세스: 내 로컬에서 접속할거면 예, EB에서만 쓸거면 아니오, 우리는 예를 누르자
    • VPC 보안 그룹: 새로 생성, 이름 적당히 입력
  9. 데이터베이스 인증
    • 데이터베이스 인증: 암호인증

요금정보가 눈에 띈다.



데이터베이스 생성!을 누르면 다음과 같이 조금 시간이 걸린다.




이제 서버 생성이 끝났다! 서버가 생성이 되었고 MySQL도 설치된게 확인된다. 이제 RDS를 사용해봐야하는데, 어플리케이션과 통신하려면 EB나 CloudFront와 마찬가지로 엔드포인트(혹은 도메인)이 중요하다. MySQL의 기본 포트는 3306이다. (MongoDB의 기본 포트는 27017 이었다.)


이제 이 MySQL을 어떻게 컨트롤하냐? DB를 컨트롤하는 툴을 쓰면 된다. MySQL에서 나온 workbench를 가장 많이 썼다고 하는데, 요즘은 코드 에디터에서 다 제공한다고 한다. VScode는 익스텐션에서 MySQL을 설치하여 사용하면 되고, Pycharm(프로버전)우측의 Database에서 사용하면 된다.


PyCharm에서의 순서


우측의 Database > New(+) > Data Source > MySQL


위와 같이 접근하면 다음과 같은 팝업창이 등장한다.



  1. name: 아무거나
  2. Host: AWS RDS의 엔드포인트
  3. User: RDS 사용자 이름
  4. Password: RDS password

이렇게 입력하고 Test Connection을 클릭해보자. (최초 접근시 드라이버 파일을 설치하라하는데 설치해주자.)


연결 성공! 이렇게 되면 local에서 AWS RDS에 접속이 된 것이다. OK 클릭!




이제 스키마를 추가해보자.


rds에 우클릭 > New > Schema


나오는 팝업에 아래와 같이 입력히면 스키마가 만들어진다



올해 초 postgreSQL을 배울땐 CLI로 Query를 작성했던 기억이 난다. 하단의 SQL Script가 비슷한 것 같다.


다음은 테이블을 만들어보자.


sparta스키마에 우클릭 > New > Table



위와 같이 내가 원하는 대로 테이블을 만들 수 있다.



생성한 테이블을 더블클릭하면 위와 같은 창이 뜨는데, 여기서 테이블을 수정할 수 있다. 3번을 누르면 db에 업데이트 된다.



콘솔로 데이터를 조회하려면 위와 같이 원하는 스키마를 클릭하고 Jump to Query Console을 클릭하고 New Query Console을 클릭하면 아래와 같은 화면이 나온다.



아래와 같이 입력해 주자


select * from file; # 조회

insert into file(file_name) values ('123.png'); # 입력

한줄씩 실행하고 싶으면 원하는 줄에 두고 ctrl/cmd + enter를 입력하면 된다.

'Sparta' 카테고리의 다른 글

[Sparta] 19. 배포와 DB  (0) 2021.10.13
[Sparta] 18. AWS RDS 사용법  (0) 2021.10.12
[Sparta] 16. ElasticBeanstalk  (0) 2021.10.07
[Sparta] 15-4. EC2 & ELB  (0) 2021.10.07
[Sparta] 15-3. EC2 백엔드  (0) 2021.10.07