본문 바로가기

CS BASIC/정보시스템 일반

[CS BASIC] 클라우드 컴퓨팅(Cloud Computing) 기술과 데브옵스(Devops)

오늘은 프로그래머라면 한 번쯤은 들어봤을 클라우드 컴퓨팅(Cloud Computing) 기술과 데브옵스(Devops)에 대해서 간단히 알아보도록 하겠습니다.

 

컴퓨터(Computer)란?

클라우드 컴퓨팅 기술에 대해서 알아보기 전에, 먼저 컴퓨터(Computer)에 대해서 간단히 살펴보도록 하겠습니다.

 

오늘날 가정에는 개인용 컴퓨터(Personal Computer), 즉 PC의 보급이 굉장히 대중화되었는데요.

컴퓨터 프로그래밍을 배우지 않은 사람이라도 누구나 한 번쯤은 컴퓨터를 다루어 본 경험이 있을 것입니다.

특히 오늘날 컴퓨터는 가정에서 뿐만 아니라 회사에서도 필수적인 작업 환경으로서 그 중요성은 강조해도 지나침이 없는데요.

 

오늘날 사용하는 컴퓨터는 사람으로 비유하면 두뇌에 해당하는 CPU와, 사람의 해마와 같이 단기 기억 등을 위한 주기억 장치, 장기 기억을 위한 보조 기억 장치 그리고 키보드와 모니터와 같은 입출력 장치로 구성되어 있습니다.

 

이러한 컴퓨터의 구성요소들은 컴퓨터를 사용해보셨다면 익숙하신 내용일 것 같습니다.

 

현대 사회에서 사용되는 거의 대부분의 컴퓨터는 위와 같은 구성요소로 이루어져 있으며,

이러한 구조 즉 아키텍처(Architecture)는 냉전이 한참이던 1945년 세기의 천재 폰 노이만을 비롯한 학자들에 의해 설계되었습니다.

 

 

fig 1.0 폰노이만 구조

 

이때 설계된 컴퓨터 아키텍처를 폰 노이만 구조(Von Neumann architecture)라고 부르며,

폰 노이만 구조는 연도로는 거의 한 세기가 다 되어가는 시간 동안 꾸준히 사용 되어온 훌륭한 시스템입니다.

 

시간이 지남에 따라 컴퓨터의 구조는 컴퓨터가 사용 되는 환경에 따라 폰 노이만 구조를 기반으로 하여 유연하게 확장되어 왔는데요.

초기 설계 모델과는 상이한 부분이 있을 수 있겠지만, 현대 컴퓨터 시스템은 대부분 이러한 폰노이만 구조로부터 파생 및 기반하여 설계되고 있기 때문에, 오랜 시간이 지난 지금에도 컴퓨터 과학(Computer Science)분야에서는 이러한 폰 노이만 구조에 대해 필히 배우는 것이 아닐까 생각합니다.

 

오늘날의 컴퓨터에서는 프로그램의 실행에 필요한 다양한 하드웨어로 구성된 컴퓨터 아키텍처에서 더 나아가 사용자가 직접 사용하는 응용 프로그램을 비롯하여, 프로그램을 위한 프로그램 등 상호간의 효율성을 증대시켜주기 위한 다양한 프로그램이 포함되어 있는데요.

 

fig 1.1. 컴퓨터 구조

 

이러한 프로그램 중에서 대중들에게 비교적 많이 알려지고 익숙한 프로그램이 운영체제(OS, Operating System)입니다.

운영체제(OS)에 대해서는 다음 포스팅에서 자세히 다뤄보도록 하겠습니다.

 

다시 본론으로 돌아와서 사람들이 사용하는 PC에는 효율적이지만 다소 복잡한 컴퓨터 시스템을 쉽게 사용할 수 있도록 사용자의 편의성을 보장하기 위해 ‘기본’으로 포함되는 다양한 프로그램이 존재합니다.

 

 

fig 1.2 다양한 컴퓨터 프로그램

 

 

