Cloud & Infrastructure 의사결정

클라우드를 고르기 전에 워크로드부터 분류해야 하는 이유

핵심 답변

클라우드 사업자를 비교하기 전에 워크로드를 업무 결과, 실패 영향, 데이터, 지연, 의존성, 운영 책임으로 분류하면 부적합한 환경을 먼저 제외하고 같은 조건에서 후보 사업자를 비교할 수 있다.

서로 다른 워크로드가 조건에 따라 인프라 영역으로 분류되는 구조

클라우드를 고르기 전에 워크로드부터 분류해야 한다. “우리 회사에는 어느 클라우드가 맞을까?”라는 질문은 판단 단위가 너무 크다. 한 회사 안에도 고객 요청을 실시간으로 처리하는 애플리케이션, 상태를 가진 데이터베이스, 정해진 시간에 실행되는 일괄 작업, 파일 저장소, 사내 관리시스템이 함께 존재한다. 같은 회사의 시스템이어도 중단됐을 때의 영향과 데이터가 이동할 수 있는 범위, 요구 지연시간, 운영 책임은 서로 다르다. AWS와 Microsoft의 아키텍처 지침도 워크로드를 하나의 서버나 회사 전체가 아니라 사업가치를 제공하는 구성요소의 집합으로 다룬다. (AWS, Microsoft)

따라서 사업자 이름보다 먼저 정해야 할 것은 실패했을 때 어떤 일이 생기는지, 어떤 데이터가 어디로 이동하는지, 사용자가 어디에 있는지, 어떤 시스템과 결합돼 있는지, 누가 운영할 것인지다. 이 조건으로 불가능한 환경을 먼저 제외하고 팀이 감당할 수 있는 운영 모델을 고른 뒤, 마지막에 남은 클라우드 사업자를 비교해야 한다. NIST의 참조 아키텍처가 서비스 모델에 따라 제공자와 이용자의 통제·관리 책임이 달라진다고 설명하는 이유도 여기에 있다. (NIST)

분류가 끝났을 때 나와야 하는 결과는 ‘최고의 클라우드’가 아니다. 각 워크로드별로 반드시 충족해야 할 조건, 협상 가능한 선호, 아직 확인하지 못한 사항이 적힌 Placement Card가 남아야 한다. 결정에 영향을 줄 Unknown이 남아 있다면 가격표와 기능표를 열어도 비교를 시작하기에는 이르다.

‘회사에 맞는 클라우드’를 찾으면 안 되는 이유

회사 단위 선택은 여러 워크로드가 같은 조건을 가진다고 전제한다. 실제로는 그렇지 않은 경우가 많다.

외부 고객이 사용하는 공개 웹서비스는 갑작스러운 트래픽과 사용자 지연이 중요할 수 있다. 야간에만 실행되는 데이터 집계 작업은 실행 시간대와 내부 데이터 의존성이 더 중요할 수 있다. 사내 관리시스템은 동시 사용자가 적어도 권한, 감사, 기존 업무시스템과의 연결이 우선일 수 있다. 데이터베이스는 애플리케이션보다 이동과 복구의 부담이 클 수 있다.

이들을 한 묶음으로 두고 “AWS를 유지할까, 다른 CSP로 옮길까”를 물으면 서로 다른 요구가 하나의 평균값으로 사라진다. 그 결과는 흔히 두 방향 중 하나로 흐른다.

기능이 가장 많은 사업자를 고른 뒤 실제로 쓰지 않는 복잡성까지 떠안거나, 월 기본요금이 낮은 상품을 고른 뒤 데이터 이동·지원·운영 인력·장애 대응에서 예상하지 못한 부담을 만나는 것이다. 어느 쪽이든 문제는 사업자가 아니라, 비교 전에 워크로드의 조건을 분리하지 않았다는 데 있다.

워크로드는 어떤 단위로 나눠야 할까

워크로드는 독립적으로 목적과 책임, 실패 영향을 판단할 수 있는 실행 단위로 잡는 것이 좋다. 반드시 서버 한 대와 일치할 필요는 없다. 한 서버에 여러 워크로드가 함께 있을 수 있고 하나의 워크로드가 여러 서버와 관리형 서비스에 걸쳐 있을 수도 있다.

