TIL. 클라우드(클라우드네이티브), 배포

Kim Chioh·2021년 4월 22일
0

클라우드란?
클라우드네이티브란?
배포?

1. 클라우드란

클라우드란 뭘까요
구름??????????
"클라우드에 대한 정의가 모호할 수 있지만 기본적으로, 각각 고유한 기능을 가진 서버의 글로벌 네트워크를 설명하는 데 사용되는 용어입니다. 클라우드는 실제 엔터티가 아니지만 함께 연결되어 하나의 에코시스템으로 작동하게 되어 있는 전 세계에 분산된 원격 서버의 광대한 네트워크입니다. 이러한 서버는 데이터 저장 및 관리, 애플리케이션 실행 또는 스트리밍 비디오, 웹 메일, 오피스 생산성 소프트웨어 또는 소셜 미디어와 같은 콘텐츠 또는 서비스를 제공하도록 설계되었습니다. 로컬 또는 개인용 컴퓨터에서 파일 및 데이터에 액세스하는 대신 인터넷 지원 디바이스에서 온라인으로 액세스하므로 언제 어디에서나 필요한 정보를 사용할 수 있습니다.

비즈니스에서는 네 가지 방법으로 클라우드 리소스를 배포합니다. 인터넷을 통해 일반 사용자에게 리소스를 공유하고 서비스를 제공하는 퍼블릭 클라우드, 공유하지 않고 일반적으로 온-프레미스에 호스트된 개인 내부 네트워크를 통해 서비스를 제공하는 프라이빗 클라우드, 해당 목적에 따라 퍼블릭 클라우드와 프라이빗 클라우드 간에 서비스를 공유하는 하이브리드 클라우드, 정부 기관 같은 조직에서만 리소스를 공유하는 커뮤니티 클라우드가 있습니다."
라고하네요............ 어렵네요

쉽게말해,

구름처럼 둥둥 떠다녀 언제든 인터넷만 연결되어 있다면 연결가능한 서버 혹은 네트워크라고 정의할 수 있겠습니다.

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

클라우드는 알겠는데, 클라우드 네이티브란게 또 있던데요, 아주 헷갈리지만 이것 또한 쉽게 말해,
클라우드의 이점을 최대로 활용할 수 있도록 애플리케이션을 구축하고 실행하는 방식을 말합니다.

  1. DevOps
    애플리케이션 개발-운영 간의 협업 프로세스를 자동화하는 것을 말하며 결과적으로 애플리케이션의 개발과 개선 속도를 빠르게 합니다.

  2. CI/CD
    지속적인 통합(Continous Intergration)은 개발자가 작업한 코드를 자동으로 테스트하고 테스트에 통과하면 코드를 통합하여 저장합니다.
    지속적인 배포(Continuos Deployment)는 작업한 코드 및 변경사항들은 테스트를 거쳐 리포지토리에 업로드되고 실 서비스 배포로 릴리즈까지 자동화하는 것을 말합니다.

  3. 컨테이너 기반 인프라
    가상화 기술 중 하나로, 시스템을 가상화하는 것이 아니라 애플리케이션을 구동할 수 있는 컴퓨팅 작업을 패키징하여 가상화한 것입니다.

  4. Microservice
    애플리케이션을 구성하는 서비스들을 독립적인 작은 단위로 분해하여 구축하고 각 구성 요소들을 네트워크로 통신하는 아키텍처로 서비스 안정성과 확장성(scaling)을 지원합니다.

DevOps와 CI/CD
DevOps는 ‘개발과 IT 운영 간의 프로세스를 통합하여 궁극적으로는 고객에게 뛰어난 품질의 서비스를 빠르게 제공한다’는 개발 방법론입니다.
그렇다면 개발(Dev)과 운영(Ops)의 업무는 다른데 왜 통합하려고 하는가? 인데요,

과거 새로운 서비스를 출시하기 위해서 오랜 기간 작업 후 배포했던 것과 달리, 현재는 서비스 출시 속도가 빠르고 업데이트 주기 또한 빈번해졌습니다. 그렇기 때문에 개발된 소프트웨어가 시스템의 안정성을 유지하면서 사용자에게 빠르게 제공될 수 있도록 [개발-테스트-배포-운영]의 업무 사이클을 자동화된 단일 워크플로우로 통합할 필요성이 생긴 것입니다.

DevOps를 하려면,

 • 소스 코드 제어(SCM, Source Code Management)    
  서비스는 보통 팀 단위로 개발되는데, 서로 다른 팀에서 개발한 코드에 대한 버전과 이력을 관리해야 합니다.

  • CI/CD    
    CI/CD는 위에서 설명한 것 같이 지속적인 통합과 배포를 통해 애플리케이션 개발 단계를 자동화하여 고객에게 보다 짧은 주기로 서비스를
    제공하고 개선하는 방법입니다.

  • 모니터링
    업데이트 빈도가 늘어남에 따라 일반적으로 요구되는 엄격한 테스트를 매번 수행할 수가 없습니다. 따라서, 데브옵스 환경에서는 실시간으로
    앱 및 성능 모니터링을 통하여 오류, 개선사항을 찾아 해결하는 것이 중요합니다.

  • 문화   
    지난 컬럼에서도 이야기한 바와 같이 DevOps는 개발과 운영 방식을 너머 사일로(silo, 부서 이기주의)를 없앤 ‘협업 문화’라고 볼 수 있습니다.
   <참고 : DevOps를 하려면 무엇부터 해야 할까?>
   

3. 배포?

3-1. 배포경험?

그 회사에서는 배포는 어떻게 진행했는지?
형상관리시스템(Github)에서 레포 각 브렌치에 기능별로 개발 및 테스트를 완료한 후 마스터브랜치에 머지 후 테스팅 완료해서 도커로 이미지를 빌드한 후 그것을 기준으로 젠킨스를 이용해 배포.

오픈소스 경험이였다보니, 다른 사람이 에러 피알을 올려주면 수정할 때도 있었다.

참고:
https://velog.io/@doyuni/Jenkins-NAVER-Cloud-Platform-Docker로-CICD-무중단-배포-환경-구축하기-1편-khk4w6hrm0

profile
Just do what to do

0개의 댓글