이러한 프로그램들은 각각 수행하는 ‘작업(task)’을 가지고 있으며, 단순히 컴퓨터의 주기억장치와 같은, 컴퓨터의 자원(Resource)를 사용하는 것에서 더 나아가 다른 프로그램들이 수행하고자 하는 다른 작업(task)을 위해 상호 작용을 통해 더 효율적으로 컴퓨터를 잘 사용할 수 있도록 협동하고 있습니다.

 

우리가 사는 세상으로 비유하자면, 맛있는 스테이크를 만드는 요리사가 커피를 먹고 싶을 때 직접 바리스타 교육을 받고 커피 추출 머신을 구매해서 커피를 내릴 수도 있겠지만, 근처에 커피 전문점에 가서 소정의 비용을 지불하고 빠르게 ‘커피’라는 것을 먹는 것이 더 효율적인 것처럼 하나의 컴퓨터 안에서도 다양한 프로그램들이 서로 협동하여 사용자에게 더 쾌적하게 다양한 프로그램을 사용할 수 있도록 지금도 열심히 작업(task)을 수행하고 있답니다.

 

컴퓨터는 단순히 하드웨어 부품이 필요한 것에서 더 나아가 컴퓨터를 더 잘 사용할 수 있도록 운영체제와 같은 프로그램이 필요하고, 또 외부의 위협(Threat), 예컨데 해커에 의한 시스템의 부정 사용 등을 방어하기 위해 더 많은 프로그램과 보안 관련 기술들이 필요합니다.

 

따라서, 전통적으로는 가정용 컴퓨터보다 훨씬 많은 컴퓨터를 다루는 회사 등에서는 이러한 컴퓨터들을 보다 효율적이고 안전하게 관리할 수 있도록 전문 인력을 배치하여 컴퓨터의 하드웨어 및 설치 프로그램에 대한 관리를 수행해왔습니다. 

 

하지만, 회사에서 제공하는 서비스의 규모가 커지면 당연히 이를 위한 컴퓨터 시스템의 규모도 확장되어야 하는데요. 문제는, 이러한 컴퓨터들을 관리하는 것이 결국에는 ‘사람’에 이루어지는 작업이다 보니 전체 시스템에 대해서 효율적인 관리가 이루어지지 못해 여러 가지 보안 상의 문제 및 서비스 장애와 같은 이슈가 지속적으로 발생하게 되었습니다.

 

또한, 자본금의 규모가 큰 회사 등에서는 이렇게 별도의 데이터 센터를 구축하고 이를 보호하기 위한 보안 전문 인력도 배치할 여유가 있지만, 소규모 회사, 예컨데 스타트업 등에서는 이러한 데이터 센터를 직접 구축하고 관리하는 것은 굉장히 부담스러운 일일 것입니다.

 

따라서, 이러한 시장의 요구사항을 만족시키기 위해 기업에서 필요로하는 컴퓨터 시스템을 대여하고 사용량에 따라 소정의 비용을 지불하는 일종의 렌탈 서비스가 등장하게 되었는데요.

 

이것이 오늘날의 클라우드 컴퓨팅(Cloud Computing) 서비스의 시초가 되었습니다.


클라우드 컴퓨팅(Cloud Computing)이란?

사용자의 직접적인 관리 없이 컴퓨터 시스템 리소스를 필요시 바로 제공하는 기술로, 정보를 자신의 컴퓨터가 아닌 연결된 다른 컴퓨터로 처리하는 기술

 

 

클라우드 컴퓨팅 기술에 대해 정의를 내리자면 위와 같습니다.

앞에서 설명 드린 것처럼 기업에서 필요로하는 컴퓨터 시스템에 대해서 전문적으로 컴퓨터 자원을 관리해주고 어느정도 보안까지 확보해주는 이점을 가지기 때문에 현재도 굉장히 다양한 회사로부터 꾸준히 사랑받는 서비스라고 생각합니다.

 

그리고 이러한 클라우드 컴퓨팅 기술은 아래와 같이 크게 세가지 타입으로 나뉘게 되는데요.

 

fig 1.3 클라우드 컴퓨팅 서비스의 종류

 

 

클라우드 컴퓨팅 서비스의 종류

