
이번 포스트에서는 AWS에서 지원하는 DB서비스인 RDS(Amazon Relational Database Service)에서 PostgreSQL을 생성해 보도록 하자
1. RDS (Amazon Relational Database Service)를 사용하는 이유
1-1. 관리의 편리성
- RDS는 데이터베이스 관리 작업들, 예를 들어 하드웨어 프로비저닝, 데이터베이스 설정, 패치 적용 그리고 백업 같은 작업들을 자동화해 준다.
1-2. 확장성
- 사용자의 요구에 맞춰서 컴퓨팅 리소스나 스토리지를 쉽게 확장할 수 있다.
1-3. 가용성과 내구성
- RDS는 멀티 AZ(Availability Zone) 배포를 지원해서 데이터베이스의 고가용성을 보장한다. 또한 자동 백업, 데이터베이스 스냅샷, 자동 호스트 교체 같은 기능도 제공한다.
1-4. 보안
- AWS의 보안 기능을 이용해서 데이터베이스를 보호할 수 있다. VPC 내에서 데이터베이스를 실행하고, IAM을 통해 액세스를 관리할 수 있다.
1-5. 성능
- SSD 스토리지, Read Replica를 활용한 읽기 성능 최적화 등을 통해 높은 성능을 제공한다.
2. RDS의 장단점
2-1. 장점
- 간편한 운영 : 서버 유지보수, 패치 관리 등이 자동화되어 있어서 운영 부담이 적다.
- 자동 백업과 복구 : 일일 백업과 특정 시점 복구 기능을 지원해서 데이터 손실 위험을 줄일 수 있다.
- 스케일 업과 다운이 쉬움 : 몇 번의 클릭만으로 리소스를 조정할 수 있어서 트래픽 변동에 빠르게 대응할 수 있다.
- 고가용성 : Multi-AZ 배포를 통해 자동 장애 조치(failover)를 지원한다.
2-2. 단점
- 비용 : 관리형 서비스라는 편리함에 대한 비용이 발생한다. 직접 서버를 운영하는 것보다 비쌀 수 있다.
- 제한된 커스터마이징 : 관리형 서비스이기 때문에, 일부 데이터베이스 설정이나 파라미터를 사용자 마음대로 바꿀 수 없다.
- 성능 제한 : 일부 고성능 요구 사항에 대해서는 자체적으로 최적화된 데이터베이스를 구축하는 것이 더 나을 수도 있다.
3. RDS 환경 구축하기 (PostgreSQL)
3-1. RDS 페이지로 이동
- AWS RDS를 구축하기 위해 Google에서 검색해서 아래와 같은 페이지로 이동한다.

- 이미 AWS내부에 있다면 페이지 좌측 상단의 검색창을 이용해서 RDS를 검색한 후 들어가도 된다.

3-2. 데이터베이스 생성하기
- RDS로 이동했으면 좌측의 메뉴바에서 "데이터베이스"를 클릭하면 아래와 같은 페이지로 이동하게 된다. 여기서 우측의 "데이터베이스 생성" 버튼을 클릭한다.

- 아래와 같은 데이터베이스 생성 페이지로 이동할 것이다. 여기서 "표준 생성"을 선택한다.

3-3. 데이터베이스 엔진 옵션 선택하기
- 하단으로 내려오면 엔진 옵셥을 선택할 것이다. 여기서 PostgreSQL을 선택한다.(Aurora의 PostgreSQL 아니니 주의하자)

3-4. 템플릿 및 가용성 선택
- 프리 티어를 선택했더니 하단의 "가용성 및 내구성"은 선택이 불가능했다.

3-5. 기본 설정하기
- 하단으로 내려오면 기본적인 설정을 하게 된다. 여기서 DB인스턴스의 식별자와 DB의 접속을 하게 될 마스터 이름과 암호를 정한다.

3-6. 인스턴스 구성하기
- 다음으로 인스턴스 정보를 구성했다. 나는 프리티어인 t3.micro를 선택했다.

3-7. 스토리지 설정하기
- DB 인스턴스에 연결시켜 줄 스토리지도 설정한다. 가장 많이 사용하는 gp2에 20GB를 선택했다.

