Couchbase Capella의 클러스터 온/오프 기능을 사용하면 데이터를 영구적으로 삭제하지 않고도 클러스터를 원활하게 일시 중지하고 다시 시작할 수 있어 클라우드 비용을 최적화하고 운영 효율성을 개선할 수 있습니다.
이 블로그에서는 이 기능이 어떻게 작동하는지, 테라폼을 사용하여 이 기능을 자동화하는 방법을 살펴봅니다.
사용자는 클러스터 가용성을 관리하기 위한 두 가지 옵션이 있습니다:
-
- 온디맨드 켜기/끄기 - 필요에 따라 클러스터를 수동으로 일시 중지하고 다시 시작할 수 있습니다.
- 예약 켜기/끄기 - 특정 날짜 및 시간대에 클러스터를 자동으로 일시 중지/재시작합니다.
클러스터 끄기(일시 중지)
-
- 모든 클러스터 서비스를 중지합니다.
- 데이터, 구성 및 메타데이터를 유지합니다.
- 컴퓨팅 리소스를 확보하여 스토리지를 그대로 유지하면서 비용을 절감할 수 있습니다.
클러스터 켜기(재개)
-
- 클러스터를 일시 중지된 상태에서 복원합니다.
- 서비스를 다시 시작하고 데이터에 다시 액세스할 수 있도록 합니다.
- 클라이언트가 원활하게 다시 연결하고 작업을 재개할 수 있습니다.
클러스터 켜기/끄기 기능을 사용하는 이유는 무엇인가요?
- 컴퓨팅 비용을 절감하고 사용량에 따라 최적화합니다:
- 클러스터가 꺼져 있으면 컴퓨팅 리소스(예: CPU, RAM)에 대한 비용이 청구되지 않으므로 인프라 비용이 크게 절감됩니다.
- 클러스터가 꺼져 있는 경우에는 꺼진 금액(대부분 스토리지 및 관리 비용)만 지불하면 됩니다.
- 유휴 리소스에 대한 비용을 지불하는 대신 실제 사용량에 따라 비용을 조정할 수 있습니다.
- 운영 오버헤드를 줄입니다:
- 수동으로 클러스터를 프로비저닝하고 해체할 필요가 없습니다.
- 사용자는 리소스를 재구성하거나 재배포하지 않고도 일시 중지된 클러스터를 쉽게 재개할 수 있습니다.
- 데이터의 지속성 및 비용 효율적인 개발/테스트:
- 클러스터가 일시 중지된 경우에도 데이터, 스키마(버킷, 범위, 컬렉션), 인덱스, 사용자, 허용 목록 및 백업은 그대로 유지됩니다.
- 작업을 재개할 때 구성이 손실되지 않도록 보장합니다.
- 개발자는 근무 시간 외에 비프로덕션 환경을 일시 중지할 수 있습니다. 이를 통해 CI/CD 파이프라인, 스테이징 또는 UAT 환경에서 불필요한 비용을 방지할 수 있습니다.
비용 최적화
운영 비용을 절감하는 가장 간단하고 효과적인 방법 중 하나는 클러스터를 사용하지 않을 때 클러스터를 끄는 것입니다. 다음 AWS 클러스터의 사용 사례를 살펴보겠습니다. 3개의 노드(데이터, 인덱스, 쿼리) 를 사용하여 개발자 프로 플랜 in 카우치베이스 카펠라, 의 구성으로 2개의 vCPU, 16GB RAM, 디스크 크기 의 50GB, 디스크 유형 GP3, 그리고 IOPS 3000.
이 클러스터를 연중무휴 24시간 온라인 상태로 유지하면 월별 컴퓨팅 비용이 다음과 같이 발생합니다. $1,497.60 종량제 모델에 따라 비용을 지불합니다. 그러나 많은 개발 클러스터는 근무 시간에만 필요합니다. 밤과 같이 매일 12시간 동안 클러스터를 종료하기만 하면 팀은 다음과 같은 비용을 절약할 수 있습니다. $705.60 에 달하며, 이는 47% 컴퓨팅 비용을 절감할 수 있습니다. 이는 클러스터 다운타임을 자동화하여 개발자 생산성에 영향을 주지 않고 클라우드 지출을 최적화할 수 있는 강력한 사례입니다.
여러 클러스터가 있는 환경이나 24시간 가용성이 필요하지 않은 개발 환경에서는 비필수 클러스터의 다운타임을 예약함으로써 예산을 보다 효과적으로 재할당하여 비즈니스 성과에 직접적인 영향을 미치는 분야에 투자할 수 있습니다.
시작하기: Terraform 공급자를 사용하여 온/오프 일정 배포하기
카펠라 테라폼 프로바이더를 사용하면 프로그래밍 방식으로 카펠라 배포를 관리하여 리소스 오케스트레이션을 자동화할 수 있습니다. Terraform Provider를 통해 Capella에서 온/오프 일정을 배포하는 간단한 튜토리얼을 살펴보겠습니다.
클러스터를 끄거나 켜는 방법에 대해 자세히 알아보려면 다음과 같이 하세요. 온디맨드 테라폼 사용, 에 제공된 예제 및 README를 참조하십시오. 이 리포지토리로 이동합니다. 필요에 따라 클러스터를 켜고 끄는 방법에 대한 단계별 개요가 있습니다.
클러스터 켜기/끄기 기능 외에도 필요에 따라 앱 서비스를 켜거나 끌 수도 있습니다. 다음을 참조하세요. 문서 테라폼 공급자 예제 에서 자세한 내용을 확인하세요.
학습 내용
-
- 파일을 구성하고 Terraform 스크립트를 실행하는 데 필요한 명령을 이해하는 단계입니다.
- 공급자를 사용하여 Capella에서 클러스터 켜기/끄기 일정을 배포하는 방법에 대한 단계별 자습서입니다.
전제 조건
시작하기 전에 다음 사항을 확인하세요:
-
- Terraform 버전 >= 1.5.2
- Go 버전 >= 1.2.0
- 카펠라 유료 계정
- 카펠라 클러스터 - 공급자를 사용하여 Couchbase 클러스터를 만들거나 카펠라 UI또는 카펠라 관리 API 를 클릭하고 해당 조직_ID, 프로젝트_ID 및 클러스터_ID 를 클릭하여 켜기/끄기 일정을 만듭니다.
- 인증 API키 - 다음을 사용하여 API 키를 만들 수 있습니다. 카펠라 UI 또는 카펠라 관리 API. 공급자가 관리하는 리소스의 범위에 따라 적절한 역할 집합이 연결된 API 키를 만들어야 합니다.
권한 부여 및 인증 설정에 대한 자세한 내용은 테라폼 문서를 참조하세요. 저장소 그리고 이 블로그 게시물.
1단계: 구성
변수 만들기
- 라는 파일을 만듭니다. variables.tf 를 클릭하고 다음 변수 정의를 추가합니다. 구성 파일 내에서 이러한 변수를 사용할 것입니다.
123456789101112131415변수 "organization_id" {설명 = "카펠라 조직 ID"}변수 "project_id" {설명 = "테라폼을 통해 생성된 프로젝트의 프로젝트 이름"}변수 "cluster_id" {설명 = "카펠라 클러스터 ID"}변수 "auth_token" {설명 = "인증 API 키"} - 라는 파일을 만듭니다. terraform.template.tfvars 를 열고 다음 줄을 추가합니다. 여기서 배포와 관련된 주요 변수의 값을 지정합니다.
1234auth_token = ""조직_ID = ""project_id = ""cluster_id = "" - 라는 파일을 만듭니다. capella.tf 를 클릭하고 다음 구성을 추가하여 프로젝트의 기존 Capella 클러스터에 대한 온/오프 일정을 생성합니다:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889테라폼 {필수_제공자 {카우치베이스-아카펠라 = {출처 = "registry.terraform.io/couchbasecloud/couchbase-capella"}}}# 미리 정의된 변수를 사용하여 카우치베이스 아카펠라 제공자 구성하기공급자 "카우치베이스-카펠라" {인증_토큰 = var.auth_토큰}# 클러스터에 대한 온오프 일정 만들기리소스 "카우치베이스-카펠라_클러스터_온오프_스케줄" "new_cluster_onoff_schedule"{조직_ID = var.조직_ID프로젝트_id = var.project_id클러스터_id = var.cluster_id시간대 = "미국/태평양"일수 = [{일 = "monday"상태 = "custom"에서 = {시간 = 12분 = 30}에 = {시간 = 14분 = 30}},{일 = "화요일"상태 = "custom"에서 = {시간 = 12}에 = {시간 = 19분 = 30}},{일 = "수요일"상태 = "on"},{일 = "목요일"상태 = "custom"에서 = {시간 = 12분 = 30}},{일 = "금요일"상태 = "custom"에서 = {}에 = {시간 = 12분 = 30}},{일 = "토요일"상태 = "custom"에서 = {시간 = 12분 = 30}에 = {시간 = 14}},{일 = "sunday"상태 = "off"}]}# 클러스터 온오프 일정 세부 정보를 출력 변수에 저장합니다.# '테라폼 출력 클러스터_온오프_스케줄' 명령어를 사용하여 볼 수 있습니다.출력 "클러스터_온오프_스케줄" {값 = 카우치베이스-capella_cluster_onoff_schedule.new_cluster_onoff_일정}
2단계: 일정 배포 및 관리
테라폼 공급자 초기화
Terraform은 공급자를 처음 사용할 때 초기화해야 합니다:
1 |
테라폼 init |
테라폼 계획 검토
다음 명령을 사용하여 배포할 리소스를 검토합니다:
1 |
테라폼 계획 -var-파일 테라폼.템플릿.tfvars |
기존 클러스터에 대한 온/오프 스케줄을 만드는 동안 다음과 유사한 출력이 표시됩니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
테라폼 사용됨 의 선택 공급자 에 생성 의 다음 실행 계획. 리소스 작업 는 표시 와 함께 의 다음 기호: + create 테라폼 will 수행 의 다음 작업: # couchbase-capella_cluster_onoff_schedule.new_cluster_onoff_schedule이 생성됩니다. + 리소스 "카우치베이스-카펠라_클러스터_온오프_스케줄" "new_cluster_onoff_schedule" { + 클러스터_id = "1cd2a882-ddc2-497a-a9f9-60bd8da5488f" + 일수 = [ + { + 일 = "monday" + 에서 = { + 시간 = 12 + 분 = 30 } + 상태 = "custom" + 에 = { + 시간 = 14 + 분 = 30 } }, + { + 일 = "화요일" + 에서 = { + 시간 = 12 + 분 = 0 } + 상태 = "custom" + 에 = { + 시간 = 19 + 분 = 30 } }, + { + 일 = "수요일" + 상태 = "on" }, + { + 일 = "목요일" + 에서 = { + 시간 = 12 + 분 = 30 } + 상태 = "custom" }, + { + 일 = "금요일" + 에서 = { + 시간 = 0 + 분 = 0 } + 상태 = "custom" + 에 = { + 시간 = 12 + 분 = 30 } }, + { + 일 = "토요일" + 에서 = { + 시간 = 12 + 분 = 30 } + 상태 = "custom" + 에 = { + 시간 = 14 + 분 = 0 } }, + { + 일 = "sunday" + 상태 = "off" }, ] + 조직_ID = "7a99d00c-f55b-4b39-bc72-1b4cc68ba894" + 프로젝트_id = "9f837bbd-d1f3-476d-ac62-ba65a6548215" + 시간대 = "미국/태평양" } 계획: 1 에 추가, 0 에 변경, 0 에 파괴. 변경 사항 에 출력: + 클러스터_온오프_스케줄 = { + 클러스터_id = "1cd2a882-ddc2-497a-a9f9-60bd8da5488f" + 일수 = [ + { + 일 = "monday" + 에서 = { + 시간 = 12 + 분 = 30 } + 상태 = "custom" + 에 = { + 시간 = 14 + 분 = 30 } }, + { + 일 = "화요일" + 에서 = { + 시간 = 12 + 분 = 0 } + 상태 = "custom" + 에 = { + 시간 = 19 + 분 = 30 } }, + { + 일 = "수요일" + 에서 = null + 상태 = "on" + 에 = null }, + { + 일 = "목요일" + 에서 = { + 시간 = 12 + 분 = 30 } + 상태 = "custom" + 에 = null }, + { + 일 = "금요일" + 에서 = { + 시간 = 0 + 분 = 0 } + 상태 = "custom" + 에 = { + 시간 = 12 + 분 = 30 } }, + { + 일 = "토요일" + 에서 = { + 시간 = 12 + 분 = 30 } + 상태 = "custom" + 에 = { + 시간 = 14 + 분 = 0 } }, + { + 일 = "sunday" + 에서 = null + 상태 = "off" + 에 = null }, ] + 조직_ID = "7a99d00c-f55b-4b39-bc72-1b4cc68ba894" + 프로젝트_id = "9f837bbd-d1f3-476d-ac62-ba65a6548215" + 시간대 = "미국/태평양" } |
테라폼 계획 실행
다음 명령을 사용하여 카우치베이스 아카펠라 리소스를 배포합니다:
1 |
테라폼 신청하기 -var-파일 테라폼.템플릿.tfvars |
계획이 좋으면 "예"를 입력합니다.
참고: 프로젝트를 만들고, 클러스터를 배포하고, 클러스터에 대한 온/오프 일정을 만드는 경우 리소스를 배포하는 데 몇 분 정도 걸립니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
Do 당신 want 에 수행 이 작업? 테라폼 will 수행 의 작업 설명 위. Only 'yes' will be 수락됨 에 승인. 입력 a 값: yes 카우치베이스-capella_cluster_onoff_schedule.new_cluster_onoff_schedule: 만들기... 카우치베이스-capella_cluster_onoff_schedule.new_cluster_onoff_schedule: 생성 완료 이후 0s 신청하기 완료! 리소스: 1 추가, 0 변경됨, 0 파괴됨. 출력: 클러스터_온오프_스케줄 = { "cluster_id" = "1cd2a882-ddc2-497a-a9f9-60bd8da5488f" "days" = 토리스트([ { "day" = "monday" "from" = { "시간" = 12 "분" = 30 } "state" = "custom" "to" = { "시간" = 14 "분" = 30 } }, { "day" = "화요일" "from" = { "시간" = 12 "분" = 0 } "state" = "custom" "to" = { "시간" = 19 "분" = 30 } }, { "day" = "수요일" "from" = null /*객체 */ "state" = "on" "to" = null /*객체 */ }, { "day" = "목요일" "from" = { "시간" = 12 "분" = 30 } "state" = "custom" "to" = null /*객체 */ }, { "day" = "금요일" "from" = { "시간" = 0 "분" = 0 } "state" = "custom" "to" = { "시간" = 12 "분" = 30 } }, { "day" = "토요일" "from" = { "시간" = 12 "분" = 30 } "state" = "custom" "to" = { "시간" = 14 "분" = 0 } }, { "day" = "sunday" "from" = null /*객체 */ "state" = "off" "to" = null /*객체 */ }, ]) "organization_id" = "7a99d00c-f55b-4b39-bc72-1b4cc68ba894" "project_id" = "9f837bbd-d1f3-476d-ac62-ba65a6548215" "시간대" = "미국/태평양" } |
Capella UI에서는 다음과 같이 표시됩니다:
일정 삭제
1 |
테라폼 파괴 -var-파일 테라폼.템플릿.tfvars |
참조
-
- 확인 클러스터 켜기/끄기 일정 테라폼 공급자를 사용합니다.
- 다음 내용을 확인하세요. 온디맨드 클러스터 켜기/끄기 테라폼 공급자를 사용합니다.
- 다음 내용을 확인하세요. 온디맨드 앱 서비스 켜기/끄기 테라폼 공급자를 사용합니다.
- 온디맨드 클러스터 켜기/끄기에 대한 Couchbase 공식 문서 - 안녕하세요. ref
- 클러스터 켜기/끄기 일정에 대한 Couchbase 공식 문서 - 안녕하세요. ref
- 앱 서비스 온/오프 스케줄에 대한 Couchbase 공식 문서 - 앱 서비스 온/오프 일정 - ref