Terraform, Terragrunt를 사용한 MongoDB Replica set 구성

coille·2023년 10월 8일
0

예전만들어두고 회사에서 사용하고 있던 인프로 코드를 정리하는 작업을 진행했습니다. 이 글에서는 그 과정에서의 주요 내용과 개선된 인프라 구성을 공유하고자 합니다.

MongoDB Architecture

프로젝트 개요

  1. 보안성 확보:

    • 프로젝트의 인프라 구성은 외부에서의 접근이 제한된 private 환경에서 진행되었습니다. 이를 통해 데이터의 보안을 최우선으로 보장하였습니다.
  2. MongoDB 구성:

    • Primary, Secondary, Arbiter 구조로 설정했습니다.
    • 이 구조를 선택한 이유는 고가용성을 보장하면서도 비용 효율적인 방식으로 MongoDB 클러스터를 구성하기 위해서였습니다.
  3. Java 어플리케이션 서버:

    • 데이터를 수신하고 MongoDB에 저장하는 기능을 가진 서버입니다.
    • AWS의 오토스케일 그룹을 활용하여 트래픽에 따라 자동으로 스케일링이 가능하도록 설정하였습니다.
  4. 프로젝트 구성 방식:

    • TerragruntTerraform을 활용하여 인프라 코드를 작성하였습니다.
    • 코드의 전체 구조와 소스는 이 GitHub 저장소에서 확인하실 수 있습니다.
    • mongodb 하위의 hcl 파일들은 _envcommon의 각 hcl 파일에 설정된 사항을 불러와 처리합니다.
  5. 기존 리소스 활용:

    • aws_datadata.tf는 AWS에 이미 생성되어 있는 리소스 정보를 불러오는 역할을 합니다.

후기

몽고DB를 코드를 통해 관리하고 있고, ansible을 통해 ec2의 몽고디비 설치 및 replica set 설정또한 자동으로 가능하게 작업을 진행했었고, 작동은 잘되고 있습니다. 이 프로젝트를 통해 현재의 기술 트렌드와 회사의 요구 사항에 맞게 인프라를 최적화할 수 있었습니다. 기존에는 문제점이나 미흡한 부분이 있었지만, 이번 정리를 통해 보다 안정적이고 확장성 있는 인프라를 구성할 수 있었습니다.

특히, 외부 접근이 차단된 private 환경에서 코드로 작업을 하다보니, 몽고디비에 익숙하지 않은 팀원들도 손쉽게 메뉴얼만 보고 만들어 낼수 있게 되었습니다.
회사의 실제 환경에서 이 구성을 사용하면서 Terraform과 Terragrunt의 효율성을 직접 체감할 수 있었습니다. 기존의 인프라 코드를 최적화하고, 보다 효율적으로 관리하는 과정에서 많은 것을 배울 수 있었습니다.

profile
Technical Project Manager / DevOps Engineer / System Engineer

0개의 댓글