3-8. 리소스 연결 설정
- 이번에는 제일 중요한 컴퓨팅 리소스 설정이다. 여기서 "EC2 컴퓨팅 리소스에 연결"을 선택하면 퍼블릭 액세스는 불가능하도록 표시가 된다. VPC 내부에서만 연결할 수 있게 되는 것이다. 그렇지만 지금 나는 외부 서버의 SpringBoot에서 연결시킬 것이다.


- 그래서 나는 아래와 같이 "EC2 컴퓨팅 리소스에 연결 안 함"을 선택하고 외부에서 연결해서 사용할 수 있도록 퍼블릭 액세스를 "예"로 선택해 줬다.

- 이후 하단의 보안 그룹과 가용 영역, 등등의 추가 구성은 default를 그대로 사용했다.

3-9. 데이터베이스 인증
- 하단의 데이터베이스 인증도 "암호 인증"으로 설정해 줬다.

3-10. 모니터링 구성
- 성능 보존기간은 7일(프리 티어)를 적용시켰고 나머지는 전부 default값을 그대로 뒀다.

3-11. 추가 구성
- 데이터베이스 옵션을 선택했다.

- 이후 백업에 대한 설정을 했다.

- 다음으로 암호화와 로그 설정을 했다. 암호화는 체크되어 있었는데 해제시켰고 로그는 전부 체크를 해줬다.

- 이후 하단의 나머지 세팅들은 전부 default 설정을 따라갔다.

3-12. 하단의 비용계산 확인하기
- 맨 하단에는 비용계산과 설명이 나온다. 이것을 확인하고 맨 아래의 "데이터베이스 생성" 버튼을 누른다.


3-13. 생성시작
- 위에서 생성 버튼을 눌렀다면 아래와 같이 생성이 진행되는데 시간이 상당히 걸린다. 다른 것을 하다 돌아오면 된다.

3-14. 생성완료
- 하단의 상태가 "사용 가능"으로 변경되었다. 즉, 데이터베이스가 생성 완료되었다는 것이다.

3-15. 데이터베이스 상세 보기
- 상세 보기를 하기 위해 DB식별자를 클릭해서 들어갔다.

- 하단의 “연결 및 보안”설정도 확인했다. 여기에 적혀있는 엔드포인트로 외부에서 연결하게 될 것이다.

4. 보안 그룹 (Security Group) 설정하기
4-1. 보안그룹에서 DB포트 열어주기
- 외부에서 AWS의 RDS 서비스로 만든 PostgreSQL DB에 접근하기 위해서는 보안그룹에서 포트를 열어줄 필요가 있다.
- 하단의 "연결 및 보안"에서 "VPC보안 그룹" 아래에 설정되어 있는 그룹이 파란색으로 되어있는데 클릭해서 들어가 준다.

4-2. 보안그룹 편집하러 들어가기
- 보안그룹에 들어왔으면 하단에서 "인바운드 규칙"을 선택한다. 이후 그 우측에 있는 "인바운드 규칙 편집" 버튼을 클릭하고 들어간다.

4-3. 보안그룹 편집하기
- 외부에서 들어올 수 있도록 인바운드 규칙을 수정했다. 하단의 유형에서 PostgreSQL을 선택하면 자동으로 TCP 5432 포트를 선택해 준다. 소스는 모든 IP에서 들어올 수 있도록 하기 위해 0.0.0.0/0으로 설정해주었다. (보안을 위해 추후 수정할 예정)

이제 외부에서도 내 RDS(PostgreSQL)로 접근할 수 있게 설정이 완료되었다.
다음 포스트에서는 SpringBoot에서 이번에 설정한 RDS에 연결해 보도록 하는 과정을 설명하겠다.
2023.10.29 - [AWS] - AWS - CodePipeline을 통한 CI/CD구현기 1편 (Step1: 파이프라인 설정, Step2: 소스 스테이지 추가하기)
AWS - CodePipeline을 통한 CI/CD구현기 1편 (Step1: 파이프라인 설정, Step2: 소스 스테이지 추가하기)
이제부터 작성할 CodePipeline포스트 시리즈는 지금까지 열심히 만든 AWS의 ECR, ECS를 활용하여 CI/CD를 구현해 보도록 한다. CodePipeline으로 CI/CD를 구축하는 과정에서 많은 우여곡절이 있었지만 이를
curiousjinan.tistory.com
반응형
'AWS > RDS' 카테고리의 다른 글
AWS의 RDS(PostgreSQL)와 SpringBoot 연동하기 (2) | 2023.11.03 |
---|