티스토리 뷰

728x90
반응형

서론

Amazon에서는 Managed Service인 RDS(Relational Database Service)를 제공한다. 대표적인 관계형 데이터베이스인 Oracle은 물론, Amazon Aurora, MySQL, MariaDB, PostgreSQL, Microsoft SQL Server 등을 AWS Console에서 손쉽게 구성할 수 있으며, 이에 대한 관리를 AWS에서 직접 제공하는 완전관리형 서비스로써 운영 비용등을 절감할 수 있다.


본론

Amazon RDS는 관리형 관계DB로 데이터베이스의 설정, 운영, 스케일링을 단순케 하도록 설계된 클라우드 내에서 동작하는 웹 서비스이다. 데이터베이스 소프트웨어를 업그레이드하거나 데이터베이스를 백업하거나 시점 복구를 활성화하는 것과 같은 복잡한 관리 프로세스들을 자동으로 관리함으로써 운영비용을 절감하고 효과적인 유지보수가 가능하도록 설계되어 있다. 스토리지와 연산 자원들을 스케일링하는 것 역시 한번의 API 호출로 수행할 수 있다. 지금부터 대표적인 관계형 데이터베이스인 Oracle 19g를 AWS 상에서 구축하는 방법에 대해 알아보자.

1) Amazon RDS

Amazon RDS 웹 서비스 화면에 접속하면 왼쪽의 다양한 메뉴들이 존재한다. 데이터베이스 생성 및 설정과 관련된 데이터베이스 항목, 성능 개선 도우미, 스냅샷, Automated backups, 예약 인스턴스, Proxies 등 지원되는 기능이 가시적으로 나타나는 기능 기반의 메뉴로 구성되어 있으며, 데이터베이스를 생성하는 시점 또는 수정을 통해 해당 기능을 활성화 / 비활성화 할 수 있다.

2) 서브넷 그룹

먼저 데이터베이스 생성 전 서브넷 그룹을 생성한다. 서브넷 그룹은 말그대로 특정 VPC 내 서브넷 그룹을 생성하여 RDS가 사용할 서브넷 네트워크 대역을 지정하는 것이다. Amazon RDS가 VPC에 DB 인스턴스를 생성할 때는 DB 서브넷 그룹의 IP 주소를 사용하여 DB 인스턴스에 네트워크 인터페이스를 할당한다. 하지만 기본 IP 주소가 장애 조치 중에 바뀌기 때문에 DB 인스턴스에 연결할 때 반드시 DNS 이름을 사용하는 것이 좋다.

서브넷 그룹은 위와 같이 VPC를 지정하고 AZ를 두개이상 지정하여 Database가 할당 될 서브넷 그룹을 생성한다. 이때 대체로 Application이 배치되는 VPC 즉 EKS, EC2, ECS 등의 서비스와 동일한 VPC 대역을 사용하는 것이 연결에 유리하다. 서로 다른 VPC를 사용해야 하는경우 VPC Peering 또는 Transit Gateway 등으로 연결 구성이 이뤄져야하며 네트워크 대역 충돌이 발생하지 않도록 유의해야 한다.

3) 파라미터 그룹

다음으로 파라미터 그룹을 생성한다. DB 파라미터 그룹은 하나 이상의 DB 인스턴스에 적용되는 데이터베이스의 설정 정보를 저장하는 역할을 한다. DB 파라미터 그룹을 지정하지 않고 DB 인스턴스를 만드는 경우 DB 인스턴스에서는 기본 DB 파라미터 그룹을 사용한다. 위와 같이 default.oracle-se2-19는 데이터베이스 생성 시 기본으로 생성되며, nrson-oracle-pg는 개별 db에 적용할 파라미터 구성을 위해 아래 과정을 거쳐 생성한 파라미터 그룹이다. 각 DB 파라미터 그룹에는 인스턴스의 엔진, 컴퓨팅 클래스 및 할당된 스토리지에 따른 데이터베이스 엔진 기본값과 Amazon RDS 시스템 기본값이 들어 있다. 기본 DB 파라미터 그룹의 파라미터 설정은 수정할 수 없으며, 추가로 생성한 파라미터 그룹의 구성만 변경할 수 있다.

위와 같이 파라미터 그룹의 Familiy와 Name을 지정하면, default family와 함께 파라미터 그룹이 생성된다.

생성한 파라미터 그룹은 위와 같이 편집이 가능하지만, default 파라미터 그룹은 편집이 불가능하다.

4) 옵션 그룹

Amazon RDS는 옵션 그룹을 사용하여 효과적인 데이터베이스 관리와 데이터베이스 보안을 강화하도록 구성한다.

Oracle 옵션 그룹의 경우 아래와 같은 옵션이 제공된다.

- Amazon S3 통합 (S3_INTEGRATION)

- Oracle Java (JVM)

- Oracle SSL (SSL)

