1.2.2 클라우드 네이티브의 핵심 원칙

클라우드 네이티브 애플리케이션을 성공적으로 구축하고 운영하기 위해서는 단순히 기술을 도입하는 것을 넘어, 그 기반이 되는 핵심 원칙들을 이해하고 실천하는 것이 중요합니다. 이 원칙들은 마치 건물을 짓기 위한 설계 철학과 같아서, 견고하고 유연하며 효율적인 시스템을 만드는 데 필수적인 지침이 됩니다. 지금부터 클라우드 네이티브를 지탱하는 5가지 핵심 원칙인 마이크로서비스 아키텍처, 컨테이너화, 지속적인 통합 및 배포, 데브옵스 문화, 그리고 선언적 API에 대해 하나씩 자세히 알아보겠습니다. 이 원칙들은 서로 긴밀하게 연결되어 시너지를 내며, 클라우드 환경의 이점을 최대한 활용할 수 있도록 돕습니다.

1.2.2.1 마이크로서비스 아키텍처 (MSA: Microservices Architecture)

애플리케이션을 개발하는 방식은 시대에 따라 변화해 왔습니다. 과거에는 모든 기능을 하나의 거대한 단위로 묶어 개발하는 모놀리식(Monolithic) 아키텍처가 일반적이었습니다. 마치 모든 부품이 하나로 뭉쳐진 커다란 기계와 같았습니다. 이런 방식은 초기 개발 속도가 빠를 수 있지만, 애플리케이션이 복잡해지고 커지면서 여러 문제에 직면하게 됩니다. 작은 기능 하나를 수정하거나 추가하려고 해도 전체 애플리케이션을 다시 빌드하고 테스트하고 배포해야 해서 민첩성이 떨어지고, 특정 부분의 장애가 전체 서비스의 중단으로 이어질 위험도 컸습니다. 또한, 새로운 기술을 도입하거나 특정 기능만 확장하는 것도 매우 어려웠습니다.

  • 마이크로서비스 아키텍처(MSA)는 이러한 모놀리식 아키텍처의 한계를 극복하기 위해 등장한 대안적인 접근 방식입니다. MSA는 애플리케이션을 작고, 독립적이며, 특정 비즈니스 기능에 집중하는 여러 개의 서비스 단위로 분할하는 것을 핵심으로 합니다. 마치 레고 블록처럼, 각기 다른 기능을 가진 작은 블록(마이크로서비스)들을 조합하여 하나의 큰 결과물(애플리케이션)을 만드는 방식이라고 생각하시면 이해하기 쉬울 것입니다.

각 마이크로서비스는 자신만의 데이터베이스를 가질 수도 있고, 독립적인 기술 스택(프로그래밍 언어, 프레임워크 등)을 사용하여 개발될 수 있습니다. 서비스 간의 통신은 주로 API(Application Programming Interface), 특히 경량화된 웹 기반의 REST API나 고성능 통신을 위한 gRPC 등을 통해 이루어집니다.

클라우드 네이티브에서 MSA가 중요한 이유는 명확합니다.

  1. 독립적인 배포 및 확장: 각 서비스는 독립적으로 개발, 테스트, 배포될 수 있습니다. 특정 서비스의 업데이트가 다른 서비스에 미치는 영향을 최소화할 수 있어, 더 빠르고 빈번한 배포가 가능해집니다. 또한, 사용자 트래픽이 몰리는 특정 서비스만 선택적으로 확장(Scale-out)하여 자원을 효율적으로 사용할 수 있습니다. 예를 들어, 온라인 쇼핑몰이라면 평소에는 상품 조회 서비스의 부하가 높고, 이벤트 기간에는 주문 처리 서비스의 부하가 급증할 수 있습니다. MSA에서는 각 서비스의 부하에 맞춰 독립적으로 자원을 할당할 수 있습니다.
  2. 기술 다양성: 각 서비스에 가장 적합한 기술을 자유롭게 선택하여 적용할 수 있습니다. 예를 들어, 실시간 처리가 중요한 서비스는 Node.js로, 복잡한 비즈니스 로직은 Java나 Python으로 개발하는 등 유연한 기술 선택이 가능합니다. 이는 혁신을 촉진하고 특정 기술에 종속되는 것을 방지합니다.
  3. 복원력 (Resilience) 향상: 하나의 서비스에 장애가 발생하더라도, 전체 애플리케이션의 중단으로 이어질 가능성이 낮아집니다. 다른 서비스들은 정상적으로 동작할 수 있도록 설계할 수 있어(예: 서킷 브레이커 패턴 활용), 서비스의 전반적인 안정성과 가용성을 높일 수 있습니다.
  4. 조직 구조와의 정렬: 각 마이크로서비스를 전담하는 소규모의 자율적인 팀(보통 ‘Two-Pizza Team’이라고 불리는)을 구성하여 개발 및 운영 책임을 명확히 할 수 있습니다. 이는 팀의 집중도를 높이고 의사결정 속도를 빠르게 하여 생산성을 향상시킵니다. (콘웨이의 법칙: 시스템의 구조는 그것을 설계하는 조직의 커뮤니케이션 구조를 닮아간다)