구분 설명
인프라형 서비스(IaaS, Infrastructure as a Service) - 서버, 스토리지 같은 시스템 자원을 클라우드를 제공하는 서비스
- 컴퓨팅 자원에 운영체제나 애플리케이션 등의 소프트웨어를 탑재하고 실행
- 하위의 클라우드 인프라를 제어하거나 관리하지 않지만 스토리지, 애플리케이션에 대해서는 제어권을 가짐
플랫폼형 서비스(PaaS, Platform as a Service) - 인프라를 생성, 관리하는 복잡함 없이 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공하는 서비스
- SaaS의 개념을 개발플랫폼에 확장한 방식으로 개발을 위한 플랫폼을 구축할 필요 없이, 필요한 개발 요소를 웹에서 빌려쓸 수 있게 하는 모델
- OS, 애플리케이션과 애플리케이션 호스팅 환경 구성의 제어권을 가짐
소프트웨어형 서비스(SaaS, Software as a Service) - 소프트웨어 및 관련 데이터는 중앙에 호스팅되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하여 소프트웨어를 서비스 형태로 이용하는 서비스
- 주문형 소프트웨어라고도 함.

 

위와 같이 클라우드 컴퓨팅 서비스를 제공하는 업체로부터, 기업 등과 같은 고객이 컴퓨터 자원을 빌려쓸 때 업체로부터 기술 지원을 받을 수 있는 범위에 따라 3가지 타입으로 나눌 수 있습니다.


클라우드 컴퓨팅의 분류

클라우드 컴퓨팅 서비스는 이를 전문으로 하는 서비스 제공 업체 뿐만 아니라,  

자체적으로 클라우드를 구축할 수 있는 기업이 직접 만들어 사용할 수도 있는데요.

따라서, 서비스를 제공하는 주체 및 범위에 따라 아래와 같이 구분 지을 수 있습니다.

 

구분 설명
사설 클라우드 (Private Cloud) - 기업 또는 조직 내부에서 보유하고 있는 컴퓨팅 자원 (IDC, 서버 등)을 사용하여 내부에 구축되어 운영되는 클라우드
- 자체 컴퓨팅 자원으로 모든 하드웨어, 소프트웨어, 데이터를 수용 
- 직접적인 통제가 가능하며 보안성을 높일 수 있음
공용 클라우드 (Public Cloud) - 클라우드 서비스 제공 업체에서 다중 사용자를 위한 컴퓨팅 자원 서비스를 제공하는 클라우드
- 일정한 비용을 지급하고 하드웨어, 소프트웨어 등을 사용 
- 확장성, 유연성 등이 뛰어남
하이브리드 클라우드(Hybrid Cloud) - 기업 또는 조직 내부 자원을 이용한 사설 클라우드 공용 클라우드를 모두 사용하는 클라우드
- 사설 클라우드의 약점인 구축 비용 문제와 공용 클라우드의 약점인 보안성 확보 문제를 해결
- 사용 업무 중요도, 보안성 확보의 중요도 등에 따라 이용 형태 변경 가능

 

 

클라우드 관련 기술

클라우드 기술은 서비스를 주고 받는 관계에 따라서 다음과 같이 구분지을 수 있습니다.

기술 설명
인터클라우드(Inter Cloud) 단일 클라우드를 넘어서, 타 클라우드 서비스에서 필요한 자원을 가져다 서비스하는 클라우드 내의 중첩 클라우드 서비스
메타클라우드(Meta Cloud) 클라우드 서비스를 위한 개발환경, 실행환경, 환경설정 등을 개발자의 요구 조건에 맞게 자유롭게 구성할 수 있도록 제시하는 통합 클라우드 시스템 모델
멀티클라우드(Multi Cloud) 두 곳 이상의 클라우드 벤더가 제공하는 Public 클라우드를 조합하여 구성하는 클라우드 서비스 제공 모델

 


 

이처럼, 오늘날의 IT 서비스들은 더이상 기업에서 별도로 인력을 고용하여 자체 데이터 센터나 클라우드 환경을 구축하기도 하지만, 전문 업체에 별도로 위탁하여 서비스를 운용하게 되었습니다.

 

이러한 개발 환경의 변화에 따라, 이제 개발자들은 더이상 프로그램을 위한 환경을 구축하느라 시간을 투자하지 않아도 될 수 있도록 개발 환경에 많이 개선되었는데요.

 

