클라우드를 110% 활용하기 위한 ‘클라우드 네이티브’ > 자료실

본문 바로가기

자료실

CONTACT US 자료실

클라우드를 110% 활용하기 위한 ‘클라우드 네이티브’

작성자관리자

  • 등록일 23-11-17
  • 조회80회

본문

클라우드 네이티브(Cloud Native)란 넓은 의미로 클라우드 컴퓨팅의 장점을 최대한 활용할 수 있도록 애플리케이션을 개발하고 운영하는 방법론입니다.

클라우드 구축 후 기존 인프라에 만든 애플리케이션을 그대로 적용하는 것이 아닌, 처음부터 클라우드 환경을 고려해 애플리케이션을 만드는 기술과 방법들을 포괄하는 개념입니다.

‘Cloud Native’라는 용어는 2015년, 리눅스에서 처음 사용했는데요. CNCF(Cloud Native Computing Foundation) 재단을 만들어 클라우드 네이티브로 전환할 수 있는 오픈소스 기술들을 추진/관리하고 있습니다.
 

CNCF에서 정의하는 클라우드 네이티브

클라우드 네이티브 기술은 조직이 퍼블릭, 프라이빗, 그리고 하이브리드 클라우드와 같은 현대적이고 동적인 환경에서 확장 가능한 애플리케이션을 개발하고 실행할 수 있게 해준다.

컨테이너, 서비스 메쉬, 마이크로서비스, 불변(Immutable) 인프라, 그리고 선언형(Declarative) API가 이러한 접근 방식의 예시들이다.

이 기술은 회복성, 관리 편의성, 가시성을 갖춘 느슨하게 결합된 시스템을 가능하게 한다. 견고한 자동화 기능을 함께 사용하면, 엔지니어는 영향이 큰 변경을 최소한의 노력으로 자주, 예측 가능하게 수행할 수 있다.

출처: CNCF Cloud Native Definition v1.0

그렇다면 클라우드 네이티브를 실현하기 위한 요소들은 무엇이 있을까요? 다양한 방법들과 기술들이 존재하지만, 그중 4가지를 소개해드리겠습니다.


클라우드 네이티브 주요 구성 요소 4가지

  1. 마이크로서비스 아키텍처

마이크로서비스 아키텍처(MicroService Architecture, MSA)는 애플리케이션을 독립적인 작은 기능들로 분해하여 구축하는 기술입니다.

모놀리식 vs 마이크로서비스


기존 애플리케이션은 모놀리식(Monolithic) 형태로, 하나의 거대한 덩어리처럼 애플리케이션의 모든 기능이 단일 소스로 통합되어 있습니다. 이렇게 하나의 배포 단위로 구성된 경우, 기능 하나를 변경하기 위해 전체 애플리케이션을 재배포해야 하는 비효율성을 가집니다.

마이크로서비스 아키텍처는 이러한 문제를 해결하는 대안으로, 작은 데이터베이스와 작은 서비스가 서로 묶여 있어 하나하나가 완벽하게 독자적으로 작동합니다.

하나의 애플리케이션 내에 작은 서비스 단위로 구성되어 필요한 기능 단위만 수정 및 추가할 수 있고, 자원의 상태와 사용량에 따라 자동으로 동적 자원이 할당되어 확장성이 보장됩니다. 또한 서비스 단위 별로 적합한 언어 및 미들웨어를 활용하여 최적화된 아키텍처를 구성할 수 있습니다.

마이크로서비스 아키텍처는 프로그래밍 언어에 구속받지 않는 API(Application Programming Interface)를 통해 통신하며, 이는 개발자가 새로운 애플리케이션 구성 요소를 기존 아키텍처에 통합하는 방식을 간소화합니다.


  1. 컨테이너 기술

컨테이너 기술은 마이크로서비스 방법론으로 개발한 애플리케이션을 효과적으로 배포·활용할 수 있는 기술입니다. 가상화 기술 중 하나로, 시스템을 가상화하는 것이 아닌 애플리케이션을 구동할 수 있는 컴퓨팅 작업을 패키징하여 가상화한 것입니다.
 

가상 머신(VM) 방식 vs 컨테이너 방식

기존 애플리케이션은 많은 이질적인 서비스들을 하나의 배포 패키지로 구성하여 종속성을 가집니다. 이에 반해 컨테이너 기술은 종속성 없는 애플리케이션 실행을 지원합니다.

이는 애플리케이션이 느슨하게 결합하여 다른 서비스에 영향을 주지 않고 독립적으로 관리/운영이 가능하기 때문인데요. 도커(Docker)와 같은 컨테이너 엔진이 설치된 환경이라면 퍼블릭, 프라이빗 및 하이브리드를 포함한 다양한 환경 및 인프라 전체에서 동일하게 작동합니다.

이러한 IT 이식성과 유연성을 가진 컨테이너 기술은 앞서 CNCF의 정의로 언급한 “조직이 퍼블릭, 프라이빗, 하이브리드 클라우드와 같은 현대적이고 동적인 환경에서 확장할 수 있는 애플리케이션을 개발하고 실행할 수 있게 해주는 방식”을 구현하기 위한 핵심 요소라 할 수 있습니다.


  1. DevOps

