MongoDB Atlas를 포함하는 AWS 랜딩 존 구축 - 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

MongoDB Atlas를 포함하는 AWS 랜딩 존 구축

Igor Alekseev, Amazon Web Services

요약

이 패턴은 MongoDB Atlas 클러스터와 통합된 AWS 랜딩 존을 구축하는 방법을 설명합니다. 인프라는 Terraform 스크립트를 사용하여 자동으로 배포됩니다.

랜딩 존이라고 하는 잘 구성된 다중 계정 AWS 환경은 특히 기업에 확장성과 보안을 제공합니다. 워크로드 및 애플리케이션의 신속한 배포를 위한 토대 역할을 하며 보안 및 인프라에 대한 신뢰도를 보장하는 데 도움이 됩니다. 랜딩 존을 구축하려면 계정 구조, 네트워킹, 보안 및 액세스 관리를 비롯한 기술적 및 비즈니스 요소를 신중하게 고려해야 합니다. 이러한 고려 사항은 조직의 미래 성장 및 비즈니스 목표에 부합해야 합니다.

이 패턴의 사용 사례에는 다음이 포함됩니다.

  • 엔터프라이즈 SaaS 및 PaaS 플랫폼:에서 실행되는 서비스형 멀티테넌트 소프트웨어(SaaS) 애플리케이션 및 서비스형 플랫폼(PaaS) 플랫폼은이 설정을 사용하여 퍼블릭 인터넷을 통해 데이터를 노출하지 않고도 MongoDB Atlas에 대한 안전한 프라이빗 액세스를 제공할 AWS 수 있습니다.

  • 규제가 엄격한 산업: HIPAA(Health Insurance Portability and Accountability Act), PCI DSS(Payment Card Industry Data Security Standard), SOC2(System and Organization Controls 2), GDPR(General Data Protection Regulation)과 같은 표준을 엄격하게 준수해야 하는 은행, 금융 서비스, 의료 및 정부 워크로드는 다음과 같은 이점을 누릴 수 있습니다.

    • 를 통한 암호화된 프라이빗 연결 AWS PrivateLink

    • MongoDB 복제본 세트의 다중 AZ 고가용성

  • 보안 AI/ML 워크로드: Amazon Bedrock, Amazon SageMaker AI 또는 사용자 지정 AI 모델의 훈련 또는 추론 파이프라인은 PrivateLink를 통해 MongoDB Atlas에서 데이터를 안전하게 가져오고 저장할 수 있습니다.

  • 재해 복구 및 비즈니스 연속성: 다중 AZ 설계는 단일 가용 영역 장애가 워크로드를 방해하지 않도록 합니다. 가용 영역에 설정된 Atlas 복제본은 자동 장애 조치를 보장합니다. 이는 금융 기술(핀테크) 앱, 디지털 뱅킹 또는 의료 모니터링과 같은 상시 작동 서비스에 매우 중요합니다.

사전 조건 및 제한 사항

사전 조건 

  • 조직 소유자가 MongoDB Atlas에 액세스하여 Atlas API 키를 생성할 수 있습니다. 이 요구 사항에 대한 자세한 내용은 MongoDB 설명서의 조직 액세스 관리를 참조하세요.

  • 활성 AWS 계정.

  • Terraform, 설치 및 구성됨.

  • MongoDB 버전 6.0 이상으로 생성된 MongoDB Atlas 클러스터입니다.

  • MongoDB 및 MongoDB Atlas에 익숙합니다. 자세한 내용은 MongoDB Atlas 설명서를 참조하세요.

제한 사항

아키텍처

다음 참조 아키텍처 다이어그램은 MongoDB Atlas 프라이빗 엔드포인트와 통합된 AWS 랜딩 존의 배포 설정을 보여줍니다. 이 참조 아키텍처는 MongoDB Atlas와 통합된 안전하고 확장 가능하며 가용성이 높은 AWS 랜딩 존을 설정하는 방법을 보여줍니다. 다중 AZ 배포, 최소 권한 보안 제어, 프라이빗 연결과 같은 AWS 모범 사례를 결합하여 조직은이 설계를 통해 최신 애플리케이션을 위한 강력한 환경을 프로비저닝할 수 있습니다.