반드시 알아야 할 점은 MSA가 만능 해결책은 아니라는 것입니다. 서비스를 분산시키면서 서비스 간 통신, 분산 데이터 관리, 통합 테스트, 모니터링 등 새로운 복잡성이 발생합니다. 따라서 MSA를 도입하기 전에는 이러한 분산 시스템의 특성과 운영 오버헤드를 충분히 이해하고 준비하는 것이 중요합니다. 클라우드 네이티브 환경과 쿠버네티스는 이러한 MSA의 복잡성을 관리하는 데 큰 도움을 줍니다.

1.2.2.2 컨테이너화 (Containerization)

애플리케이션을 개발하고 배포하는 과정에서 개발자들은 종종 “제 컴퓨터에서는 잘 동작했는데, 서버에서는 왜 안 될까요?” 와 같은 문제에 부딪히곤 합니다. 이는 개발 환경과 실제 운영 환경 간의 차이(예: 운영체제 버전, 설치된 라이브러리, 설정 값 등) 때문에 발생하는 경우가 많습니다. 이러한 문제를 해결하고 애플리케이션을 어떤 환경에서든 일관되게 실행할 수 있도록 도와주는 핵심 기술이 바로 컨테이너화(Containerization)입니다.

컨테이너화는 애플리케이션 코드와 그 실행에 필요한 모든 종속성(라이브러리, 프레임워크, 런타임 환경 등)을 하나로 묶어 격리된 공간에서 실행하도록 패키징하는 기술입니다. 마치 해외로 물건을 보낼 때 내용물과 상관없이 표준 규격의 컨테이너에 담아 운송하는 것과 비슷하다고 생각할 수 있습니다. 이렇게 패키징된 단위를 컨테이너 이미지라고 부르며, 이 이미지를 실행한 것이 컨테이너입니다.

컨테이너는 가상 머신(VM)과 비교되곤 합니다. VM은 하드웨어 위에 하이퍼바이저를 설치하고 그 위에 각각의 게스트 운영체제(Guest OS)를 통째로 올려서 애플리케이션을 실행하는 방식입니다. 반면, 컨테이너는 호스트 운영체제(Host OS)의 커널을 공유하면서 애플리케이션 실행 환경만 격리합니다. 따라서 컨테이너는 VM보다 훨씬 가볍고(Overhead가 적고), 시작 속도가 빠르며, 동일한 하드웨어에서 더 많은 수의 애플리케이션을 실행할 수 있어 자원 효율성이 뛰어납니다.

클라우드 네이티브의 핵심 원칙

클라우드 네이티브에서 컨테이너화가 중요한 이유는 다음과 같습니다.

  1. 환경 일관성 및 이식성: 컨테이너 이미지는 필요한 모든 것을 포함하고 있으므로, 개발자의 로컬 PC든, 테스트 서버든, 클라우드 운영 환경이든 어디서나 동일한 방식으로 실행될 것을 보장합니다. 이는 “환경 차이로 인한 문제”를 근본적으로 해결해 줍니다. 컨테이너 이미지만 있으면 어떤 환경(물리 서버, VM, 프라이빗/퍼블릭 클라우드)으로든 쉽게 애플리케이션을 옮길 수 있습니다(Portability)
  2. 마이크로서비스 구현의 기반: 앞서 설명한 마이크로서비스 아키텍처에서 각 서비스는 독립적으로 배포되고 관리되어야 합니다. 컨테이너는 각 마이크로서비스를 격리된 상태로 패키징하고 실행하는 데 가장 이상적인 기술입니다. 각 서비스는 자신만의 컨테이너 이미지로 빌드되어 독립적으로 배포, 확장, 업데이트될 수 있습니다.
  3. 개발 및 배포 속도 향상: 컨테이너는 가볍고 빠르게 생성 및 삭제될 수 있습니다. 이는 개발자들이 빠르게 코드를 빌드하고 테스트하고, CI/CD 파이프라인을 통해 운영 환경에 신속하게 배포하는 것을 가능하게 합니다.
  4. 자원 효율성: 운영체제를 통째로 가상화하는 VM과 달리, 컨테이너는 OS 커널을 공유하므로 훨씬 적은 메모리와 CPU 자원을 소비합니다. 이를 통해 서버 자원을 더 밀도 높게 활용하여 비용을 절감할 수 있습니다.