DevOps는 Development(개발)와 Operation(운영)을 합친 말로, 개발자와 엔지니어의 협업을 강조하는 개발 문화를 의미합니다. 개발과 운영 간의 프로세스를 통합하여 개발에서 배포에 이르는 프로세스의 속도를 높이는 데 초점이 맞춰져 있습니다.
 

데브옵스(DevOps)


과거에는 애플리케이션 계획, 개발, 테스트, 릴리즈, 운영 등의 각 단계가 별도의 팀과 역할, 기능 영역으로 분리되어 있어 애플리케이션을 개발하고 배포하는 데에 많은 공수와 시간이 투입되었습니다.

현재는 서비스 출시 속도가 빠르고 업데이트 주기가 빈번해지면서 ‘애플리케이션 개발 및 배포 속도’가 하나의 비즈니스 경쟁력이 되었습니다. 시스템의 안정성을 유지하면서 고객에게 빠르게 제공될 수 있어야 하는 것인데요. 이에 따라 애플리케이션 개발 및 배포의 업무 사이클을 자동화된 단일 워크플로우로 통합하기 위한 DevOps의 필요성이 증대되었습니다.

DevOps는 개발에서 운영까지를 하나의 파이프라인으로 형성하여 배포가 필요할 때 즉시 반영되는 게 목표입니다. 이를 위해 개발, 테스트, 릴리즈, 운영 등 모든 업무를 한 팀에서 유기적으로 진행하여 의사소통과 의사결정을 위한 시간과 비용을 절감합니다. 또한 원하는 시점에 즉시 서비스를 배포할 수 있어 비즈니스 변화에 빠르게 대응할 수 있습니다.


  1. CI/CD

CI(Continuous Integration)/CD(Continuous Delivery)는 지속적인 통합과 배포를 통해 애플리케이션 개발 단계를 자동화하여 고객에게 더욱 짧은 주기로 서비스 제공하고 개선하는 방법입니다.


CI/CD (Continuous Integration/Continuous Delivery)


CI/CD는 DevOps 문화를 성공적으로 구축하기 위해 필요한 요건 중 하나로 개발과 운영 간 업무 속도를 향상하는 데에 기여합니다. 고도화된 CI/CD 구축 시, 다운타임 없이 실행 중인 애플리케이션에 대한 변경 사항을 배포하고, 비즈니스 민첩성, 소프트웨어 품질 및 고객 반응성 등을 신속하게 개선할 수 있습니다.

  • 지속적인 통합(Continous Intergration)
    애플리케이션 코드의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 리포지토리에 병합되는 것

  • 지속적인 배포(Continuous Delivery)
    애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리에 자동으로 업로드되는 것


클라우드 컴퓨팅 효과를 최대화하는 클라우드 네이티브

클라우드 네이티브 애플리케이션기존 엔터프라이즈 애플리케이션
(예측 가능) 작은 단위의 서비스를 자동화된 체계를 통해 배포하여 오류 가능성을 줄임(예측 불가능) 빌드시간이 오래 걸리고 큰 용량의 실행 파일을 배포하여 예상하지 못한 오류 발생 가능성이 큼
(다양한 기술) 서비스 단위별로 적합한 언어 및 미들웨어를 활용하여 최적화된 아키텍처를 구성(단일 기술 기반) 하나의 언어 또는 미들웨어에 의해 아키텍처 구성
(적정 용량) 마이크로 서비스 단위로 구성되어 필요한 기능 단위만 용량을 확장할 수 있어 자원을 효율적으로 활용(용량 비효율) 하나의 거대한 실행 파일 형태인 모닐리식 형태로 구성되어 특정 기능만 용량을 확장할 수 없고 전체를 확장해야 함
(공동작업) 개발자와 운영자 간의 긴밀한 협업 환경(사일로 방식) 개발자가 완성한 코드를 운영자에게 이관하여 실행
(지속적인 전달) 지속적해서 통합되고 배포되는 환경(폭포수형 개발) 분석설계, 개발, 테스트 후에 릴리즈 과정을 거쳐서 배포
(독립성) 애플리케이션이 느슨하게 결합하여 다른 서비스에 영향을 주지 않고 독립적으로 관리/운영(종속성) 많은 이질적인 서비스들을 하나의 배포 패키지로 구성
(자동화된 확장성) 자원의 상태와 사용량에 따라 자동으로 동적 자원 할당(수동 크기 조정) 운영자에 의해서 조정
(빠른 복구) 오류가 발생한 기능 단위만 수정하고 빌드/배포하면 되므로 대응이 빠름(느린 복구) 오류 수정 후에 전체 애플리케이션을 통합하고 빌드/배포 과정을 거쳐야 하므로 대응이 느림
출처: 임철홍, 클라우드 컴퓨팅 효과를 최대화하는 클라우드 네이티브, 2001



서울 종로구 대학로12길 61 계우빌딩 501호 (동숭동, 계우빌딩)
대표 컨설턴트 : 최대근
고객센터 : 1644-8681 | 이메일 : admin@dksc.kr
DKsys Consulting Co.,Ltd. All rights reserved.

관리자로그인현대이지웹 바로가기