MongoDB Atlas와 통합된 AWS 랜딩 존용 다중 AZ 아키텍처입니다.

이 아키텍처는 다음으로 구성됩니다.

VPC

  • 단일 Virtual Private Cloud(VPC)는 세 개의 가용 영역에 걸쳐 있습니다.

  • VPC는 각 가용 영역에 맞게 정렬된 서브넷으로 세분화됩니다. 이러한 서브넷은 고가용성을 위해 워크로드를 분산합니다.

인터넷 액세스

  • 인터넷 게이트웨이는 애플리케이션 또는 접속 호스트와 같이 필요한 리소스에 대한 아웃바운드 인터넷 연결을 제공합니다.

  • 퍼블릭 서브넷에는 NAT 게이트웨이가 있을 수 있으므로 프라이빗 서브넷 워크로드가 퍼블릭 인터넷에 직접 노출되지 않고 업데이트, 패치 및 기타 필수 패키지를 다운로드할 수 있습니다.

프라이빗 서브넷 및 라우팅 테이블

  • 애플리케이션 구성 요소, 마이크로서비스 또는 기타 민감한 리소스는 일반적으로 프라이빗 서브넷에 상주합니다.

  • 전용 라우팅 테이블은 트래픽 흐름을 제어합니다. 안전한 송신 전용 인터넷 액세스를 위해 프라이빗 서브넷에서 NAT 게이트웨이로 직접 아웃바운드 트래픽을 라우팅합니다.

  • 인터넷의 인바운드 요청은 퍼블릭 서브넷의 탄력적 로드 밸런서 또는 접속 호스트(사용된 경우)를 통과한 다음 프라이빗 서브넷 리소스로 적절하게 라우팅됩니다.

PrivateLink를 통한 MongoDB Atlas 연결

  • 아키텍처는 PrivateLink(VPC 엔드포인트를 통해)를 사용하여 데이터를 퍼블릭 인터넷에 노출하지 않고 MongoDB Atlas에 안전하게 연결합니다.

  • 요청은 AWS 백본 네트워크에 남아 있습니다. 전송 중인 데이터는 PrivateLink 암호화의 이점을 활용하며 퍼블릭 인터넷을 통해 라우팅되지 않습니다.

  • MongoDB Atlas 전용 VPC는 기본 및 보조 노드를 호스팅하고 관리형 데이터베이스 클러스터를 위한 안전하고 격리된 환경을 제공합니다.

다중 AZ 배포

  • 중요한 인프라 구성 요소(예: NAT 게이트웨이 및 애플리케이션 서브넷)는 최소 3개의 가용 영역에 분산됩니다. 가용 영역에 중단이 발생하는 경우이 아키텍처는 나머지 가용 영역의 워크로드가 계속 작동하도록 합니다.

  • MongoDB Atlas는 기본적으로 복제본 세트를 통해 고가용성을 제공하고 데이터베이스 계층이 내결함성을 유지하도록 합니다. 중요한 인프라는 복원력을 위해 최소 3개의 가용 영역에 분산되어 있습니다.

도구

AWS 서비스

  • AWS Secrets Manager는 암호를 포함한 코드의 하드 코딩된 자격 증명을 프로그래밍 방식으로 보안 암호를 검색하는 API 호출로 대체할 수 있도록 도와줍니다.

기타 제품 및 도구

  • MongoDB Atlas는 클라우드에서 MongoDB 데이터베이스를 배포하고 관리하기 위한 완전관리형 서비스형 데이터베이스(DbaaS)입니다.

  • Terraform은 HashiCorp의 코드형 인프라(IaC) 도구로, 클라우드 및 온프레미스 리소스를 생성하고 관리하는 데 도움이 됩니다. 이 패턴에서는 Terraform을 사용하여 스크립트를 실행하여 AWS 및 MongoDB Atlas에 필요한 리소스를 쉽게 배포할 수 있습니다.

코드 리포지토리

이 패턴의 코드는 AWS 및 MongoDB Atlas Landing Zone GitHub 리포지토리에서 사용할 수 있습니다.

에픽

작업설명필요한 기술

주요 이해관계자를 파악합니다.