AWS의 Well-Architected 범위 지침은 검토 전에 워크로드의 소유자와 목적, 중단됐을 때의 영향, 경계, 외부 의존성을 먼저 확인하도록 한다. 이 질문들은 인프라 자산 목록보다 사업 결과와 책임 경계를 먼저 보게 한다. (AWS)

다음 조건 중 하나가 실질적으로 다르면 별도 워크로드로 분리할 후보가 된다.

  • 업무 소유자나 최종 승인자가 다르다.
  • 별도로 시작·중단·변경하거나 폐기할 수 있다.
  • 다루는 데이터의 민감도, 위치, 보존 조건이 다르다.
  • 중단 영향이나 운영 지원 시간이 다르다.
  • 사용자 지역, 지연 요구, 수요 패턴, 외부 의존성이 다르다.

반대로 목적과 소유자, 데이터, 실패 영향, 운영 방식이 모두 같고 항상 함께 변경되는 구성요소라면 하나의 워크로드로 묶을 수 있다. 처음부터 마이크로서비스 단위로 잘게 나누거나, 현재 서버 목록을 그대로 워크로드 목록으로 복사할 필요는 없다.

Workload Classification Matrix

아래 매트릭스는 NIST의 역할·통제 모델과 AWS·Azure·Google Cloud의 아키텍처 검토 항목을 하나의 배치 의사결정 순서로 재구성한 것이다. 제품 기능을 비교하기 위한 표가 아니라, 비교에 들어가기 전 요구사항을 정리하는 표다. (Microsoft, Google Cloud)

분류 축 카드에 기록할 질문 대표적인 기록 값 배치 판단에 쓰는 방식
업무 목적과 소유자 이 워크로드가 만드는 사업 결과는 무엇이며 누가 최종 책임을 지는가? 고객 주문 처리, 내부 보고 파일 배포 / 업무 Owner / 기술 Owner 중단 영향과 승인 책임을 명확히 한다. Owner가 없으면 최종 배치를 승인하지 않는다.
경계와 수명주기 무엇과 함께 변경되고 무엇은 독립적으로 중단할 수 있는가? 독립 배포 가능, 공동 변경, 한시적 프로젝트, 상시 운영 서로 다른 수명주기와 변경 주기를 가진 구성을 분리한다.
상호작용과 상태 사용자가 즉시 응답을 기다리는가, 일정 시간 뒤 처리해도 되는가? 실행 중 상태를 보존하는가? Interactive, Batch, Event-driven / Stateful, Stateless, Mixed 같은 장애와 확장 방식으로 다룰 수 있는지를 판단한다. 여기서는 구현 방식을 고르지 않는다.
수요와 성능 부하가 일정한가, 급격히 변하는가? 특수 연산 자원이 필요한가? 일정, 돌발, 계절성, 예약 실행 / 지연 민감 / GPU 필요·불필요·미확인 후보 환경이 요구 형태를 지원하는지 확인한다. 구체적인 서버 용량은 별도 측정 대상으로 남긴다.
사용자와 지역 사용자는 어디에 있으며 어떤 지연까지 허용되는가? 국내 사용자, 다지역 사용자, 내부망 사용자 / 지연 요구 확정·미확정 Region과 네트워크 후보를 좁힌다. 단순히 사용자가 국내에 있다는 이유만으로 데이터 위치 요구를 추정하지 않는다.
데이터와 이동 어떤 데이터를 읽고 쓰며 어디에서 어디로 이동하는가? 데이터 등급, 저장 위치, 처리 위치, 보존 조건, 이동 경로 보안·법무·계약·내부 정책 담당자가 확정한 조건만 Hard Constraint로 사용한다.
의존성과 네트워크 어떤 DB·인증·외부 API·온프레미스 시스템에 의존하는가? 강한 결합, 느슨한 결합, 동기 호출, 비동기 전달 / Ingress·Egress 경로 지연, 연결 안정성, 데이터 이동, 장애 전파 가능성을 확인한다. 세부 네트워크 비용 계산은 별도 단계다.
실패 영향과 복구 요구 중단되면 고객·매출·업무에 어떤 영향이 있으며 어느 수준까지 허용되는가? 즉시 차단, 제한적 운영 가능, 다음 업무 시간 복구 가능 / 승인된 허용 중단·손실 수준 복구 요구가 후보 환경을 제한하는지만 기록한다. RTO·RPO 산정법이나 복구 설계는 이 글의 범위가 아니다.
운영 역량과 책임 누가 패치·모니터링·장애 대응·지원 요청을 담당하는가? 24시간 대응, 업무 시간 대응, 외부 운영, 역할 미정 팀이 실제로 감당할 수 없는 운영 복잡성을 후보에서 제외한다.
비용 구조와 이탈 어떤 사용량이 비용을 움직이며 환경을 바꿀 때 무엇을 옮겨야 하는가? 상시 사용, 유휴 시간, 데이터 이동, 지원, 라이선스 / 이식성 확인·미확인 가장 싼 월 요금을 찾기보다 주요 비용 원인과 Exit 제약을 확인한다. Unit Economics나 Migration TCO는 별도 분석으로 넘긴다.