반드시 알아야 할 점은 컨테이너 기술 자체는 애플리케이션을 패키징하고 실행하는 단위일 뿐이며, 수많은 컨테이너를 효과적으로 관리하고 조율(오케스트레이션)하기 위한 도구가 필요하다는 것입니다. 바로 이 역할을 수행하는 것이 쿠버네티스(Kubernetes)입니다. 쿠버네티스는 컨테이너화된 애플리케이션의 배포, 확장, 관리, 네트워킹, 자가 치유 등을 자동화하여 대규모 컨테이너 환경을 안정적으로 운영할 수 있게 해주는 사실상의 표준 컨테이너 오케스트레이션 플랫폼입니다. 따라서 컨테이너화는 쿠버네티스를 활용한 클라우드 네이티브 환경 구축의 가장 기본적인 전제 조건이라고 할 수 있습니다.

1.2.2.3 지속적인 통합 및 배포 (CI/CD: Continuous Integration & Continuous Delivery/Deployment)

소프트웨어를 개발하고 사용자에게 전달하는 과정은 단순히 코드를 작성하는 것 이상으로 복잡한 단계를 포함합니다. 여러 개발자가 작성한 코드를 하나로 합치고(통합), 제대로 동작하는지 테스트하고, 문제가 없다면 실제 사용자들이 이용하는 서버에 배포하는 일련의 과정이 필요합니다. 과거에는 이러한 과정들이 수동으로 이루어지거나 각 단계가 분리되어 있어 시간이 오래 걸리고 오류가 발생할 가능성이 높았습니다.

  • 지속적인 통합(Continuous Integration, CI)과 지속적인 배포(Continuous Delivery/Deployment, CD)는 이러한 소프트웨어 개발 및 릴리스 과정을 자동화하여 더 빠르고 안정적으로 사용자에게 가치를 전달하는 것을 목표로 하는 개발 방법론이자 문화입니다.
  • 지속적인 통합 (CI): 여러 개발자가 각자 작업한 코드 변경 사항을 주기적으로(보통 하루에도 여러 번) 중앙 코드 저장소(예: Git)에 통합하는 것을 의미합니다. 코드가 통합될 때마다 자동으로 빌드되고, 자동화된 테스트(단위 테스트, 통합 테스트 등)가 실행되어 코드의 품질을 조기에 검증합니다. CI를 통해 개발자들은 통합 과정에서 발생하는 충돌이나 오류를 빠르게 발견하고 수정할 수 있으며, 항상 안정적인 상태의 코드 베이스를 유지할 수 있습니다.
  • 지속적인 배포 (CD): CI 단계를 성공적으로 통과한 코드 변경 사항을 실제 운영 환경까지 자동으로 배포하는 것을 의미합니다. CD는 두 가지 수준으로 나눌 수 있습니다.
    • 지속적인 전달 (Continuous Delivery): CI 이후의 모든 과정(테스트 환경 배포, 인수 테스트 등)을 자동화하여, 언제든지 운영 환경에 배포할 수 있는 상태를 유지하는 것입니다. 실제 운영 배포는 버튼 클릭과 같은 수동 승인 단계를 거칠 수 있습니다.
    • 지속적인 배포 (Continuous Deployment): 지속적인 전달에서 더 나아가, 운영 환경으로의 배포까지 완전히 자동화하는 것입니다. 모든 자동화된 테스트를 통과하면 별도의 수동 개입 없이 즉시 운영 환경에 반영됩니다.

