수평 확장은 애플리케이션의 새로운 인스턴스(예: 새로운 서버 또는 컨테이너)를 추가하여 부하를 분산시키는 것입니다. 수직 확장은 하나의 서버에서 리소스를 증가시키는 것입니다(예: CPU, RAM, 디스크 추가).
접근 방식을 선택할 때 다음 기준을 고려합니다:
Kubernetes를 통한 수평 확장의 예:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 5 # 포드 수 - 수평 확장 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: myimage:v1
주요 특징:
수평 확장이 항상 수직 확장보다 낫습니까?
아니요. 특정 작업(예: 모놀리식 또는 상태 저장 서비스)에 대해서는 수직 확장이 더 쉽고 효율적일 수 있습니다.
수평 확장을 위해 애플리케이션에 추가 수정이 필요하지 않습니까?
아니요. 애플리케이션은 stateless여야 하며, 세션 공유를 지원해야(예: 외부 캐시를 통해) 하고 확장에 올바르게 반응해야 합니다.
데이터베이스 확장은 항상 수평으로 수행됩니까?
아니요. 모든 DBMS가 쉽게 수평 확장되는 것은 아닙니다. 전통적인 관계형 데이터베이스는 종종 수직으로 확장되거나 샤딩/복제를 사용합니다.