Your team has a tomcat-based Java application you need to deploy into development, test and production environments. After some research, you opt to use
Elastic Beanstalk due to its tight integration with your developer tools and RDS due to its ease of management. Your QA team lead points out that you need to roll a sanitized set of production data into your environment on a nightly basis. Similarly, other software teams in your org want access to that same restored data via their EC2 instances in your VPC.
The optimal setup for persistence and security that meets the above requirements would be the following.
- A. Create your RDS instance as part of your Elastic Beanstalk definition and alter its security group to allow access to it from hosts in your application subnets.
- B. Create your RDS instance separately and add its IP address to your application's DB connection strings in your code Alter its security group to allow access to it from hosts within your VPC's IP address block.
- C. Create your RDS instance separately and pass its DNS name to your app's DB connection string as an environment variable. Create a security group for client machines and add it as a valid source for DB traffic to the security group of the RDS instance itself.
- D. Create your RDS instance separately and pass its DNS name to your's DB connection string as an environment variable Alter its security group to allow access to It from hosts in your application subnets.
한글 번역
귀사의 팀에는 개발, 테스트 및 프로덕션 환경에 배포해야 하는 Tomcat 기반 Java 애플리케이션이 있습니다. 어느 정도 조사한 결과, Elastic Beanstalk는 관리 용이성으로 인해 개발자 툴 및 RDS와 긴밀하게 통합되어 있기 때문에 사용하기로 결정했습니다. 귀사의 QA 팀장은 매일 밤 검증된 프로덕션 데이터 세트를 귀사의 환경으로 롤업해야 한다고 지적합니다. 마찬가지로 조직의 다른 소프트웨어 팀도 VPC의 EC2 인스턴스를 통해 동일한 복원된 데이터에 액세스하려고 합니다.
위의 요구 사항을 충족하는 지속성 및 보안을 위한 최적의 설정은 다음과 같습니다.
- A. Elastic Beanstalk 정의의 일부로 RDS 인스턴스를 만들고 애플리케이션 서브넷의 호스트에서 액세스할 수 있도록 보안 그룹을 변경합니다.
- B. RDS 인스턴스를 별도로 만들고 코드에서 애플리케이션의 DB 연결 문자열에 IP 주소를 추가하여 VPC의 IP 주소 블록 내의 호스트에서 액세스할 수 있도록 보안 그룹을 변경합니다.
- C. RDS 인스턴스를 별도로 만들고 DNS 이름을 앱의 DB 연결 문자열에 환경 변수로 전달합니다. 클라이언트 시스템에 대한 보안 그룹을 만들고 RDS 인스턴스 자체의 보안 그룹에 DB 트래픽의 유효한 소스로 추가합니다.
- D. RDS 인스턴스를 별도로 만들고 환경 변수로 DNS 이름을 DB 연결 문자열에 전달하여 애플리케이션 서브넷의 호스트에서 It에 대한 액세스를 허용하도록 보안 그룹을 변경합니다.
정답
- C. Create your RDS instance separately and pass its DNS name to your app's DB connection string as an environment variable. Create a security group for client machines and add it as a valid source for DB traffic to the security group of the RDS instance itself.
해설
Elastic Beanstalk 환경에 데이터베이스 추가
Elastic Beanstalk는 다음과 같은 통합을 제공합니다. Amazon Relational Database Service(Amazon RDS). Elastic Beanstalk를 사용하여 MySQL, PostgreSQL, Oracle 또는 SQL Server 데이터베이스를 기존 환경에 추가하거나 새 환경을 만들 때 추가할 수 있습니다. 데이터베이스 인스턴스를 추가하면 Elastic Beanstalk가 애플리케이션에 연결 정보를 제공합니다. 데이터베이스 호스트 이름, 포트, 사용자 이름, 암호 및 데이터베이스 이름에 대한 환경 속성을 설정하여 이 작업을 수행합니다.
이전에 애플리케이션에서 데이터베이스 인스턴스를 사용한 적이 없는 경우 먼저 이 항목에 설명된 프로세스를 사용하여 Elastic Beanstalk 서비스를 사용하여 테스트 환경에 데이터베이스를 추가하는 것이 좋습니다. 이렇게 하면 애플리케이션이 Elastic Beanstalk 외부의 데이터베이스에 필요한 추가 구성 작업 없이 환경 속성을 읽고, 연결 문자열을 구성하고, 데이터베이스 인스턴스에 연결할 수 있는지 확인할 수 있습니다.
응용 프로그램이 데이터베이스에서 올바르게 작동하는지 확인한 후 프로덕션 환경으로 이동하는 것이 좋습니다. 이 시점에서 데이터베이스를 Elastic Beanstalk 환경에서 분리하여 유연성을 높이는 구성으로 이동할 수 있습니다. 분리된 데이터베이스는 외부 Amazon RDS 데이터베이스 인스턴스로 계속 작동할 수 있습니다. 환경의 상태는 데이터베이스 분리 시 영향을 받지 않습니다. 환경을 종료해야 하는 경우 이를 수행할 수 있으며 Elastic Beanstalk 외부에서 데이터베이스를 사용 가능하고 작동할 수 있도록 유지하는 옵션도 선택할 수 있습니다.
외부 데이터베이스를 사용하면 몇 가지 이점이 있습니다. 여러 환경에서 외부 데이터베이스에 연결하고, 통합 데이터베이스에서 지원되지 않는 데이터베이스 유형을 사용하고, 파란색/녹색 배포를 수행할 수 있습니다. Elastic Beanstalk가 만든 분리된 데이터베이스를 사용하는 대신 Elastic Beanstalk 환경 외부에서 데이터베이스 인스턴스를 만들 수도 있습니다. 두 옵션 모두 Elastic Beanstalk 환경 외부에 있는 데이터베이스 인스턴스를 생성하며 추가 보안 그룹 및 연결 문자열 구성이 필요합니다.
데이터베이스에 연결
연결 정보를 사용하여 환경 변수를 통해 응용 프로그램 내부에서 데이터베이스에 연결합니다. 애플리케이션에서 Amazon RDS를 사용하는 방법에 대한 자세한 내용은 다음 주제를 참조하십시오.
- 자바 SE – 데이터베이스에 연결 (자바 SE 플랫폼)
- Tomcat을 사용한 Java – 데이터베이스에 연결하기(Tomcat 플랫폼)
- 노드.js – 데이터베이스에 연결
- .NET – 데이터베이스에 연결
- PHP – PDO 또는 MySQLi를 사용하여 데이터베이스에 연결
- 파이썬 – 데이터베이스에 연결
- 루비 – 데이터베이스에 연결
Java 애플리케이션 환경에 Amazon RDS DB 인스턴스 추가
Amazon Relational Database Service(Amazon RDS) DB 인스턴스를 사용하여 애플리케이션이 수집하고 수정하는 데이터를 저장할 수 있습니다. 데이터베이스를 환경에 연결하고 Elastic Beanstalk에서 관리하거나 외부에서 생성 및 관리할 수 있습니다.
Amazon RDS를 처음 사용하는 경우 Elastic Beanstalk 콘솔을 사용하여 DB 인스턴스를 테스트 환경에 추가하고 애플리케이션이 이 환경에 연결할 수 있는지 확인합니다.
- Elastic Beanstalk 정의의 일부로 RDS 인스턴스를 만들고 애플리케이션 서브넷의 호스트에서 액세스할 수 있도록 보안 그룹을 변경합니다. (RDS가 Elastic Beanstalk 수명주기와 연관되어 있고 독립적으로 유지되지 않으므로 지속성에 적합하지 않음))
- RDS 인스턴스를 별도로 만들고 코드에서 애플리케이션의 DB 연결 문자열에 IP 주소를 추가합니다. VPC의 IP 주소 블록 내의 호스트에서 액세스할 수 있도록 보안 그룹을 변경합니다. RDS는 DNS 엔드포인트만 사용하여 연결됩니다.)
- RDS 인스턴스를 별도로 만들고 DNS 이름을 앱의 DB 연결 문자열에 환경 변수로 전달합니다. 클라이언트 시스템에 대한 보안 그룹을 만들고 RDS 인스턴스 자체의 보안 그룹에 DB 트래픽의 유효한 소스로 추가합니다. (보안 그룹을 사용하면 인스턴스가 변경 없이 시작된 새 인스턴스로 RDS에 액세스할 수 있습니다.)
- RDS 인스턴스를 별도로 만들고 DNS 이름을 DB 연결 문자열에 환경 변수로 전달합니다. 응용 프로그램 서브넷의 호스트에서 액세스할 수 있도록 보안 그룹을 변경합니다. (개별 호스트를 추가하는 보안에는 적합하지 않음))
참조 문서
Adding a database to your Elastic Beanstalk environment - AWS Elastic Beanstalk (amazon.com)
Java 애플리케이션 환경에 Amazon RDS DB 인스턴스 추가 - AWS Elastic Beanstalk
AWS Elastic Beanstalk (jayendrapatil.com)
'[AWS] > AWS SAP EXAMTOPICS' 카테고리의 다른 글
[AWS][SAP] Question 26 (0) | 2022.09.16 |
---|---|
[AWS][SAP] Question 24 (0) | 2022.09.15 |
[AWS][SAP] Question 23 (0) | 2022.09.14 |
[AWS][SAP] Question 20 (1) | 2022.09.13 |
[AWS][SAP] Question 14 (0) | 2022.08.22 |
[AWS][SAP] Question 13 (0) | 2022.08.19 |
[AWS][SAP] Question 12 (0) | 2022.08.16 |
[AWS][SAP] Question 11 (0) | 2022.08.16 |
댓글