TOPIC/DevOps

클라우드 네이티브란?

H-Y-E-N 2024. 4. 22. 11:20

안녕하세요. HYEN입니다.

오늘은 제 머릿속에 사혼의 구슬처럼 흩어져 있던 클라우드 네이티브와 클라우드 네이티브를 이루는 핵심 요소들에 대해 정리해 보았습니다. 🥸

CD에 대해서는 Delivery랑 Deployment의 차이가 무엇일까 왜 나눠서 사용할까? 하는 의문이 들었고 

DevOps를 생각할 때는 그래서 DevOps랑 CI/CD의 차이가 뭔데?라는 생각이 많이 들었습니다. 

클라우드 네이티브에 대해 알아볼 뿐만 아니라 각각의 개념에 대해서도 좀 더 제 것으로 만들 수 있는 기회가 되었으면 하여 이 글을 작성하였습니다! 


Contents

     

    1. 클라우드 네이티브란? 

    클라우드 네이티브란 소프트웨어 애플리케이션을 클라우드 환경을 기반으로 설계하고 구축하는 방식을 의미합니다. 

    클라우드 네이티브 앱은 클라우드 서비스의 특성을 활용하여 확장성, 탄력성, 안정성, 비용 효율성 등을 갖출 수 있으며 이를 위해 Microservices, CI/CD, DevOps, Containers 등의 기술과 방법론을 사용합니다. 

     

    2. 클라우드 네이티브 아키텍처 

    2.1 마이크로서비스 

    마이크로서비스에 대해서는 아래 글에 정리해 두었습니다. 

     

    마이크로서비스 아키텍처란? (https://with-cloud.tistory.com/38)

     

    마이크로서비스 아키텍처(MSA)란?

    안녕하세요. HYEN입니다. 개념적인 내용도 다루고 넘어가면 좋을 것 같아 오늘은 간단하게 마이크로서비스 아키텍처가 무엇인지에 대해 알아보도록 하겠습니다. 쿠버네티스를 공부하면서 많이

    with-cloud.tistory.com

     

    2.2 CI/CD 

    CI/CD는 Continuous Integration (지속적인 통합) / Continuous Delivery (지속적인 서비스 제공) 또는 Continuous Deployment (지속적인 배포)를 의미합니다.

     

    먼저, CI는

    1) 소스 코드를 공유 레포지토리에 push할 때

    2) 이러한 변경 사항에 대해 자동으로 빌드 및 테스트가 진행되고

    3) 공유 레포지토리에 소스 코드가 병합되는

    과정을 나타냅니다.

     

    커밋할 때마다 빌드와 테스트가 자동으로 이루어지기 때문에 해당 변경으로 문제가 생기는 부분이 없도록 보장할 수 있게 됩니다. 이를 통해 개발자가 구현한 코드를 기존 코드와 병합했을 때 코드가 올바르게 동작하고 빌드되는지 검증할 수 있고 문제가 있다면 수정을 하고 다시 병합을 진행하거나 문제가 없다면 배포를 진행하게 됩니다.

     

    CD는 두 가지 의미로 분리할 수 있을 것 같습니다. 

     

    첫 번째, CD(Continuous Delivery)의 경우,

    1) CI 파이프라인을 통해 main branch에 저장된 완성된 코드가 GitHub와 같은 레포지토리(Delivery)에 자동으로 업로드되는 것을 뜻합니다.

     

    두 번째, CD(Continuous Deployment)의 경우,

    1) 개발자가 변경한 사항을 레포지토리에 업로드하는 것을 넘어

    2) 고객이 사용할 수 있는 프로덕션 환경까지 자동으로 릴리즈하는 것을 의미합니다.

     

    이 둘 개념 간 차이에 대해서는 하기 그림을 보시는 것이 이해에 도움이 될 것 같습니다. 

     

    출처 : https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment

     

    즉, 프로덕션 환경으로의 릴리즈가 수동으로 이루어지는가, 자동으로 이루어지는가가 Continuous Delivery / Continuous Deployment의 차이라고 보시면 될 것 같습니다.

     

    (관련 링크 : https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment)

     

    Continuous integration vs. delivery vs. deployment

    Learn the difference between continuous integration, continuous delivery, and continuous deployment in modern software development and DevOps.

    www.atlassian.com

     

    CI/CD Pipeline의 경우 빌드하고 테스트하는 과정을 자동화하는 것이기 때문에 코드 개발 자체에 좀 더 집중할 수 있게 됩니다.

    또한 반복적으로 수행해야 하는 과정을 자동화하기 때문에 시간을 절약할 수 있다는 장점이 있습니다.

     

    2.3 DevOps 

     

    DevOps는 소프트웨어 개발과 운영을 통합하여 효율성, 협력, 안정성 등을 높이는 방법론입니다.

     

    소프트웨어 개발부터 배포, 운영, 모니터링까지 전체 생명주기를 관리하고, 개발과 운영 간의 협업을 강화하여 릴리즈 주기를 단축하고 문제를 신속하게 해결할 수 있도록 하는 것이 바로 DevOps입니다.

     

    그렇다면, DevOps와 CI/CD의 차이점은 무엇일까요?

    DevOps는 개발과 운영 간의 커뮤니케이션과 협업을 강조하는 문화 또는 사고방식을 나타냅니다. 

    조직이 지속적으로 신속하게 애플리케이션을 배포할 수 있도록 소프트웨어나 팀을 구축하도록 지원하는 방법론이 바로 DevOps입니다. 

     

    이러한 DevOps를 성공적으로 구현하기 위해서는 자동화가 매우 중요합니다. 

    DevOps 문화를 가지고 있는 팀은 CI와 CD를 팀의 프로세스테 통합하여 CI/CD Pipeline을 원활하게 운영할 수 있습니다. 여기서 CI/CD는 자동화된 테스트 도구를 사용하는 DevOps의 전략이라고 볼 수 있습니다. 

     

    즉, CI/CD는 소프트웨어 전체의 생명 주기에 중점을 두기 때문에 자동화와 관련된 도구를 강조하며, DevOps는 이러한 것들이 가능하게 하는 문화에 대해 강조하는 개념이라고 정리할 수 있습니다. 

     

    2.4 컨테이너  

    • 클라우드 네이티브 애플리케이션은 컨테이너 기술을 활용하여 개발됩니다.
    • 클라우드 네이티브 애플리케이션의 코드는 컨테이너로 패키지화되고 실행 환경이 격리됩니다.
    • 개발 환경과 운영 환경 간의 일관성을 유지할 수 있으며 운영 중단 없이 애플리케이션을 업그레이드하거나 효율적으로 확장할 수 있습니다. 
    • 다양한 환경 간에 쉽게 이식할 수 있습니다. 
    • 컨테이너화를 통해 마이크로서비스를 기반이 되는 OS 및 H/W와 독립적으로 실행될 수 있습니다. 

    정리하자면, 

    클라우드 네이티브 아키텍처란 클라우드 컴퓨팅 시스템의 장점을 최대로 활용하도록 하는 애플리케이션 구축 방법이며 상기 설명한 4가지 핵심 요소를 통해 이를 달성할 수 있습니다. 

     


    간단하게 클라우드 네이티브가 무엇인지, 이것을 이루는 핵심 요소에는 무엇이 있는지 알아보았습니다.

    그럼 다음에 또 좋은 글로 찾아오도록 하겠습니다. 👍🏻

    728x90
    320x100
    SMALL