랜딩 존 프로젝트에 관련된 모든 주요 이해관계자와 팀원을 식별합니다. 여기에는 다음과 같은 역할이 포함될 수 있습니다.

  • 데이터베이스 관리자(DBAs)

  • DevOps 엔지니어

  • 애플리케이션 개발자

  • 애플리케이션 아키텍트

마이그레이션 책임자

구조 블루프린트를 생성합니다.

AWS 및 MongoDB Atlas 지원 랜딩 존의 원하는 구조를 설명하는 블루프린트를 생성합니다.

마이그레이션 책임자

아키텍처 계획을 생성합니다.

애플리케이션 아키텍트와 협력하여 요구 사항을 분석하고 내결함성 및 복원력이 뛰어난 아키텍처를 설계합니다. 이 패턴은 참조를 위한 스타터 아키텍처 템플릿을 제공합니다. 조직의 보안 및 인프라 요구 사항에 맞게이 템플릿을 사용자 지정할 수 있습니다.

클라우드 아키텍트

설정 및 배포를 계획합니다.

모든 이해관계자와 함께 아키텍처를 배포하는 방법, 보안 조치를 구현하는 방법, 기타 측면을 결정하여 조직 및 요청 팀의 관심사와 일치하는지 확인합니다.

마이그레이션 책임자, DevOps 엔지니어, DBA
작업설명필요한 기술

리포지토리를 복제합니다.

명령을 실행하여 GitHub 리포지토리에서 코드를 복제합니다.

git clone https://github.com/mongodb-partners/AWS-MongoDB-Atlas-Landing-Zone
앱 개발자, DevOps 엔지니어

Atlas 조직 ID를 가져옵니다.

  1. MongoDB Atlas 계정이 없는 경우 계정에 가입합니다.

  2. MongoDB 설명서의 단계에 따라 조직을 생성합니다.

  3. 조직 ID를 복사합니다.

DBA

Atlas 조직 수준 API 키를 생성합니다.

Atlas에서 조직 수준 API 키를 생성하려면 MongoDB 설명서의 지침을 따르세요.

DBA

에서 보안 암호를 생성합니다 AWS Secrets Manager.

이전 단계에서 생성된 MongoDB Atlas API 키를 Secrets Manager에 키-값 보안 암호로 저장합니다. 자세한 지침은 Secrets Manager 설명서를 참조하세요.

DevOps 엔지니어

Atlas 클러스터 계층을 선택합니다.

올바른 Atlas 클러스터 티어를 선택하려면 MongoDB 설명서의 지침을 따르세요.

DBA
작업설명필요한 기술

Terraform 스크립트를 수정합니다.

GitHub 리포지토리의 로컬 사본에서 module/mongodb-atlas/main.tf 파일(12행)의 보안 암호 이름을 업데이트하여 배포 중에 Terraform이 Secrets Manager에서 보안 인증을 검색할 수 있도록 합니다.

DevOps 엔지니어

AWS 액세스 키 ID와 보안 키를 생성합니다.

AWS 액세스 키 ID 및 보안 키를 생성하려면 AWS re:Post 문서의 AWS 액세스 키를 생성하려면 어떻게 해야 합니까? 지침을 따르세요.

필요한 권한이 가장 적은 정책을 할당하는 것이 가장 좋지만,이 경우 AdministratorAccess 정책을 선택합니다.

액세스 키를 생성한 후 IAM의 보안 모범 사례를 검토하여 액세스 키 관리 모범 사례에 대해 알아봅니다.

DevOps 엔지니어

탄력적 IP 주소를 할당합니다.

2개 이상의 탄력적 IP 주소 IDs. 지침은 Amazon Virtual Private Cloud(Amazon VPC) 설명서를 참조하세요.

DevOps 엔지니어

S3 버킷을 생성합니다.

Amazon Simple Storage Service(S3) 설명서의 지침에 따라 Terraform 배포 상태를 저장할 S3 버킷을 생성합니다. Amazon S3

DevOps 엔지니어

스토리지용 S3 버킷을 업데이트합니다.

이전 단계에서 생성한 버킷의 이름 및 리전과 일치하도록 environments/development/main.tf의 로컬 버전에서 S3 버킷 정보를 업데이트하고 키 접두사를 지정합니다. 예:

terraform { ... backend "s3" { bucket = "startup-name-product-terraform" key = "network/dev" region = "ap-southeast-1" } }

