Logo GH

코드로서의 인프라

(섹션: 기술 및 인프라)

간략한 요약

Terraform은 VPC/서브 넷, 밸런서, 데이터베이스/클러스터, 대기열/버스, KMS/비밀, Kubernetes 클러스터, CDN과 같은 iGaming 클라우드 인프라의 재현 가능하고 검증 가능한 생성을위한 기본 IaC 도구입니다. 성공은 모듈 식 아키텍처, 엄격한 상태 및 잠금 정책, 릴리스에 대한 GitOps 접근 방식, Policy-as-Code, 자동화 된 테스트 및 투명한 FinOps에 있습니다.

1) iGaming에 대한 IaC 원칙

선언: 코드별로 설명 된 인프라; 수동 단계가 없습니다.
이념성: 반복되는 '적용' 은 동일한 결과를 제공합니다.
환경 분리: 매개 변수가있는 단일 코드에서 'dev/stage/prod'.
모듈 구성: VPC, DB, 대기열, K8, 모니터링 용 단일 모듈 카탈로그.
기본 보안: 개인 서브 넷, mSL, 최소 IAM 권한.
관찰 및 비용: 메트릭/알림/예산도 Terraform에 있습니다.

2) 저장소 구조

모노 레포 변형 (예):

iac/
modules/
vpc/
mysql/
kafka/
eks_aks_gke/
redis/
monitoring/
envs/
prod/
eu-west/
main. tf variables. tf backend. tf stage/
eu-west/
...
dev/
...
policies/
opa/
sentinel/
pipelines/
ci_cd/

대안은 모듈 식 리포 (각 모듈마다 별도의 저장소) + 소비자입니다.

3) 기본 모듈성 (HCL 예)

VPC 모듈 (모듈/vpc/main. tf):
hcl variable "name" {}
variable "cidr" {}
variable "az_count" { default = 3 }

cloud provider resources (summarized)
resource "cloud_vpc" "this" { name = var. name cidr = var. cidr }
resource "cloud_subnet" "private" {
count = var. az_count vpc_id = cloud_vpc. this. id type  = "private"
}
output "vpc_id" { value = cloud_vpc. this. id }
output "private_subnets" { value = cloud_subnet. private[].id }
모듈 소비 (envs/prod/eu-west/main). tf):
hcl module "vpc" {
source = "../../modules/vpc"
name  = "prod-eu-west"
cidr  = "10. 20. 0. 0/16"
}

module "mysql" {
source = "../../modules/mysql"
name  = "payments"
vpc_id = module. vpc. vpc_id subnets = module. vpc. private_subnets pitr  = true size  = "r6g. large"
kms_key = module. kms. key_id
}

4) 국가 관리 및 잠금

원격 백엔드 (예: 객체 스토리지) + 잠금 (DynamoDB/Blob-lock) -' 적용 '레이스를 방지합니다.
백엔드 버전 지정 및 상태 암호화 (KMS).
액세스 규칙: CI/CD 및 "인프라 소유자" 만 '적용' 권한이 있습니다. 개발자- '계획'.

작업 공간 대 환경 디렉토리:
  • 작업 공간은 유사한 환경에 편리합니다 (복제)
  • 명확하게 격리 된 구성 및 다른 토폴로지를위한 별도의 디렉토리.
백엔드 예. tf (일반화):
hcl terraform {
backend "s3" {
bucket     = "iac-state-prod"
key      = "eu-west/terraform. tfstate"
region     = "eu-west-1"
dynamodb_table = "iac-state-locks"
encrypt    = true
}
}

5) 변수, 비밀 및 민감한 데이터

변수. 환경에 대한 tf + .tfvars; 민감한 = 개인 가치에 대한 참이다.
비밀은 Git에 저장되지 않습니다. 데이터 소스 또는 공급자를 통해 비밀 관리자/KMS를 사용하십시오.
기본 암호화: 볼륨/백업/스냅 샷/데이터베이스 용.
회전: 키와 암호가 자동으로 회전됩니다.

hcl variable "db_password" {
type   = string sensitive = true
}

data "external_secret" "db_password" {
conceptual secret source name = "prod/payments/db_password"
}

6) 테라 폼 용 GitOps 및 CI/CD

PR 흐름: 'terraform fmt' → 'init' → 'validate' → 'tflint' → 'plan' 은 PR → 수동 승인 → CI의 '적용' 을 출력합니다.