궁극적으로는 개발자가 순수하게 프로그램을 만드는 데 집중할 수 있도록 '환경'을 만들기 위한 여러 가지 환경들, 이른바 인프라를 구축해주는 전문 인력이 등장하게 되었고 이러한 전문 분야를 데브옵스(Devops)라고 부르게 되었습니다.

 

데브옵스(Devops)

- 소프트웨어의 개발과 운영의 합성어로서, 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경
- 소프트웨어 개발조직과 운영조직 간의 상호 의존적 대응이며, 조직이 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것을 목적으로 한다.

 

데브 옵스에 대한 더욱 자세한 설명은 아래의 AWS 사이트를 참조하시면 좋을 것 같습니다.

 

https://aws.amazon.com/ko/devops/what-is-devops/

 

DevOps란 무엇인가요? - DevOps 모델 설명 - Amazon Web Services(AWS)

소프트웨어와 인터넷은 쇼핑에서 엔터테인먼트 그리고 뱅킹에 이르기까지 전 세계와 산업을 변화시켰습니다. 이제 소프트웨어는 비즈니스를 지원하는 것에 그치지 않고, 비즈니스의 모든 부분

aws.amazon.com


안정적인 개발 환경 구축을 위한 가상화 기술

이처럼, 다양한 기업에서 필요로하는 환경을 하나의 업체에서 제공하기 위해 업체가 보유한 컴퓨터 자원의 효율적인 관리는 필연적일 것입니다. 하지만, 역설적이게도 다양한 기업에서 필요로하는 환경은 천차만별이기 때문에 컴퓨터 자원을 효율적으로 관리하는 것은 결코 쉬운 일이 아닐 것입니다.

 

왜냐하면, 단순하게 생각해보더라도 앞에서 설명드린 컴퓨터 구조에 따라 기업에서 필요로하는 다양한 OS부터 미들웨어까지 모두 준비된 개발환경을 제공하려면, 한정된 컴퓨터 자원을 운용할 때 반드시 효율적으로 컴퓨터 자원을 관리해야 하기 때문이죠.

 

따라서, 이러한 고민들을 해결하고 컴퓨터 자원을 효과적으로 활용하기 위한 솔루션 중 하나인 가상화 기술이 등장하게 되었습니다. 

가상화 기술에 대해서 자세히 다루려면 굉장히 이야기가 길어질 수 있으므로 다음 기회에 자세히 다뤄보도록 하겠습니다.

 

아래는 이러한 가상화 기술에 사용되는 몇가지 대표적인 기술들에 대해서 살펴보고 오늘 포스팅은 마무리 하도록 하겠습니다.

 

도커 (Docker)

- 도커는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트
- 하이퍼바이저 없이 리눅스 컨테이너(LXC) 기술을 바탕으로 애플리케이션을 격리된 상태에서 실행하는 가상화 솔루션

 

fig 1.4. 도커 로고

 

https://www.docker.com/

 

Docker: Accelerated Container Application Development

Docker is a platform designed to help developers build, share, and run container applications. We handle the tedious setup, so you can focus on the code.

www.docker.com

 

하이퍼바이저 (Hypervisor)

단일 물리적 머신에서 여러 가상 머신을 실행하는 데 사용할 수 있는 소프트웨어
하나의 호스트 컴퓨터 상에서 동시에 다수의 운영체제를 구동시킬 수 있는 HW와 OS사이의 SW 가상화 플랫폼

 

쿠버네티스(Kubernetes)

- 컨테이너화된 애플리케이션의 자동 디플로이, 스케일링 등을 제공하는 관리시스템으로, 오픈 소스 기반이다.
- 리눅스 재단에 의해 관리되는 컨테이너화 된 애플리케이션의 자동 배포, 스케일링 등을 제공

 

fig 1.5. 쿠버네티스 로고

 

 

https://kubernetes.io/ko/docs/home/

 

쿠버네티스 문서

쿠버네티스는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하기 위한 오픈소스 컨테이너 오케스트레이션 엔진이다. 오픈소스 프로젝트는 Cloud Native Computing Foundation에서 주관한다.

kubernetes.io

 

 

VTL(Virtual Tape Library)