이 예제에서는 키 접두사를 사용하여 Terraform 상태 파일을 구성network/dev하도록 Terraform을 구성할 수 있습니다. 값을 생성하려는 환경과 일치하도록 prod 또는 staging 로 변경할 수 있습니다. 여러 환경 사용에 대한 자세한 내용은이 섹션의 마지막 단계를 참조하세요.

Amazon S3 키 접두사에 대한 자세한 내용은 Amazon S3 설명서의 접두사를 사용하여 객체 구성을 참조하세요.

DevOps 엔지니어

Terraform 변수를 설정합니다.

샘플 랜딩 존은 Terraform 변수 정의 파일을 사용하여 입력 변수 값을 정의합니다.

변수 파일은 environments/development/variables.tf에 있습니다. environments/development/terraform.tfvars 파일에서 변수 값을 설정할 수 있습니다. GitHub 리포지토리의 Readme 파일에 설명된 대로 이러한 변수를 구성합니다.

DevOps 엔지니어

환경 변수를 설정합니다.

로컬 시스템에서 Terraform 스크립트를 실행하려는 경우 다음 환경 변수를 설정합니다.

  • AWS_ACCESS_KEY_ID: AWS 액세스 키 ID

  • AWS_SECRET_ACCESS_KEY: AWS secret 액세스 키

  • AWS_DEFAULT_REGION: AWS 리전

  • TF_LOG: Terraform 로그 수준(DEBUG 또는 INFO)

환경 변수 설정에 대한 자세한 내용은 AWS Command Line Interface (AWS CLI) 설명서를 참조하세요.

DevOps 엔지니어

VPC 구성을 확인합니다.

에서 권장하는 모범 사례를 따르려면 조직의 요구 사항에 맞게 Terraform 스크립트에서 VPC 및 서브넷 CIDRs, NAT 게이트웨이, 라우팅 및 라우팅 테이블에 대한 설정을 AWS구성합니다. 자세한 내용은 GitHub 리포지토리의 Readme 파일을 참조하세요.

DevOps 엔지니어

리소스에 태그 지정.

Terraform 스크립트에서 리소스를 배포할 때 AWS 리소스에 태그를 지정하여 모니터링할 수 있습니다. 예제는 GitHub 리포지토리의 Readme 파일을 참조하세요. 비용, 사용량 등에 대한 태그를 통한 리소스 모니터링에 대한 자세한 내용은 AWS Billing 설명서의 사용자 정의 비용 할당 태그 활성화를 참조하세요.

DevOps 엔지니어

여러 환경을 사용합니다.

GitHub 리포지토리는 development 환경 폴더를 제공합니다. 환경 폴더에 자체 환경을 추가할 수도 있습니다.

환경을 추가하려면 development 폴더를 아래의 새 폴더(예: prod 또는 staging)에 복사합니다environments. 그런 다음 terraform.tfvars 파일을 새 값으로 업데이트할 수 있습니다.

DevOps 엔지니어
작업설명필요한 기술

Terraform 작업 디렉터리를 초기화합니다.

작업 디렉터리를 초기화하고 필요한 패키지를 다운로드하려면 명령을 실행합니다.

terraform init
DevOps 엔지니어

실행 계획을 생성합니다.

실행 계획을 생성하고 Terraform이 인프라에 적용할 변경 사항을 시각화하려면 명령을 실행합니다.

terraform plan
DevOps 엔지니어

변경 사항을 배포합니다.

코드에 설명된 대로 인프라에 대한 변경 사항을 구현하려면 명령을 실행합니다.

terraform apply
DevOps 엔지니어

배포를 검증합니다.

Terraform이 인프라에서 생성하거나 수정한 구성 요소를 검증합니다.

설정을 테스트하려면 VPC에서 또는 VPC에 연결된 컴퓨팅 리소스(예: Amazon EC2 인스턴스 또는 AWS Lambda 함수)를 프로비저닝합니다.

DevOps 엔지니어, 앱 개발자
작업설명필요한 기술

정리

테스트를 마치면 다음 명령을 실행하여 Terraform이 인프라에 배포한 리소스를 삭제합니다.

terraform destroy
DevOps 엔지니어

관련 리소스

검색 및 평가

MongoDB Atlas 및 AWS 환경 설정

랜딩 존 배포