이 표의 값은 추측으로 채우지 않는다. 각 항목에는 Confirmed 또는 Unknown을 붙이고 확인된 값에는 근거와 승인자를 남긴다.

특히 “규정상 국내에 있어야 한다”, “보안을 위해 전용망이 필수다”, “24시간 지원이 반드시 필요하다”와 같은 문장은 누가 어떤 법률·계약·내부 정책·업무 요구를 근거로 확정했는지 확인해야 한다. 특정 산업에 적용되는 데이터 위치나 규제 결론을 다른 조직에 그대로 옮겨서는 안 된다.

Hard Constraint / Preference / Unknown을 섞지 않는다

요구사항 목록이 있어도 모든 항목을 같은 무게로 비교하면 결정이 왜곡된다. 세 상태를 분리해야 한다.

상태 의미 판단 규칙 예시
Hard Constraint 충족하지 못하면 후보가 될 수 없는 조건 하나라도 위반하면 후보에서 제외한다. 근거와 승인자가 있어야 한다. 승인된 처리 지역, 필수 연결 방식, 요구 지원 시간, 특정 운영 책임 경계
Preference 충족하면 좋지만 다른 이점과 교환할 수 있는 조건 Hard Constraint를 모두 통과한 후보 안에서만 비교한다. 팀의 기존 경험, 익숙한 관리화면, 기존 계약, 할인, 도입 속도
Unknown 아직 사실이나 책임자가 확인되지 않은 조건 0이나 ‘문제없음’으로 간주하지 않는다. Owner·Evidence·Due Date를 지정한다. 데이터 등급 미확정, 최대 부하 미측정, 야간 장애 담당자 미정, 데이터 이동 경로 미파악

판단 규칙은 간단하다.

계산식

text
후보 환경 = 모든 Hard Constraint를 충족하는 환경

우선순위 = 후보 환경 안에서 Preference를 비교한 결과

보류 = 후보군을 바꿀 수 있는 Unknown이 남아 있는 상태

기존 계약이나 할인, 사업자와의 파트너 관계, 팀의 익숙함은 대체로 Preference다. 문서화된 계약상 제약이나 기술적 의존성이 있지 않은 한 Hard Constraint로 올려서는 안 된다. 파트너 관계는 기술적 우월성을 증명하는 Evidence도 아니다.

Unknown을 별도 상태로 두는 이유는 의사결정의 빈칸을 숨기지 않기 위해서다. 예를 들어 데이터 이동량을 모르는 상태에서 전송 비용이 저렴한 사업자를 찾는 것은 순서가 맞지 않는다. 야간 장애 대응 주체가 없는 상태에서 24시간 서비스 구조를 비교하는 것도 마찬가지다.

Workload Placement Card

분류 결과는 회의록 속 문장보다 한 장의 카드로 남기는 편이 낫다. 다음 양식은 특정 클라우드 사업자 없이도 작성할 수 있다.

text 예시

text
[Workload Placement Card]

1. Identity
- Workload ID / 이름:
- 만드는 업무 결과:
- 업무 Owner:
- 기술 Owner:
- 현재 Lifecycle:

2. Boundary
- 포함하는 구성요소:
- 포함하지 않는 구성요소:
- 함께 변경되는 대상:
- 주요 외부 Dependency:

3. Behavior
- Interaction: Interactive / Batch / Event-driven / Mixed / Unknown
- State: Stateful / Stateless / Mixed / Unknown
- 수요 패턴:
- 지연·성능 요구:
- 특수 연산 자원 요구:

4. User & Data
- 사용자·호출 주체와 위치:
- 데이터 등급:
- 저장·처리·이동 위치:
- 보존 조건:
- 요구사항을 확정한 담당자와 근거:

5. Failure & Operations
- 중단 시 영향:
- 승인된 허용 중단·데이터 손실 요구:
- 지원 시간:
- 패치 책임:
- 모니터링 책임:
- 장애 대응 책임:
- 외부 지원 또는 Escalation 경로:

6. Economics & Exit
- 주요 비용 Driver:
- 유휴·변동 사용 특성:
- 데이터 이동 경로:
- 이식성 제약:
- 환경 이탈 또는 복구 경로 존재 여부:

7. Decision State
- Hard Constraints:
- Preferences:
- Unknowns:
  - 항목:
  - Owner:
  - 필요한 Evidence:
  - Due Date:
- 후보 환경 범주:
- 후보 Operating Model:
- Vendor 비교 가능 여부: YES / NO
- 아직 비교할 수 없다면 그 이유:

카드가 길어 보일 수 있지만 내용을 채우지 못하는 항목이 바로 현재 의사결정의 위험이다. 모든 필드에 상세 설계가 필요한 것은 아니다. 최소한 확정, 해당 없음, Unknown 중 하나는 남겨야 한다.

Workload → Constraint → Operating Model → Vendor Funnel

클라우드 선택은 다음 순서로 좁혀야 한다.

단계 결정할 내용 이 단계에서 하지 않을 일 산출물
1. Workload 목적, 소유자, 경계, 상태, 사용자, 의존성 사업자 이름이나 상품 선택 워크로드 목록과 경계
2. Constraint 실패 영향, 데이터, 지역, 지연, 운영, Exit 조건 선호와 필수를 섞은 점수표 작성 Hard Constraint / Preference / Unknown
3. Operating Model 패치·관측·장애·지원·보안 책임을 누가 맡을지 VM·PaaS·Container·Kubernetes의 상세 설계 가능한 책임 분담 모델
4. Vendor 앞의 조건을 충족하는 사업자의 실제 Region·서비스·지원·가격 확인 조건이 다른 상품을 월 요금만으로 비교 Shortlist와 추가 검증 항목

여기서 Operating Model은 특정 배포 기술을 고르는 단계가 아니다. 운영체제와 런타임, 데이터, 관측, 장애 대응 중 어떤 책임을 내부 팀이 갖고 어떤 책임을 외부에 맡길지 정하는 단계다. NIST의 참조 아키텍처도 서비스 모델에 따라 제공자와 이용자의 통제 범위가 달라짐을 보여준다. (NIST)

운영 모델이 먼저인 이유는 같은 기능을 제공하는 서비스도 팀이 책임져야 하는 범위가 다를 수 있기 때문이다. 관리 부담을 감당할 인력이 없는 팀에는 낮은 인프라 가격이 충분한 장점이 아닐 수 있다. 반대로 플랫폼 제약을 감수하기 어려운 워크로드에는 운영 편의만으로 후보를 정할 수 없다.

Google Cloud의 Hybrid·Multicloud 전략 지침도 조직 전체에 하나의 환경을 적용하기보다 사업 Use Case와 워크로드별 요구를 확인하고 어떤 워크로드를 어느 환경에서 실행할지 계획하도록 한다. 그렇다고 여러 클라우드를 사용하는 것 자체가 목표가 되는 것은 아니다. 여러 워크로드가 같은 후보로 모이면 하나의 사업자를 선택할 수 있고 조건이 크게 다르면 서로 다른 배치 결과가 나올 수 있다. (Google Cloud)

가상의 한 회사에 서로 다른 카드가 필요한 경우

워크로드 주요 특성 먼저 확인할 조건
공개 상품 카탈로그 외부 사용자, 읽기 중심, 급격한 요청 변화 가능, 상태 의존성이 낮음 사용자 지역, 지연, 콘텐츠 갱신 방식, 장애 시 허용되는 기능 축소
정산 일괄 작업 정해진 시간에 실행, 상태와 내부 데이터 의존성이 높음, 실패 시 다음 업무에 영향 데이터 위치와 이동, 실행 완료 시점, 재실행 책임, 야간 지원 가능 여부