환경 프로모션: '단계' 에서 먼저 변경 한 다음 'prod' 에서 태그/병합

로그 및 아티팩트: 계획 및 디파 저장, 아티팩트 보고서.

CI (조각) 예:
yaml steps:
- run: terraform fmt -check
- run: terraform init -upgrade
- run: terraform validate
- run: tflint --enable-rule=terraform_standard_module_structure
- run: terraform plan -var-file=envs/stage/eu-west/vars. tfvars -out tfplan
- run: terraform show -no-color tfplan > plan. txt after April
- run: terraform apply tfplan

7) 코드 정책 (OPA/Sentinel)

목적: 안전하지 않거나 비싼 변경 사항을 자동으로 거

정책의 예:
  • 리소스 암호화가 필요합니다
  • 공개 IP-예외 목록을 통해서만.
  • 환경별로 인스턴스/클러스터의 크기를 제한합니다.
  • 필요한 태그: 'env', 'owner', 'cost _ center'.

OPA (rego) 규칙의 기본 개념은 다음과 같습니다

rego deny[msg] {
input. resource. type == "db_instance"
not input. resource. encrypted msg:= "DB must be encrypted at rest"
}

8) IaC 테스트

terraform validate-Basic 구문 검사.
tflint-스타일/안티 패턴/제공자-특이성.
Infracost-PR의 예비 비용 추정치.
Terratest-통합 테스트 (Go): 스탠드를 들어 올리거나 확인/철거하십시오.
Kitchen-Terraform-리소스 불변량을 사용한 단위 테스트.
드리프트 감지: 읽기 전용 및 동기화되지 않은 경고에서주기적인 '계획'.

9) iGaming 플랫폼의 일반적인 모듈

네트워크

VPC/VNets/VPC-Peering, 개인/공용 서브 넷, 라우팅, GPS/방화벽, 보안 그룹/NSG.
DNA/Failover: Route-차이나 литик달러, 건강 점검, 대기 시간 기반 라우팅.

데이터

MySQL/PostgreSQL: Multi-AZ, PITR, 'auto _ minor _ version _ upground'.
Redis/Memcashed: 다중 AZ, 스냅 샷/TTL 정책.
데이터 레이크/레이크 하우스: 버킷, 정책, 테이블 (카탈로그/메타 스터).
ClickHouse/OLAP 클러스터: 예리함/복제, 디스크 정책.

버스/대기열

Kafka/Pulsar/관리 변형, ACL, 보존, 레지스트리 체계.

K8

EKS/AKS/GKE ² NodeGroups, 오염/공차, IRSA/워크로드 아이덴티티, Ingress/Service Mesh, 오토 스케일.
외부 비밀 통합, Prometheus/Grafana, Loki/ELK, 인증 관리자.

가장자리/CDNName

그리고 우리는 그들을 도울 수 있습니다.

10) 변형/출력/현지인-연습

계산 된 값 (마스크, 이름) 에 대한 로컬

모듈 API로 출력: 최소 필요.
리소스 이름 '<env> - <region> - <domain> - <component>'.
계정: 'env', 'owner', 'cost _ center', 'criticility', 'pii'.

hcl locals {
name_prefix = "${var. env}-${var. region}-${var. service}"
}
resource "cloud_lb" "api" { name = "${locals. name_prefix}-lb" }

11) 멀티 클라우드 및 지역

동일한 모듈을 통한 추상화, 'aws', 'azurerm', 'googlele'.
지역 간 자원 (DR/복제) 을위한 공급자 별칭.
서비스 차이는 모듈의 조건과 phicheflags에 의해 닫힙니다.
데이터는 지역별 개별 버킷/DB (EU/TR/LATAM) 로 현지화됩니다.

hcl provider "aws" { region = "eu-west-1" alias = "eu" }
provider "aws" { region = "sa-east-1" alias = "latam" }

12) 코드로 관찰 및 경고

대시 보드, 경고 규칙 (p95/p99, 오류율, CPU/IO), SLO 모니터.
액세스/감사 로그 (WORM), 비용 지표 (태그/네임 스페이스 별).
인시던트: 채팅 알림, 리소스 주석의 런북 탭.

13) FinOps: 통제되는 가치

PR + 예산 경고의 불확실성.
환경 할당량: 인스턴스/창고 클래스 제한.
자동 위생: 개발 리소스를위한 TTL, 버킷/로그 보유 정책.
중요하지 않은 작업에 대한 스팟/선점 가능, Prod 예약.

