웹 서비스의 백엔드를 다룬다고 했을 때 애플리케이션 코드를 작성하는 것만큼 중요한 것이 데이터베이스를 다루는 일이다. 규모 있는 회사에서는 데이터베이스를 전문적으로 처리하는 DBA라는 직군 담당자들이 있다. 해당 전문분야의 담당자가 있기에 상대적으로 개발자가 데이터베이스를 전문적으로 다룰 일이 적다.
다만 그건 대용량/대량의 데이터를 다루기 때문에 전문성이 필요한 것이지, 백엔드 개발자가 데이터베이스를 몰라도 된다를 의미하지는 않는다. 스타트업이나 개발 인원수가 적은 서비스에선 개발자가 데이터베이스를 다뤄야만 한다.
어느 정도 데이터베이스 구축, 쿼리 튜닝에 대해서 기본적인 지식이 필요하다. 이번 장에서는 데이터베이스를 구축하고 앞 장에서 만든 EC2 서버와 연동을 해보겠다. 다만, 직접 데이터 베이스를 설치하지 않는다. 직접 데이터 베이스를 설치해서 다루게 되면 모니터링, 알람, 백업, HA 구성 등을 모두 직접 해야만 한다. 처음 구축할 때, 며칠이 걸릴 수 있다.
AWS에서는 앞에서 언급한 작업을 모두 지원하는 관리형 서비스인 RDS를 제공한다. RDS는 AWS에서 지원하는 클라우드 기반 관계형 데이터베이스이다. 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같이 잦은 운영 작업을 자동화하여 개발자가 개발에 집중할 수 있게 지원하는 서비스다. 추가로 조정 가능한 용량을 지원하여 예상치 못한 양의 데이터가 쌓여도 비용만 추가로 내면 정상적으로 서비스가 가능한 장점도 있다.
7.1 RDS 인스턴스 생성하기
먼저 RDS 인스턴스를 생성한다. 다음과 같이 검색창에 rds를 입력해서 선택하고, RDS 대시보드에서 [데이터베이스 생성] 버튼을 클릭한다.
RDS 생성 과정이 진행된다. DB 엔진 선택 화면에서 Maria DB를 선택하도록 하겠다.
왜 MariaDB를 골라야 하는지 궁금증이 생길 수 있다. RDS에는 오라클, MSSQL, PostgreSQL 등이 있으며 당연히 본인이 가장 잘 사용하는 데이터베이스를 고르면 되지만, 꼭 다른 데이터베이스를 선택해야 할 이유가 있는 것이 아니라면 MySQL, MariaDB, PostsSQL 중에 고르길 추천한다.
이 책의 저자는 이 중에서도 MariaDB를 추천하고 그 이유는
- 가격
- Amazon Aurora(오로라) 교체 용이성
RDS의 가격은 라이선스 비용 영향을 받는다. 상용 데이터베이스인 오라클, MSSQL이 오픈소스인 MySQL, MariaDB, PostgreSQL보다는 동일한 사양 대비 더 가격이 높다. 결국 프리티어 기간인 1년이 지나면 비용을 지불하면서 RDS를 써야 한다. 비용 문제를 생각해 볼 필요가 있다.
두 번째로 Amazon Aurora 교체 용이성이다. Amazon Aurora는 AWS에서 MySQL과 PostgreSQL을 클라우드 기반에 맞게 재구성한 데이터베이스이다. 공식 자료에 의하면 RDS MySQL 대비 5배, RDS PostsgreSQL 보다 3배의 성능을 제공한다. 더군다나 AWS에서 직접 엔지니어링하고 있기 때문에 계속해서 발전하고 있다. 현재도 다른 데이터베이스와 비교해 다양한 기능을 제공하고 있다.
클라우드 서비스에 가장 적합한 데이터베이스이기 때문에 많은 회사가 Amazon Aurora를 선택한다. 그러다 보니 호환 대상이 아닌 오라클, MSSQL을 굳이 선택할 필요가 없다. 이렇게 보면 Aurora를 선택하면 가장 좋을 것 같지만 시작하는 단계에서 Aurora를 선택하기 어렵다. 프리티어 대상이 아니며, 최저 월 10만 원 이상이기 때문에 부담스럽다.
그래서 일단은 MariaDB로 시작한다.
(차후 서비스 규모가 일정 규모 이상 커진 후에 Maria DB에서 Aurora로 이전하면 된다.)
MariaDB
국내외를 가리지 않고 오픈소스 데이터베이스 중 가장 인기 있는 제품을 고르라고 하면 MySQL을 꼽는다. 단순 쿼리 처리 성능이 어떤 제품보다 압도적이며 이미 오래 사용되어 왔기 때문에 성능과 신뢰성 등에서 꾸준히 개선되어 온 것도 장점이다. 발전하던 MySQL이 2010년에 썬마이크로시스템즈와 오라클이 합병되면서 많은 MySQL 개발자들은 썬마이크로시스템즈를 떠나며 본인만의 프로젝트를 진행하게 된다. 이 중 MySQL의 창시자인 몬티 와이드니어가 만든 프로젝트가 MariaDB이다.
MtSQL을 기반으로 만들어졌기 때문에 쿼리를 비롯한 전반적인 사용법은 MySQL과 유사하니 사용방법에 대해서는 크게 걱정하지 않아도 된다. 비슷한 사용법 외에도 MariaDB는 MySQL 대비 다음의 장점이 있다.
- 동일 하드웨어 사양으로 MySQL보다 향상된 성능
- 좀 더 활성화된 커뮤니티
- 다양한 기능
- 다양한 스토리지 엔진
본인 만의 DB 인스턴스 이름과 사용자 정보를 등록한다. 여기서 사용된 사용자 정보로 실제 데이터베이스 접근하게 되니 어딘가 메모를 해도 좋다.
네트워크에서는 퍼블릭 액세스를 [예]로 변경한다. 이후 보안 그룹에서 지정된 IP만 접근하도록 막을 예정이다.
데이터 베이스 옵션에서는 이름을 제외한 나머지를 그림과 동일하게 하면 된다. 파라미터 그룹의 변경을 이후에 진행할 예정이니 일단은 기본값으로 둔다.
출처 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 [이동욱 지음]
'Back-End > Springboot와 AWS로 혼자 구현하는 웹 서비스' 카테고리의 다른 글
Chapter 07. AWS에 데이터베이스 환경을 만들어보자 - AWS RDS (3) (0) | 2022.04.03 |
---|---|
Chapter 07. AWS에 데이터베이스 환경을 만들어보자 - AWS RDS (2) (0) | 2022.04.02 |
Chapter 06. AWS 서버 환경을 만들어보자 - AWS EC2 (3) (0) | 2022.04.02 |
Chapter 06. AWS 서버 환경을 만들어보자 - AWS EC2 (2) (0) | 2022.04.01 |
Chapter 06. AWS 서버 환경을 만들어보자 - AWS EC2 (1) (0) | 2022.04.01 |