- Oracle Timezone (Timezone) 등 다수

5) Security Group

Amazon RDS (Oracle)에서 사용할 보안 그룹을 구성한다. Oracle에서 자주 사용하는 Default Port인 1521 포트를 인바운드로 오픈할 소스를 지정하여 보안그룹을 생성한다.

6) 데이터베이스 생성

이제 준비가 완료되었으면, 데이터베이스를 생성해 보도록 하자. 먼저, 아래와 같은 순서로 선택한다.

(표준 생성 > Oracle > Oracle Standard Edition Two > 프로덕션)

다음으로 주요 설정 화면에서는 DB 인스턴스 식별자(Database Name이 아닌 AWS 상에서 확인가능한 RDS Name), 자격 증명 설정을 구성한다.

다음으로 인스턴스 크기를 용도에 맞게 지정한다. 인스턴스 크기와 스토리지 용량 / 스토리지 오토스케일링 여부 등을 결정하여 구성한다.

다음으로 가용성 및 내구성 항목에서는 대기 인스턴스를 생성하여 빠른 백업, IOPS 증대 등의 성능 효과를 가져갈 수 있도록 구성할 것인지 여부를 결정한다. 운영 환경에서는 대기 인스턴스 생성을 권고한다.

다음으로 연결 항목에서는 Database가 배치될 VPC를 정의하며, 앞서 구성한 서브넷 그룹과 Security Group을 지정한다. 또한 Public Access 가능 여부와 DB Port를 지정한다.

추가 구성에서는 데이데베이스의 이름(실제 Application에서 붙게되는 DB SID), 앞서 구성한 파라미터 그룹과 옵션 그룹, 백업 여부, 암호화, 모니터링, 로깅, 유지보수 관리 요건 등을 필요에 의해 구성한다. 각 개별 발생하는 비용등을 검토할 필요가 있다.

마지막으로 삭제 방지를 통해 실수로 RDS를 삭제하지 않도록 구성하고, 월별 추정 요금을 확인한 후 데이터베이스 생성을 선택한다.

이때 대략 데이터베이스 생성 시간은 10분 정도 소요되며, 정상적으로 생성이 완료되었을 시 아래와 같이 확인이 가능하다.

앞서 살펴본 바와 같이 RDS의 장애 복구 등을 통해 IP 등이 변경될 수 있으므로 아래와 같이 상세 정보에서 확인할 수 있는 엔드포인트 및 포트 정보를 기록하여 이를 통해 해당 RDS에 접속할 수 있도록 구성하는 것을 권고한다.

7) Oracle SQL Developer 접속 테스트

마지막으로 SQL Developer로 Oracle Server에 접속이 정상적으로 되는지까지만 확인해보고 본 포스팅을 마치도록 한다. 이후 WAS / Application Source에서 JDBC, JNDI 등으로 접속하는 방법은 타 많은 포스팅을 참고하시기 바란다.

위와 같이 접속 정보 및 접속 URL / 포트 / SID를 입력하고 접속하면, 아래와 같이 Amazon RDS Oracle에 접속한 것을 확인할 수 있다.

마지막으로 Select SYSDATE From dual을 질의해보고 마무리하도록 하자.


결론

위와 같이 Amazon RDS를 구성하면, 손쉽게 Database를 클라우드 상에 구축하여 운영할 수 있으며, 다양한 운영 관리 포인트를 제공하는 등 효율적인 유지보수가 가능하도록 제공해 준다. 특히 데이터베이스의 업그레이드, 백업 등에 강력한 기능을 내장하고 있어 서비스하고 있는 개발사입장에서는 커다란 노력없이 데이터베이스 서비스를 활용할 수 있다.

물론 Amazon RDS가 AWS에서 제공하는 서비스 중에서는 비싼 편에 드는 서비스이다. Database의 안정성 및 Telemetry 관련 요소까지 구성하게되면 비용은 지금보다 더 증가할 가능성이 높다. 특히 마이크로서비스 아키텍처로 재편되는 애플리케이션 환경에서 결합도를 낮추기 위해 Database의 분리 역시 중요한 포인트가 되고 있다. 모든 데이터베이스를 엔터프라이즈로 구매하여 마이크로서비스를 구성할 수도 있지만, 비용과 관리 측면에서 Public Cloud를 사용한다면, 안정성이 높아야 하는 서비스는 Oracle과 같은 보다 완성도 높은 Database를 선택하고, 데이터 보장 등이 중요하지 않은 서비스는 보다 저렴한 데이터베이스를 선택하여 서로 다른 데이터베이스를 구성하여 마이크로서비스를 구축하는 것 역시 고려해 볼 만한 요소이다. 마이크로서비스가 폴리그랏을 지향하는 이유 중 하나가 바로 이런한 부분에서 강점이라 이야기할 수 있지 않나 싶다.

728x90
반응형