14) 마이그레이션/변경 프로세스

법적 자원에 대한 '테라 폼 수입' (바로 다음- '계획 '/' 적용').
파괴를 피하기 위해 리팩토링시 '이동 '/' 제거 된' 블록.
제로 다운 타임 변경: 임계 윤곽 (DB/밸런서) 을위한 이중 롤링 (청록색).
단계별 PR: 새로운 리소스 그룹이 먼저 트래픽 한 다음 해체합니다.

15) 안전 및 준수

최소 권한: 모듈은 필요한 권리 만 만들고 사용하지 마십시오. "

모든 곳의 KMS: 볼륨/백업/비밀/상태 암호화.
CI에서 Terraform/IaC 스캔 (IaC 용 SAST).
Git 외부의 비밀: 비밀 관리자 만; 회전 및 액세스 감사.
PII 영역: 액세스 태그/정책, 지역 간 수출 금지.

16) 샘플 템플릿

PITR (아이디어) 이있는 관계 데이터베이스:
hcl module "db" {
source   = "../../modules/mysql"
name    = "wallet"
multi_az  = true storage_gb = 500 pitr    = true backup_retention_days = 14 deletion_protection  = true
}
모니터링 및 SLO 경고:
hcl module "slo_latency" {
source = "../../modules/monitoring/slo"
name  = "api-latency-p95"
target_ms = 250 window  = "30m"
alert_channels = ["chatops#incidents"]
}
WAF/CNC 분포:
hcl module "cdn" {
source = "../../modules/cdn"
domain = "example. com"
waf_enabled = true cache_ttl  = 600
}

17) Terraform/IaC 구현 점검표

1. 저장소 구조 (모듈 monorepos + 환경 디렉토리) 를 선택하십시오.
2. 잠금 및 암호화 (KMS) 로 원격 상태를 설정합니다.
3. GitOps 파이프 라인을 입력하십시오: fmt/validate/tflint/plan → review → 적용됩니다.
4. 모듈 라이브러리 (VPC, K8, DB, 대기열, 모니터링, CDN과 비밀) 를 만듭니다.
5. CI에서 OPA/Sentinel (Policy-as-Code) 및 IaC 스캔 사용.
6. 관리자, 키 - KMS, 회전을 통해 비밀을 구성합니다.
7. 테스트 추가: 중요한 모듈에 대한 Terratest, PR의 Infracost.
8. SLO/경고 및 "코드로 모니터링" 을 정의하십시오.
9. 중요하지 않은 리소스에 대한 할당량/예산 및 TTL을 설정합니다.
10. 단계적으로 마이그레이션을 계획하십시오 (청록색/2 레일).

18) 안티 패턴

Terraform → 드리프트 이외의 리소스의 수동 "눈송이" 및 '적용' 시 사고.
자물쇠없이 국가 저장 → 경주 및 일관성 상실.
암호화없이 Git/in '.tfvars' 의 비밀.
수백 개의 자원에 대한 "하나님 모듈" → 테스트/재사용 불가능.
PR없이 랩톱에서 음식으로 직접 '적용' 하고 검토 할 계획입니다.
코드 정책/스캔 무시 → 누출, 공공 IP/버킷.
Infracost/예산 부족 → 예측할 수없는 비용.

요약

Terraform/IaC는 iGaming 플랫폼의 재현성, 속도 및 제어 된 안전/비용을 제공합니다. 모듈 식 설계, 엄격한 상태 및 GitOps, 보안 정책, 자동 테스트 및 FinOps는 인프라를 신뢰할 수있는 "파이프 라인" 으로 전환합니다. 다운 타임, 예측 가능한 p99 및 피크 토너먼트 및 규제 요구 사항에 대한 준비 상태입니다.

Contact

문의하기

질문이나 지원이 필요하시면 언제든지 연락하십시오.우리는 항상 도울 준비가 되어 있습니다!

Telegram
@Gamble_GC
통합 시작

Email — 필수. Telegram 또는 WhatsApp — 선택 사항.

이름 선택 사항
Email 선택 사항
제목 선택 사항
메시지 선택 사항
Telegram 선택 사항
@
Telegram을 입력하시면 Email과 함께 Telegram에서도 답변드립니다.
WhatsApp 선택 사항
형식: +국가 코드 + 번호 (예: +82XXXXXXXXX).

버튼을 클릭하면 데이터 처리에 동의하는 것으로 간주됩니다.