Skip to content

ADR-06: PaaS 우선 인프라 전략 ​

English Version

날짜작성자리포지토리
2024-12-17@KubrickCodeAll

배경 ​

문제 정의 ​

모든 소프트웨어 팀은 근본적인 인프라 결정에 직면한다: 운영 책임을 얼마나 직접 맡을 것인가 vs 관리형 플랫폼에 위임할 것인가. 이 결정은 다음에 큰 영향을 미친다:

  1. 리소스 배분: 인프라 vs 제품 개발에 투입하는 시간
  2. 필요 역량: 팀 내 DevOps 전문성 요구 수준
  3. 비용 구조: 운영 비용 vs 플랫폼 수수료
  4. 아키텍처 유연성: 커스터마이징 가능 범위 vs 플랫폼 제약

인프라 스펙트럼 ​

접근법운영 부담유연성대규모 비용
베어메탈매우 높음최대가장 낮음
IaaS (VM)높음높음낮음
Kubernetes중상높음중간
PaaS (관리형)낮음제한적높음
서버리스최소가장 제한변동적

핵심 의사결정 요소 ​

  • 팀 규모 및 구성: 가용한 DevOps 전문성
  • 제품 성숙도: 요구사항과 아키텍처의 안정성
  • 트래픽 패턴: 워크로드의 예측 가능성과 규모
  • 시간 제약: 출시 속도 요구사항
  • 예산 모델: CapEx vs OpEx 선호도

핵심 질문 ​

전담 인프라 인력이 없는 팀에서, 운영 안정성을 유지하면서 제품 개발 속도를 극대화하려면 인프라 전략을 어떻게 접근해야 하는가?

결정 ​

PaaS 우선 인프라 전략 채택. 자체 관리 인프라보다 관리형 서비스 우선.

핵심 원칙:

  • 운영 오버헤드 최소화: 인프라 관리를 플랫폼 제공자에게 위임
  • 제품에 집중: 엔지니어링 시간을 인프라가 아닌 제품 기능에 투입
  • 트레이드오프 수용: 복잡도 감소 대가로 더 높은 단위 비용 인정
  • 이식성 유지: 컨테이너화된 워크로드로 마이그레이션 옵션 확보

검토한 옵션 ​

옵션 A: PaaS / 관리형 서비스 (선택) ​

인프라 운영을 처리하는 관리형 플랫폼에 서비스 배포.

장점:

  • 최소한의 운영: 서버 패치, OS 업데이트, 인프라 유지보수 불필요
  • 빠른 배포: Git-push 배포 워크플로우, 즉시 롤백
  • 내장 기능: 통합 로깅, 모니터링, SSL 인증서, CDN
  • 자동 스케일링: 수동 개입 없이 트래픽 급증 처리
  • 개발자 경험: 단순한 멘탈 모델, 낮은 인지 부하
  • 예측 가능한 비용: 명확한 가격 모델, 예상치 못한 인프라 비용 없음

단점:

  • 높은 단위 비용: 원시 컴퓨팅 대비 관리형 서비스 프리미엄
  • 플랫폼 제약: 제한된 커스터마이징, 고정된 런타임 환경
  • 벤더 종속 리스크: 플랫폼 특화 기능이 전환 비용 발생
  • 제한된 제어: 인프라 수준 최적화 불가
  • 이그레스 비용: 데이터 전송 비용 누적 가능
  • 기능 제한: 고급 네트워킹, 커스텀 커널 등 사용 불가

옵션 B: IaaS 직접 관리 ​

클라우드 제공자의 가상 머신을 프로비저닝하고 인프라를 직접 관리.

장점:

  • 완전한 제어: OS, 네트워킹, 보안의 완전한 커스터마이징
  • 비용 효율: 특히 대규모에서 낮은 단위 비용
  • 플랫폼 제약 없음: 어떤 소프트웨어 스택, 어떤 설정도 가능
  • 최적화 가능: 특정 워크로드 특성에 맞춤 튜닝
  • 멀티 클라우드 준비: 표준 VM은 제공자 간 이식 가능

단점:

  • 운영 부담: 패칭, 모니터링, 보안, 백업, 스케일링
  • 전문성 필요: 전담 DevOps 지식 필요
  • 느린 이터레이션: 더 많은 설정과 유지보수 오버헤드
  • 보안 책임: 하드닝과 컴플라이언스에 대한 전적인 책임
  • 용량 계획: 리소스를 미리 예측하고 프로비저닝해야 함