두 워크로드가 같은 회사에 있다고 해서 같은 환경이 자동으로 정답이 되지는 않는다. 반대로 서로 다른 특성이 있다고 해서 반드시 다른 사업자를 사용해야 하는 것도 아니다. 카드가 보여주는 것은 Vendor 수가 아니라 배치 판단을 분리해야 할 이유다.

Vendor 비교를 시작해도 되는지 확인하는 Preflight

다음 항목에 답하지 못한다면 사업자 비교표를 만들기 전에 요구사항부터 보완해야 한다.

  • 워크로드의 업무 결과와 업무·기술 Owner가 정해져 있다.
  • 포함 범위와 주요 Dependency가 문서화돼 있다.
  • Stateful·Stateless·Interactive·Batch 등 동작 특성이 분류돼 있다.
  • 중단 영향과 허용 가능한 중단·데이터 손실 요구가 승인돼 있다.
  • 데이터 등급, 저장·처리·이동 위치 요구와 그 근거가 확인돼 있다.
  • 사용자 위치, 지연 요구, 네트워크 경로가 확인돼 있다.
  • Hard Constraint, Preference, Unknown이 분리돼 있다.
  • 결과를 바꿀 수 있는 Unknown마다 Owner·Evidence·Due Date가 있다.
  • 패치·모니터링·장애 대응·지원 시간의 책임 경계가 정해져 있다.
  • 비용을 움직이는 사용 특성과 Exit 제약이 식별돼 있다.
  • 후보 사업자를 동일한 Region·지원·책임·사용량 가정으로 비교할 수 있다.

Preflight 판정은 세 가지로 나눌 수 있다.

판정 조건 다음 행동
READY 모든 Hard Constraint가 확인됐고 후보군을 바꿀 Material Unknown이 없음 실제 사업자·서비스 비교 시작
CONDITIONAL 후보군은 만들 수 있지만 일부 비본질적 Unknown이 남음 가정을 명시한 제한적 비교와 추가 검증 병행
NOT READY 데이터, 실패 영향, Owner, 운영 책임 등 핵심 조건이 미확정 가격·기능 비교를 중단하고 Placement Card부터 보완

READY는 최종 선택이 끝났다는 뜻이 아니다. 이제야 실제 Region 제공 여부, 서비스 책임 범위, 지원 조건, 이식성, 동일 사용량에서의 비용을 확인할 수 있다는 뜻이다.

이 글이 멈추는 지점

Placement Card가 완성된 뒤에도 별도의 의사결정이 남는다.

요청량과 자원 요구를 어떻게 측정할지, 네트워크 경로별 비용이 왜 발생하는지, 어떤 백업 수단이 어떤 실패를 막는지, 허용 중단과 데이터 손실을 어떻게 수치화할지, 고객·거래당 비용을 어떻게 계산할지, 이전의 전체 비용을 어떻게 검토할지는 각각 독립적인 분석이 필요하다.

VM·PaaS·Container·Kubernetes 중 무엇을 선택할지, 서비스 건강 상태를 어떤 지표로 정의할지, 배포와 롤백을 어떤 메커니즘으로 구현할지도 이 글에서 결정하지 않는다. 여기서는 그러한 요구가 해당 워크로드의 Placement Constraint로 존재하는지만 기록한다.

좋은 클라우드 결정은 로고가 아니라 배치 지도를 남긴다

클라우드 선택 회의가 끝났을 때 “A사를 쓰기로 했다”는 한 줄만 남는다면, 다음 워크로드에서도 같은 논쟁을 처음부터 반복하게 된다.

대신 어떤 워크로드가 어떤 조건 때문에 어느 후보 환경으로 좁혀졌는지, 무엇은 필수였고 무엇은 선호였는지, 어떤 Unknown을 누가 확인했는지가 남아야 한다. 그러면 사업자가 바뀌거나 새로운 Region과 서비스가 추가돼도 판단 구조를 다시 사용할 수 있다.

클라우드를 잘 고르는 방법은 사업자 목록을 더 길게 만드는 것이 아니다. 워크로드를 분리하고 실패 비용과 운영 제약을 먼저 확정한 뒤, 그 조건을 통과한 후보만 비교하는 것이다.