본문 바로가기
IT

클라우드 네이티브(Cloud Native)에 대해서

by 콩코미 2021. 7. 2.

클라우드 네이티브(Cloud Native)란?


클라우드 네이티브는 AWS의 EC2, S3, Lightsail, Lambda 등과 같은 클라우드 서비스를 활용하여 클라우드 기반 제품군을 통해 소프트웨어를 구축, 실행 및 업데이트하는 모듈 식 접근 방식을 취하고, 이를 통해 동적이고 민첩한 애플리케이션을 구축하는 개발 방식입니다. 클라우드 네이티브는 애플리케이션이 어디에 생성되고 배포되는지에 대한 것이 아닌 애플리케이션을 만들고 배포하는 방법에 관한 것입니다. 클라우드 네이티브 앱은 수직이 아닌 수평으로 확장되도록 설계되었으며 컨테이너, 마이크로 서비스 및 API와 같은 기술에 의존합니다. 확장성을 통해 마이크로 서비스 모듈은 다른 프로세스에 의존하지 않고 개별적으로 개선할 수 있습니다. 
마이크로 서비스와 컨테이너화는 클라우드 제공 업체 간에 쉽게 이전하거나 충돌이나 다운 타임 없이 서로 다른 언어 또는 프레임 워크에서 독립적으로 서비스를 배포할 수 있도록 함으로써 클라우드 네이티브 애플리케이션의 민첩성과 역동성을 지원합니다. 마이크로 서비스 아키텍처를 애플리케이션 개발에 통합하면 DevOps 팀이 애플리케이션의 여러 구성 요소에서 동시에 독립적으로 작업하거나 안정성을 희생하지 않고 새로운 기능을 구현할 수 있으므로 협업, 효율성 및 생산성이 향상됩니다.

클라우드-네이티브-제목

 

클라우드 네이티브 앱 개발에는 일반적으로 devops, 애자일 방법론, 마이크로 서비스,  클라우드 플랫폼, Kubernetes 및 Docker와 같은 새롭고 현대적인 애플리케이션 배포 방법이 사용되고 있습니다.
PaaS (Platform-as-a-Service) 모델이 주로 사용되며 PaaS는 필수는 아니지만 작업을 훨씬 쉽게 만듭니다. 대다수의 클라우드 고객은 기본 하드웨어에서 앱을 추상화하는 데 도움이 되는 IaaS (Infrastructure-as-a-Service)로 시작합니다. 그러나 PaaS는 기본 OS를 추상화하기 위해 추가 레이어를 추가하므로 앱의 비즈니스 로직에 전적으로 집중하고 OS 호출에 대해 걱정할 필요가 없습니다.

 


클라우드 네이티브(Cloud Native) vs 온프레미스(On-premises)

1. 언어 : 온프레미스는 Windows Server 플랫폼에 배포된 경우 C / C ++, C # 또는 다른 Visual Studio 언어 및 엔터프라이즈 Java와 같은 기존 언어로 작성되는 경향이 있습니다. 클라우드 네이티브 앱은 HTML, CSS, Java, JavaScript, PHP, Python 및 Ruby를 의미하는 웹 중심 언어로 작성될 가능성이 더 높습니다.
2. 업데이트 : 클라우드 네이티브 앱은 항상 최신 상태로 유지되며 항상 사용할 수 있습니다. 온프레미스 앱은 업데이트가 필요하며 일반적으로 공급 업체에서 구독 기반으로 제공되며 업데이트가 설치되는 동안 다운 타임이 필요합니다.
3. 탄력 : 클라우드 네이티브 앱은 사용량이 급증하는 동안 증가된 리소스를 사용하여 클라우드의 탄력성을 활용합니다. 클라우드 기반 전자 상거래 앱에서 사용량이 급증하는 경우 급증이 가라앉을 때까지 추가 컴퓨팅 리소스를 사용하도록 설정 한 다음 해당 리소스를 끌 수 있습니다. 클라우드 네이티브 앱은 증가된 리소스에 맞게 조정하고 필요에 따라 확장할 수 있습니다. 그에 반해 온프레미스 앱은 동적으로 확장할 수 없습니다.
4. 다운 타임 : 온프레미스보다 클라우드에 중복성이 더 크기 때문에 클라우드 제공 업체가 중단될 경우 다른 지역에서 여유가 생길 수 있습니다. 온프레미스 앱에는 장애 조치가 준비되어 있을 수 있지만 서버가 다운되면 앱도 함께 다운될 가능성이 있습니다.
5. 자동화 : 많은 클라우드가 자동화되어 있으며 여기에는 앱 관리가 포함됩니다. 클라우드 네이티브 전송의 이점, 특히 속도와 민첩성은 수동 개입이 아닌 자동화 및 오케스트레이션 도구에서 반복적으로 실행되는 신뢰할 수 있고 검증된 프로세스의 기질에 크게 의존합니다. 반복성, 셀프서비스, 민첩성, 확장성, 감사 및 제어를 지원하기 위해 반복되는 대부분의 작업을 자동화합니다. 온프레미스 앱은 수동으로 관리해야 합니다.

클라우드-네이티브1

 

클라우드 네이티브(Cloud Native)의 특징/장점

1. 개발 팀에게 조직 또는 프로젝트의 특정 목표에 가장 적합한 프레임 워크, 언어 또는 시스템을 선택할 수 있는 옵션이 제공됩니다.
2. 컨테이너화 된 마이크로 서비스의 이식성은 조직이 한 클라우드 공급자에 지나치게 의존하지 않도록 보장합니다.  
3. Kubernetes와 같은 오픈 소스 컨테이너 오케스트레이션 플랫폼을 사용하면 전체 애플리케이션을 해체하지 않고도 버그가 있는 컨테이너를 쉽게 식별할 수 있으므로 문제 해결의 복잡성이 줄어듭니다. 
4. 마이크로 서비스는 독립적으로 작동하므로 개발자는 핵심 기능을 기반으로 각각을 최적화하고 궁극적으로 최종 사용자 경험을 풍부하게 할 수 있습니다. 
5. 소프트웨어 개발에서 마이크로 서비스를 사용하면 지속적인 통합 및 지속적인 배포 작업이 용이 해져 개발 수명주기와 자동화된 프로세스를 통한 인적 오류의 기회가 줄어듭니다. 
6. 컨테이너 오케스트레이터는 수요에 따라 리소스를 자동으로 예약하고 할당하여 효율성을 높일 수 있습니다. 
7. 애플리케이션 아키텍처에 마이크로 서비스를 사용하면 개발자가 전체 애플리케이션 및 가용성에 영향을 주지 않고 하나의 마이크로 서비스를 변경하거나 새로운 기능을 제공할 수 있습니다.

 

클라우드-네이티브2

 

클라우드 네이티브(Cloud Native)의 문제점

1. 구축된 DevOps 파이프 라인이 없으면 팀이 마이크로 서비스와 관련된 분산 워크 플로 및 책임을 관리하는 데 어려움을 겪을 수 있습니다. 
2. 컨테이너의 빠른 확장은 적절하게 모니터링하지 않으면 보안 위험을 초래할 수 있습니다. 
3. 레거시 애플리케이션에서 마이크로 서비스 아키텍처로 전환하면 복잡한 상호 종속성이나 기능 문제가 발생할 수 있습니다. 
4. 일부 마이크로 서비스에는 Compute, GPU 또는 SSD와 같은 특정 머신 전용 기능이 필요하므로 특정 유형의 운영 체제 또는 머신 인스턴스에 종속됩니다.

댓글