클라우드 네이티브에서 CI/CD가 중요한 이유는 클라우드 네이티브의 핵심 목표인 민첩성(Agility)과 속도(Velocity)를 실현하는 데 필수적이기 때문입니다.

  1. 빠른 피드백 및 시장 출시 시간 단축: 자동화된 파이프라인을 통해 코드 변경부터 배포까지의 시간을 획기적으로 단축할 수 있습니다. 이는 새로운 기능이나 개선 사항을 사용자에게 더 빠르게 전달하고, 시장 변화에 신속하게 대응할 수 있게 합니다. 개발자는 코드 변경에 대한 피드백(테스트 결과 등)을 즉각적으로 받을 수 있어 생산성이 향상됩니다.
  2. 릴리스 위험 감소 및 안정성 향상: 모든 변경 사항에 대해 자동화된 테스트가 수행되므로, 배포 전에 잠재적인 문제를 발견하고 수정할 가능성이 높아집니다. 또한, 반복적이고 예측 가능한 자동화된 배포 프로세스는 수동 작업으로 인한 실수를 줄여 배포 안정성을 크게 향상시킵니다.
  3. 마이크로서비스 및 컨테이너와의 시너지: MSA 환경에서는 수많은 서비스들이 독립적으로 변경되고 배포되어야 합니다. CI/CD 파이프라인은 각 마이크로서비스의 빌드, 테스트, 컨테이너 이미지 생성, 그리고 쿠버네티스와 같은 플랫폼으로의 배포 과정을 자동화하여 복잡성을 관리하고 효율성을 높이는 데 핵심적인 역할을 합니다.

반드시 알아야 할 점은 CI/CD는 단순히 도구(예: Jenkins, GitLab CI, GitHub Actions, Argo CD 등)를 도입하는 것만으로는 완성되지 않는다는 것입니다. 성공적인 CI/CD 구축을 위해서는 개발팀과 운영팀 간의 긴밀한 협업, 자동화된 테스트 문화 정착, 그리고 점진적인 개선 노력이 필요합니다. CI/CD 파이프라인은 클라우드 네이티브 애플리케이션의 생명줄과 같으므로, 견고하고 신뢰성 있게 구축하고 지속적으로 관리하는 것이 매우 중요합니다.

1.2.2.4 데브옵스 (DevOps) 문화

과거 전통적인 IT 조직에서는 소프트웨어를 개발하는 팀(Development)과 개발된 소프트웨어를 운영하고 관리하는 팀(Operations)이 명확하게 분리되어 있었습니다. 개발팀은 새로운 기능을 빠르게 만드는 데 집중하고, 운영팀은 시스템의 안정성을 유지하는 데 집중하다 보니 서로 다른 목표와 우선순위로 인해 갈등이 발생하거나 정보 공유가 원활하지 않은 경우가 많았습니다. 이는 결국 소프트웨어 배포 지연, 잦은 장애, 문제 해결 시간 증가 등의 문제로 이어졌습니다.

  • 데브옵스(DevOps)는 이러한 개발(Dev)과 운영(Ops) 간의 장벽을 허물고, 하나의 목표(안정적이고 빠른 서비스 제공)를 위해 서로 긴밀하게 소통하고 협업하며, 전체 소프트웨어 개발 생명주기(기획, 개발, 테스트, 배포, 운영, 모니터링)를 자동화하고 개선해나가는 문화적 철학이자 방식입니다. 데브옵스는 특정 기술이나 도구를 지칭하는 것이 아니라, 조직 문화, 프로세스, 도구의 통합적인 변화를 의미합니다.

데브옵스 문화의 핵심 요소는 다음과 같습니다.

  • 협업과 소통: 개발팀과 운영팀(더 나아가 QA, 보안팀 등 모든 관련 부서)이 사일로(Silo, 부서 이기주의)를 깨고 열린 마음으로 소통하며 공동의 목표를 향해 협력합니다.
  • 자동화: 빌드, 테스트, 배포, 인프라 구성, 모니터링 등 반복적이고 오류 발생 가능성이 있는 수작업을 최대한 자동화하여 효율성을 높이고 실수를 줄입니다. (CI/CD, Infrastructure as Code 등이 대표적인 자동화 실천 방식입니다.)
  • 측정과 모니터링: 시스템의 상태와 성능을 지속적으로 측정하고 모니터링하여 문제 발생 시 빠르게 인지하고 대응하며, 데이터를 기반으로 개선점을 찾습니다.
  • 빠른 피드백: 개발부터 운영까지 모든 단계에서 피드백 루프를 만들어 문제점을 조기에 발견하고 개선 사항을 빠르게 반영합니다.
  • 공유 책임: 개발팀도 운영 환경의 안정성에 책임을 지고, 운영팀도 개발 과정에 참여하여 서로의 업무를 이해하고 지원합니다. 장애 발생 시 특정 개인이나 팀을 비난하기보다는 문제의 근본 원인을 찾아 시스템을 개선하는 ‘비난 없는(Blameless) 문화’를 지향합니다.