대용량 백업 및 데이터 소산에 강점이 있는 테이프 방식의 장점을 취하기 위해서 디스크를 가상의 테이프 미디어로 모방하는 방식

 

가상화 백업

하이퍼바이저에서 관리되는 가상 서버(VM)의 이미지 파일을 백업하는 방식으로 백업환경을 백업 에이전트 중심의 가상화 서버 또는 프록시 서버 레벨에서 SW와 HW를 일체형으로 통합 구축하는 방식

 

 

 


참고자료

https://namu.wiki/w/%EC%A1%B4%20%ED%8F%B0%20%EB%85%B8%EC%9D%B4%EB%A7%8C

 

존 폰 노이만 - 나무위키

[ 펼치기 · 접기 ] ※ 1990년 미국의 시사잡지인 라이프에서 20세기 가장 영향력 있는 미국인 100인을 선정했다. 순위는 없으며, 만장일치로 선정된 인물은 헨리 포드와 라이트 형제뿐이다.

namu.wiki

https://ko.wikipedia.org/wiki/%ED%8F%B0_%EB%85%B8%EC%9D%B4%EB%A7%8C_%EA%B5%AC%EC%A1%B0

 

폰 노이만 구조 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 폰 노이만 구조 폰 노이만 구조(영어: Von Neumann architecture)는 에드박의 보고서 최초 초안(First Draft of a Report on the EDVAC)에서 수학자이자 물리학자 존 폰 노이만과

ko.wikipedia.org

https://velog.io/@underlier12/%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-14-%EA%B8%B0%EB%B3%B8-%EC%BB%B4%ED%93%A8%ED%84%B0-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

 

컴퓨터구조 #14 기본 컴퓨터 프로그래밍

일반적으로 컴퓨터는 하드웨어와 소프트웨어로 구성된다. 소프트웨어는 크게 시스템 소프트웨어와 응용 소프트웨어로 나눌 수 있다.프로그래머는 일반 고급언어로 프로그램을 작성하며 기계

velog.io


https://www.ibm.com/kr-ko/topics/iaas-paas-saas

 

IaaS, PaaS 및 SaaS 비교 | IBM

IaaS, PaaS 및 SaaS 클라우드 서비스 모델과 이점을 알아보세요.

www.ibm.com


https://www.whatap.io/ko/blog/9/

 

클라우드 서비스 이해하기 IaaS, PaaS, SaaS | 와탭 블로그

클라우드 컴퓨팅, IaaS, PaaS, SaaS이란?

www.whatap.io

https://ko.wikipedia.org/wiki/%EB%8D%B0%EB%B8%8C%EC%98%B5%EC%8A%A4

 

데브옵스 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 개발 (소프트웨어 공학), 오퍼레이션, 품질 보증(QA)의 조사로서 데브옵스를 나타낸 벤 다이어그램. 데브옵스(DevOps)는 소프트웨어의 개발(Development)과 운영(Operati

ko.wikipedia.org


https://www.redhat.com/ko/topics/containers/what-is-docker

 

Docker란? What is docker? 도커 컨테이너, docker container 실행

도커는 리눅스 컨테이너 생성 및 실행을 위한 컨테이너 기술을 뜻합니다. 오픈소스 Docker는 컨테이너를 경량화된 모듈식 가상 머신처럼 다룰 수 있도록 지원합니다.

www.redhat.com


https://aws.amazon.com/ko/what-is/hypervisor/

 

하이퍼바이저란 무엇인가요?- 하이퍼바이저 설명 - AWS

컨테이너는 모든 운영 체제에서 애플리케이션을 실행하는 데 필요한 모든 파일과 구성을 저장하는 소프트웨어 패키지입니다. 개발자들은 컨테이너를 사용하여 소프트웨어 개발의 복잡성을 줄

aws.amazon.com

https://ko.wikipedia.org/wiki/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4

 

쿠버네티스 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 쿠버네티스(Kubernetes, 쿠베르네테스, "K8s"[3])는 컨테이너화된 애플리케이션의 자동 디플로이, 스케일링 등을 제공하는 관리시스템으로, 오픈 소스 기반이다.[4]

ko.wikipedia.org