AWS - RDS, S3

이희찬·2023년 8월 2일
1

AWS

목록 보기
5/7

데이터베이스

개발을 처음 시작하거나, 클라이언트 프로그래밍 위주로 개발했다면, 보통 개발환경의 파일시스템에 데이터를 저장하곤 했을 것이다.

혼자 개발을 하거나, standalone 서비스를 개발한다면 이것으로도 충분하겠지만(어디 한번 파일시스템을 관리해보시지 하하하), 여러 사람과 공유하는 서비스나 보관할 데이터의 구조가 복잡할 경우, 파일 시스템으로는 관리가 어려울 것이다.

위의 어려움을 해소하기 위한 도구가 데이터베이스이며, 크게 RDB, NoSql로 나뉘게 되는데, 오늘은 RDB에 대해서 주로 설명할 것이다.

RDB(Relational Database)

RDB는 관계형 데이터베이스라고 번역되는데, 이름 그대로의 특징을 지니고 있다.

  • 참조 관계의 여러 테이블로 데이터 관리
  • SQL이라는 전용 질의 언어로 데이터 입출력 수행

이러한 관계형 데이터베이스는 아래와 같은 제품이 있다.

  • MySQL
  • Postgresql
  • Oracle
  • MariaDB

돈 없는 학생은 보통은 오픈 소스인 MySQL, MariaDB를 많이 사용한다. 무료니까
MySQL도 오픈 소스로 무료인 것으로 알고있지만, 기업이 사용하기에는 어느정도 제약이 있기 때문에, MariaDB를 주로 쓰는 것으로 알고 있다.

이러한 데이터베이스 제품을 전부 알아야하는가..? 걱정이 많겠지만, 기업이 사용하는 데이터베이스는 어느정도 통일된 느낌이고, 공부한 데이터베이스 제품과 다르더라도 문법이 대부분 비슷하고(MariaDB는 애초에 엄마가 MySQL이다), cs와 마찬가지로 거기서 거기인 느낌이기 때문에(깊게 들어가면 다르겠지만) 마음에 드는 것으로 선택하면 되겠다.

DBMS

이러한 데이터베이스를 다루는 툴로 여러 DBMS가 있는데, 현재 우리 팀의 프로젝트에서는 Postgresql을 사용하고 있고, 이를 관리하는 pgadmin이라는 DBMS툴을 얼마전에 도입해서 링크만 짧게 소개하도록 하겠다.

https://www.pgadmin.org/

이걸 도입하기 전에는 db를 관리할 때, cli로 접근했는데 사람 할 짓이 안된다. 제발 dbms쓰자

RDS

AWS에서 데이터베이스를 사용하는 방법으로는 크게 두가지 방법이 있다.

  • 데이터베이스용 ec2 인스턴스를 생성해 그 위에 데이터베이스 설치
  • AWS의 매니지드 서비스인 RDS 사용

여기서 첫번째 방법은 데이터베이스 설치, EC2 관리, 장애 발생 대응 등 매우 불편하다. RDS를 사용한다면, aws가 OS, 스케일링, 데이터베이스 설치, 모니터링, 가용성을 관리해주기 때문에 자금만 충분하다면, RDS를 쓰는게 매우 편리할 것이다.

RDS 시스템

RDS는 다음과 같은 4개의 요소로 구성된다.

  • 데이터베이스 엔진
    MySQL, PostgreSQL, Oracle등 의 데이터베이스 제품을 선택할 수 있다. aws에서 제공하는 데이터베이스인 오로라도 있는데 좋다고 한다. 난 postgresql 쓸거지만
  • 파라미터 그룹
    데이터베이스 엔진이 사용하는 언어나 데이터베이스 튜닝을 설정할 수 있다.
  • 옵션 그룹
    RDS 고유의 설정을 수행한다. AWS를 이용한 데이터베이스 모니터링에 관한 설정 등을 수행할 수 있다.
  • 서브넷 그룹
    데이터베이스 서버를 여러 개의 가용 영역에 분산 배치할 때 이용되는 설정이다. RDS도 결국 aws에서 인스턴스를 생성하는 것이므로, 웹서버와 마찬가지로 한 곳에만 집중되어 있으면, 시스템의 연속성에 문제가 있을 수 있으므로, 분산 배치하는 것이 좋을 것이다.

S3

위와 같은 데이터베이스는 사진과 동영상 같은 크기가 큰 데이터를 저장할 수 없다.

EC2 인스턴스에 EBS라는 hdd, ssd로 구성된 저장 공간을 제공하지만, EC2 인스턴스가 수정되거나 다시 시작되면 휘발되기 때문에 데이터를 영구 저장하기에는 적합하지 않다.

아마존에서는 이 문제를 해결하기 위해 S3라는 매니지드 서비스를 제공한다. RDS와 마찬가지로 S3 또한 데이터 관리에만 신경쓰면 되며, 모니터링, 스케일링, OS와 같은 인프라 관리에 신경을 쓸 필요가 없다.

S3는 LB, RDS, EC2 같은 서비스와는 다르게 VPC 밖에 생성된다. 그렇기에 접근 방법에는 크게 두가지가 있는데,

  • 인터넷으로부터 접근
  • vpc로부터 접근

인터넷으로부터의 접근은 서비스를 구현할 때는 고려하지 않아도 되기 때문에, 두번째만 고려하여도 될 것이다.

보통은 사용자가 데이터 저장을 요청할 때, 요청자의 인증을 거쳐야하기 때문에, 웹서버를 통해 s3에 접근하는 경우가 많을 것이기 때문이다.

  • 이 때, 웹서버에서 s3 접근 시 인증, 인가 과정이 필요한데, 일반적으로 IAM의 role을 통해 진행된다.
profile
1717177

1개의 댓글

comment-user-thumbnail
2023년 8월 2일

글 잘 봤습니다.

답글 달기

관련 채용 정보