클라우드 네이티브에서 데브옵스 문화가 중요한 이유는 클라우드 네이티브 기술(MSA, 컨테이너, 쿠버네티스 등)이 가져다주는 민첩성과 확장성을 조직이 제대로 활용하기 위한 필수적인 기반이기 때문입니다.

  1. 기술 변화 수용 능력 향상: 클라우드 네이티브 환경은 빠르게 변화하는 기술과 도구들을 기반으로 합니다. 데브옵스 문화는 지속적인 학습과 실험을 장려하며, 새로운 기술을 효과적으로 도입하고 활용할 수 있는 조직적 역량을 키워줍니다.
  2. 운영 복잡성 관리: 마이크로서비스와 같이 분산된 시스템은 기존의 모놀리식 시스템보다 운영 복잡성이 높습니다. 데브옵스 방식의 긴밀한 협업과 자동화는 이러한 복잡한 시스템을 효과적으로 관리하고 안정적으로 운영하는 데 필수적입니다.
  3. CI/CD 실현의 토대: 앞서 설명한 CI/CD는 데브옵스 문화를 실현하는 핵심적인 기술 실천 방법입니다. 개발과 운영의 경계 없는 협업과 자동화에 대한 공감대가 있어야 CI/CD 파이프라인을 성공적으로 구축하고 운영할 수 있습니다.
  4. 비즈니스 가치 전달 속도 극대화: 데브옵스 문화는 기술적인 문제 해결뿐만 아니라, 조직 전체의 효율성을 높여 비즈니스 요구사항을 더 빠르고 안정적으로 소프트웨어로 구현하여 시장에 전달하는 속도를 극대화합니다.

반드시 알아야 할 점은 데브옵스는 하루아침에 이루어지는 것이 아니며, 단순히 새로운 도구를 도입하거나 조직 개편을 한다고 해서 완성되지 않는다는 것입니다. 데브옵스는 조직 구성원 모두의 사고방식 변화와 지속적인 노력이 필요한 문화적인 여정입니다. 경영진의 지지 하에 점진적으로 변화를 시도하고, 작은 성공 사례를 만들어나가며 조직 전체로 확산시키는 노력이 중요합니다.

1.2.2.5 선언적 API (Declarative APIs)

애플리케이션이나 인프라를 관리하는 방식을 크게 두 가지로 나눌 수 있습니다. 하나는 명령형(Imperative) 방식이고, 다른 하나는 선언형(Declarative) 방식입니다.

  • 명령형 방식: 목표 상태에 도달하기 위해 어떻게(How) 작업을 수행해야 하는지, 그 절차나 명령어를 하나하나 순서대로 명시하는 방식입니다. 예를 들어, 웹 서버 3개를 띄우려면 “1번 서버에 접속해서 웹 서버 설치하고 실행해. 2번 서버에 접속해서 웹 서버 설치하고 실행해. 3번 서버에 접속해서 웹 서버 설치하고 실행해.” 와 같이 구체적인 단계를 지시합니다.
  • 선언형 방식: 목표로 하는 원하는 상태(Desired State)가 무엇인지(What)를 정의하고 선언하는 방식입니다. 시스템은 현재 상태(Current State)를 지속적으로 관찰하고, 선언된 원하는 상태와 다를 경우 그 차이를 해소하기 위해 필요한 작업을 스스로 수행합니다. 앞선 예시를 선언형으로 표현하면 “웹 서버 컨테이너 3개가 항상 실행되고 있는 상태를 원한다.” 라고 선언하는 것입니다. 그러면 시스템(예: 쿠버네티스)이 알아서 3개의 웹 서버 컨테이너를 띄우고, 만약 하나가 중지되면 자동으로 다시 띄워서 3개 상태를 유지하려고 노력합니다.
  • 선언적 API(Declarative API)는 이러한 선언형 방식을 시스템과 상호작용하는 인터페이스(API)에 적용한 것입니다. 사용자는 원하는 시스템의 상태를 기술한 파일(예: 쿠버네티스의 YAML 매니페스트 파일)을 API를 통해 시스템에 제출하면, 시스템 내부의 컨트롤러(Controller)들이 이 선언된 상태를 달성하고 유지하기 위해 필요한 조치들을 자동으로 수행합니다.