옵션 C: Kubernetes (관리형 또는 자체 관리) ​

Kubernetes 클러스터에 컨테이너화된 워크로드 배포.

장점:

  • 오케스트레이션 파워: 고급 스케줄링, 자가 치유, 롤링 업데이트
  • 이식성: 동일한 매니페스트가 어떤 Kubernetes 클러스터에서도 작동
  • 생태계: 서비스 메시, 관측성, GitOps를 위한 풍부한 도구
  • 스케일 효율: 워크로드의 최적 빈 패킹
  • 업계 표준: 광범위한 채택, 큰 인재 풀

단점:

  • 복잡성: 가파른 학습 곡선, 많은 움직이는 부품
  • 운영 오버헤드: 관리형 Kubernetes도 상당한 전문성 필요
  • 리소스 오버헤드: 컨트롤 플레인 비용, 최소 클러스터 크기 요구사항
  • 소규모에서 과잉: 상당한 규모까지 이점이 실현되지 않음
  • YAML 난립: 클러스터 크기에 따라 설정 복잡도 증가

결과 ​

긍정적 ​

  1. 최대화된 제품 집중

    • 엔지니어링 시간을 인프라가 아닌 기능에 투입
    • 운영 방해 없이 빠른 이터레이션 사이클
    • 개발과 운영 간 컨텍스트 스위칭 감소
  2. 낮은 진입 장벽

    • 시작에 DevOps 전문성 불필요
    • 새 팀원이 즉시 생산적
    • 문서와 지원이 쉽게 이용 가능
  3. 운영 안정성

    • 플랫폼 제공자가 가용성과 이중화 처리
    • 자동 페일오버와 복구
    • 전문 인프라 팀 없이 전문가급 인프라
  4. 예측 가능한 속도

    • 배포 복잡성 제거
    • 스테이징과 프로덕션 간 일관된 환경
    • 내장 CI/CD 통합

부정적 ​

  1. 비용 프리미엄

    • 원시 인프라보다 높은 리소스당 비용
    • 사용량에 따라 선형 증가 (볼륨 할인 없음)
    • 완화: 사용량 모니터링, 애플리케이션 효율 최적화, 규모 임계점에서 재평가
  2. 벤더 종속

    • 플랫폼 특화 기능이 마이그레이션 마찰 발생
    • 가격 변경이 예상치 못하게 예산에 영향
    • 완화: 워크로드 컨테이너화, 플랫폼 특화 추상화 회피, 탈출 전략 유지
  3. 제한된 커스터마이징

    • 특정 요구에 맞게 인프라 튜닝 불가
    • 고정된 런타임 환경과 제약
    • 완화: 충분한 유연성 있는 플랫폼 선택, 블로커를 플랫폼 제공자에 에스컬레이션
  4. 아키텍처 제약

    • 일부 패턴이 PaaS에서 불가능하거나 비용이 높음
    • 네트워크 토폴로지 제한
    • 완화: 플랫폼 제약 내에서 설계, 엣지 케이스에 대안 평가

기술적 영향 ​

영역영향
배포Git-push 워크플로우, 플랫폼 네이티브 CI/CD
모니터링플랫폼 제공 관측성, 외부 APM 필요할 수 있음
스케일링자동 수평 스케일링, 수직 스케일링은 제한적일 수 있음
네트워킹플랫폼 관리 로드 밸런싱, 커스텀 네트워킹 제한
데이터 영속성관리형 데이터베이스 권장, 스테이트풀 워크로드 제약
비용 모델사용량 기반 가격, 예측 가능하나 잠재적으로 높음
마이그레이션컨테이너화가 다른 플랫폼으로의 이식성 보존

재고가 필요한 시점 ​

  • 인프라 비용이 동등한 전담 DevOps 인건비를 초과할 때
  • 플랫폼 제약이 핵심 기능 구현을 막을 때
  • 트래픽 패턴이 사용량 기반 가격을 비효율적으로 만들 때
  • 팀이 전담 인프라 전문성을 갖추게 될 때
  • 컴플라이언스 요구사항이 인프라 수준 제어를 요구할 때
  • 성능 요구사항이 플랫폼 역량을 초과할 때

Open-source test coverage insights