CNPE — Cloud Native Platform Engineer
What Does Platform Architecture Decide First
한국어 원문으로 표시합니다.
한 줄 요약
설계는 도구를 고르는 일이 아니라 어떤 실패를 허용하고 무엇을 보장할지 정하는 일입니다. 특히 주소 공간, 데이터의 소유권, 장애 때 남아야 할 용량은 배포 도구보다 먼저 검토합니다.
왜 이게 필요했나
다음은 연습용 상황입니다. 주문 서비스를 새 버전으로 바꾸는데 파드 하나가 Pending에 머뭅니다. 담당자는 노드를 추가하고, 다른 담당자는 카나리를 블루/그린으로 바꾸자고 합니다. 하지만 아직 아무도 파드 이벤트와 볼륨의 위치를 확인하지 않았습니다. 원인이 볼륨의 노드 제약이라면 CPU 증설로 해결되지 않고, 두 버전이 같은 데이터를 동시에 쓰면 안 되는 문제라면 트래픽 전환 방식만 바꿔도 해결되지 않습니다.
먼저 설계의 전제를 적습니다. 데이터는 재생성 가능한가, 새 버전과 옛 버전이 동시에 써도 되는가, 한 노드가 없어져도 계속 서비스해야 하는가? 답이 없으면 아키텍처 그림에 박스가 늘어도 복구 절차는 나오지 않습니다.
어떻게 동작하나
주소 공간과 후보 노드
예를 들어 파드용 /16을 노드당 /24로 나누는 주소 할당 방식이라면 산술적으로 256개 블록이 나옵니다. 실제 노드 수 상한은 CNI·예약·클러스터 설정에 달려 있으므로 이를 곧바로 운영 가능 노드 수라고 적지 않습니다. 서비스·파드·사내망·VPN 주소가 겹치는지도 함께 검토합니다. CIDR이나 CNI 변경은 구현에 따라 이관·재구축이 필요할 수 있어 초기에 조사할 가치가 큽니다.
파드가 Pending이면 총 CPU보다 먼저 스케줄러가 허용하는 후보와 이벤트를 봅니다. nodeSelector뿐 아니라 affinity, taint/toleration, 볼륨 topology, requests가 함께 후보를 줄입니다. 라벨이 맞는다는 것만으로 배치 가능성을 보장할 수 없습니다.
kubectl get nodes --show-labels
kubectl -n team-a describe pod orders-canary
kubectl -n team-a get events --sort-by=.metadata.creationTimestamp
kubectl -n team-a get pvc
위 명령의 team-a와 orders-canary는 설명용 이름입니다. 실제 실습에서는 대상 이름으로 바꾸고, 오류 이벤트의 주체가 scheduler인지 볼륨 연결·마운트 과정인지 구분합니다.
RWO의 Once는 파드 하나가 아닙니다
ReadWriteOnce(RWO)는 한 노드에서 읽고 쓰는 접근 모드입니다. 같은 노드의 여러 파드가 동일 볼륨을 사용할 수 있습니다. 파드 하나만 허용하는 ReadWriteOncePod(RWOP)는 별도 모드이며 CSI 등 지원 조건을 확인해야 합니다. RWX가 가능하다고 애플리케이션의 동시 쓰기까지 안전해지는 것도 아닙니다. 공식 PV 문서의 접근 모드를 읽고 노드 수, 파드 수, 데이터 정합성을 따로 표시하세요.
| 관찰한 상황 | 먼저 확인할 것 | 아직 결론 내릴 수 없는 것 |
|---|---|---|
| RWO PVC를 두 파드가 참조한다 | 두 파드의 노드와 드라이버 제약 | 두 번째 파드가 반드시 실패한다 |
| 다른 노드에서 연결 오류가 난다 | 이벤트, 기존 연결, topology | 노드 CPU만 늘리면 해결된다 |
| 같은 노드에서 둘 다 Ready다 | 앱의 잠금·단일 writer·스키마 호환 | 동시 쓰기에도 데이터가 안전하다 |
| 블루/그린으로 바꿨다 | 미리보기 버전의 쓰기·백그라운드 작업 | 트래픽 전환만으로 writer가 하나다 |
블루/그린은 데이터 접근 제어가 아닙니다. 서비스가 트래픽을 보내지 않아도 새 버전의 배치 작업은 쓸 수 있습니다. 애플리케이션의 단일 writer, 새 볼륨으로의 복제·검증, 스키마 호환, 필요하면 명시적 중단을 설계해야 합니다. 어떤 선택이 맞는지는 RPO·RTO와 데이터 모델에 달려 있습니다.
현장에서 만나는 모습
연습 상황의 주문 팀에는 서로 다른 두 질문이 필요합니다. “새 파드가 뜰 수 있는가?”에는 스케줄링·볼륨 이벤트가 답합니다. “새 파드가 떠도 되는가?”에는 동시 쓰기 계약과 호환성 시험이 답합니다. 첫 질문을 통과했다고 두 번째 질문을 건너뛰지 마세요.
설계 메모에는 결정, 전제, 확인 명령, 실패 시 대안 네 칸을 남깁니다. 예를 들어 ‘RWO 공유’라는 결정 옆에 ‘같은 노드에 배치 가능’이라는 전제와 ‘writer는 하나’라는 별도 조건을 적습니다. 이것이 시험에서 암기한 용어를 운영 판단으로 바꾸는 연습입니다.
다음 학습에서 할 것
이제 테넌트에게 준 쿼터가 실제 용량 예약과 어떻게 다른지 봅니다. 마지막 퀴즈에서는 같은 RWO라도 조건에 따라 결론이 달라지는 경우를 판단합니다. 여기의 읽기 예시만으로 CSI 다중 노드 장애나 데이터 복구를 검증했다고 주장하지 않습니다.