클라우드 네이티브에서 선언적 API가 중요한 이유는 동적이고 복잡한 클라우드 환경에서 시스템을 안정적이고 효율적으로 관리하기 위한 핵심 메커니즘이기 때문입니다.

  1. 자동화 및 자가 치유 (Self-healing): 선언적 API는 시스템 상태 관리를 자동화하는 데 매우 유리합니다. 관리자는 원하는 상태만 정의하면 되고, 세부적인 실행 절차는 시스템에 위임할 수 있습니다. 또한, 시스템의 현재 상태가 선언된 상태에서 벗어나면(예: 서버 장애로 컨테이너가 중지됨), 시스템이 이를 감지하고 자동으로 복구 작업을 수행하여(예: 다른 서버에 컨테이너를 새로 생성) 원하는 상태를 유지하려고 합니다. 이는 시스템의 복원력을 크게 향상시킵니다.
  2. 규모 관리 용이성: 수백, 수천 개의 컨테이너와 서비스를 명령형 방식으로 일일이 관리하는 것은 거의 불가능합니다. 선언적 API를 사용하면 원하는 상태를 기술한 설정 파일들을 통해 대규모 시스템의 상태를 일관되게 정의하고 관리할 수 있습니다. Infrastructure as Code (IaC) 개념과도 밀접하게 연관되어, 인프라와 애플리케이션 구성을 코드로 관리하고 버전 관리(예: Git 사용)하며 변경 이력을 추적할 수 있게 합니다.
  3. 멱등성 (Idempotency): 선언적 방식은 대부분 멱등성을 가집니다. 멱등성이란 동일한 선언(요청)을 여러 번 반복해서 적용해도 시스템의 결과 상태는 항상 동일하게 유지되는 성질을 의미합니다. 이는 자동화된 스크립트나 CI/CD 파이프라인에서 오류가 발생하여 동일한 배포 명령이 반복 실행되더라도 시스템 상태를 예측 가능하고 안정적으로 유지하는 데 도움을 줍니다.
  4. 가시성 및 이해도 향상: 시스템의 원하는 상태가 명시적인 코드(YAML 등)로 정의되어 있으므로, 현재 시스템이 어떤 상태로 구성되어 있어야 하는지를 파악하기 쉽습니다. 이는 팀원 간의 협업과 시스템 이해도를 높이는 데 기여합니다.

반드시 알아야 할 점은 쿠버네티스가 바로 이 선언적 API를 기반으로 동작하는 대표적인 시스템이라는 것입니다. 사용자는 디플로이먼트(Deployment), 서비스(Service), 구성맵(ConfigMap) 등 다양한 쿠버네티스 오브젝트를 YAML 파일 형태로 정의하여 쿠버네티스 API 서버에 제출합니다. 그러면 쿠버네티스 내부의 다양한 컨트롤러들이 이 선언된 상태를 감시하고 실제 클러스터 상태를 일치시키기 위해 끊임없이 작동합니다. 따라서 쿠버네티스를 제대로 이해하고 활용하기 위해서는 이 선언적 패러다임에 익숙해지는 것이 매우 중요합니다.

지금까지 살펴본 마이크로서비스 아키텍처, 컨테이너화, CI/CD, 데브옵스 문화, 선언적 API는 클라우드 네이티브를 구성하는 핵심적인 원칙들입니다. 이 원칙들은 서로 분리된 것이 아니라 상호 보완적으로 작용하며, 이를 통해 기업은 변화에 빠르게 적응하고, 안정적으로 서비스를 운영하며, 궁극적으로 비즈니스 가치를 지속적으로 창출할 수 있는 강력한 기반을 마련할 수 있습니다. 다음 장부터는 이러한 원칙들을 실제로 구현하는 데 핵심적인 역할을 하는 쿠버네티스에 대해 더 깊이 알아보도록 하겠습니다.