본문으로 건너뛰기

Deployment Topology

Aerospike CE Ecosystem의 배포 환경을 로컬 개발부터 프로덕션까지 단계별로 설명합니다.

환경별 토폴로지

Loading diagram...

로컬 개발 환경

Podman Compose를 사용하여 Cluster Manager와 Aerospike Server를 로컬에서 실행합니다.

구성

서비스이미지포트
Cluster Manager Frontendcluster-manager-frontend3000
Cluster Manager Backendcluster-manager-backend8000
Aerospike Server CEaerospike/aerospike-server-ce3000-3003

실행 방법

# Podman Compose로 전체 스택 실행
podman compose up -d

# 상태 확인
podman compose ps

# 로그 확인
podman compose logs -f aerospike
Podman 사용

이 프로젝트는 Podman을 컨테이너 런타임으로 사용합니다. Rootless 컨테이너, 데몬 불필요, OCI 호환 등의 장점이 있습니다. 자세한 내용은 ADR-0003을 참고하세요.

Kubernetes 배포 (ACKO)

ACKO(Aerospike CE Kubernetes Operator)를 통해 AerospikeCluster CRD로 선언적 배포를 수행합니다.

배포 템플릿

1. minimal (개발용)

가장 간단한 구성으로, 단일 Aerospike Pod를 배포합니다.

apiVersion: acko.aerospike-ce-ecosystem.io/v1alpha1
kind: AerospikeCluster
metadata:
name: aerospike-dev
spec:
size: 1
image: aerospike/aerospike-server-ce:8.1
aerospikeConfig:
namespaces:
- name: test
memorySize: 1Gi
replicationFactor: 1
storage:
type: memory
항목
용도개발, 테스트
노드 수1
Rack 구성없음
스토리지Memory
Replication Factor1

2. soft-rack (스테이징)

1개의 Kubernetes Node에 여러 Aerospike Pod를 배포하되, 논리적 Rack으로 분리합니다.

apiVersion: acko.aerospike-ce-ecosystem.io/v1alpha1
kind: AerospikeCluster
metadata:
name: aerospike-stage
spec:
size: 4
image: aerospike/aerospike-server-ce:8.1
rackConfig:
racks:
- id: 1
- id: 2
aerospikeConfig:
namespaces:
- name: app
memorySize: 4Gi
replicationFactor: 2
storage:
type: device
devices:
- /dev/sdb
항목
용도스테이징, 통합 테스트
노드 수1 Node, N Pod
Rack 구성논리적 Rack (soft)
스토리지Device (PVC)
Replication Factor2

3. hard-rack (프로덕션)

N개의 Kubernetes Node에 Aerospike Pod를 분산 배포하여 물리적 장애 도메인을 보장합니다.

apiVersion: acko.aerospike-ce-ecosystem.io/v1alpha1
kind: AerospikeCluster
metadata:
name: aerospike-prod
spec:
size: 6
image: aerospike/aerospike-server-ce:8.1
rackConfig:
racks:
- id: 1
zone: zone-a
nodeAffinity:
matchExpressions:
- key: topology.kubernetes.io/zone
operator: In
values: [zone-a]
- id: 2
zone: zone-b
nodeAffinity:
matchExpressions:
- key: topology.kubernetes.io/zone
operator: In
values: [zone-b]
aerospikeConfig:
namespaces:
- name: app
memorySize: 8Gi
replicationFactor: 2
storage:
type: device
devices:
- /dev/sdb
항목
용도프로덕션
노드 수N Node, N Pod
Rack 구성물리적 Rack (hard), Zone Affinity
스토리지Device (PVC)
Replication Factor2

템플릿 비교

Loading diagram...

Bare Metal 배포 (aerospike-py)

Kubernetes 없이 물리 서버에 직접 Aerospike CE를 설치하고, aerospike-py로 연결하는 구조입니다.

Loading diagram...

구성

항목
용도K8s 없는 환경, 레거시 인프라
설치 방법패키지 매니저 또는 tarball
연결 방법aerospike-py Client(hosts=[...])
Rack 구성aerospike.conf에서 직접 설정
MetricsAerospike Prometheus Exporter

연결 예시

from aerospike_py import Client

client = Client(hosts=[
("server1.example.com", 3000),
("server2.example.com", 3000),
("server3.example.com", 3000),
])

K8s vs Bare Metal 비교

Kubernetes (ACKO)Bare Metal (aerospike-py)
배포 방식kubectl apply CRD수동 설치 / 패키지
관리 도구ACKO Operator + Cluster Manageraerospike-py 직접 연결
Rack 설정CRD rackConfig 자동aerospike.conf 수동
스케일링CR size 변경 → 자동서버 추가 후 수동 Join
모니터링Pod metrics exporter + ServiceMonitorPrometheus Exporter 수동 설정
Rolling RestartACKO 자동 관리수동 순차 재시작

Aerospike CE 제약 사항

Aerospike Community Edition(CE)에는 Enterprise Edition(EE) 대비 다음과 같은 제약이 있습니다. ACKO는 이 제약 사항을 Admission Webhook에서 검증합니다.

제약 사항CE 제한EE
최대 노드 수8개무제한
최대 Namespace 수2개무제한
XDR (Cross-Datacenter Replication)불가가능
TLS불가가능
Security (인증/권한)불가가능
Feature Key불필요필수
CE 제약 주의

CR에 security, tls, xdr 설정을 포함하면 Aerospike CE Pod가 시작에 실패합니다. ACKO의 Admission Webhook이 이를 사전에 차단합니다.

feature-key-file 설정도 CE에서는 불필요하며, 포함 시 Pod crash가 발생합니다.