본문 바로가기
PM으로 성장하기/개발 공부

[컴과] 클라우드 컴퓨팅: 정의, 서비스모델, 배포모델, 클라우드 컴퓨팅 기술

by 고양이 고씨 2022. 11. 8.

 

클라우드 컴퓨팅 정의

출처: pixabay

클라우드 컴퓨팅이란 서버, 저장장치, 데이터베이스, 네트워크 등을 렌탈 서비스의 형태로 이용하는 것이다. 기존에는 물리적인 시스템을 도입했다면, 클라우드 컴퓨팅은 가상의 시스템을 도입하는 것이다. 클릭 몇 번 만으로 컴퓨팅 자원을 배치할 수 있게 된 것이다.


클라우드 컴퓨팅을 사용하는 이유

클라우드 컴퓨팅은 탄력적으로 사용이 가능하다. 필요할 때 사용하고 필요 없을 때는 사용하지 않으면 되므로, 서비스 확장에 맞추어 인프라를 구축해나가면 된다. 초기 투자 비용을 절감할 수 있는 것도 장점이다.
또한 기존에는 기계를 사는 데 수 개월이 걸리기도 하였지만, 클라우드 컴퓨팅 환경에서는 몇 번의 클릭만으로 빠르게 시스템을 구축할 수 있다.

무엇보다도 가용성(중단 없이 작동할 확률)과 신뢰성(정상 작동할 확률)이 높다. 가용성 관련 용어 중에 5nines라는 것이 있는데, 가용한 시간의 비율이 99.999%라는 것이다. (1년에 계획된 것 제외 5분 15초 이하의 장애시간)


클라우드 컴퓨팅 서비스 모델: IaaS, PaaS, SaaS, FaaS, CaaS, BaaS

출처: RedHat


클라우드 컴퓨팅 서비스 모델은 IaaS, PaaS, SaaS가 있다.
IaaS(Infrastructure as a Service)는 서버, 스토리지, 네트워크 등 인프라자원을 제공하는 형태이다. 참고로 서버란 클라이언트와 송수신하여 정보와 서비스를 제공하는 것, 스토리지는 데이터를 저장하는 곳, 네트워크는 컴퓨터와 컴퓨터를 연결하는 것이다.
PaaS(Platform as a Service)는 사용자가 직접 소프트웨어를 개발을 하고 싶은 경우, 이를 제공해줄 수 있는 환경(플랫폼)을 서비스한다. 예를 들면 구글의 앱 엔진에서 개발하고, 빌드, 배포까지 할 수 있다.
SaaS(Software as a Service)는 소프트웨어까지 제공하는 형태이다. 인터넷만 있으면 나의 컴퓨터에 설치하지 않고도 실행이 가능한 소프트웨어이다. 대표적으로 MS Office 365가 있다.

익히 들어봤을 IaaS, PaaS, SaaS 외에도 아래 용어들도 자주 사용되는 것 같다.
하나는 FaaS(Function as a Service)이다. FaaS는 시스템을 구성하는 기능, 비즈니스로직, 함수를 클라우드에 등록하고 실행할 때 필요한 리소스를 클라우드 제공자가 관리하는 것이다. 서버리스를 구현하는 방식으로, 사용자가 프로비저닝하지 않고도 애플리케이션을 관리하고 배포할 수 있다. 참고로 프로비저닝이란 사용자 요구에 맞게 시스템 자원을 갖고 있다가 필요할 때 시스템을 바로 사용할 수 있도록 하는 것이다.
또 다른 하나는 CaaS(Container as a Service)이다. 컨테이너 추상화를 통해 애플리케이션을 관리하고 배포할 수 있다. RedHat에 따르면 IaaS의 하위 분야이며, IaaS와 PaaS 사이의 개념이라고 한다. (참고: Redhat 사이트)
마지막으로 BaaS(Backend as a Service)도 있다. PaaS에 속하는 모델이라고 할 수 있는데, 백엔드 기능을 직접 구현하지 않고 클라우드와 연동시켜 API를 호출하여 사용하는 형태이다.


클라우드 컴퓨팅 배포 모델: 퍼블릭, 프라이빗, 하이드리드, 커뮤니티

배포 모델에 따라서도 클라우드 컴퓨팅을 분류할 수 있다.
퍼블릭 클라우드는 다수의 사용자가 자원을 공유하는 형태이고, 프라이빗 클라우드는 단일 조직이 독점으로 사용하는 것이다. 보통은 퍼블릭과 프라이빗을 조합한 하이브리드형태로 사용한다고 하는데, 기본적으로 퍼블릭으로 사용하되 개인정보와 같이 비즈니스 보안이 필요한 영역은 프라이빗을 사용한다. 또한 커뮤니티 클라우드와 같이 업무와 기능이 유사한 조직들이 모인 것이다. 뉴욕 증권 거래소는 금융 서비스 조직을 위한 하나의 클라우드를 구성하였다고 한다.


클러스터링 기술

클러스터링(Clustering)이란 군집화를 뜻한다. 클러스터링 기술은 여러 대의 시스템이 마치 하나의 시스템인 것 처럼 동작하도록 하는 기술이다.


그리드 컴퓨팅

그리드 컴퓨팅이란 여러 컴퓨터를 원거리 통신망으로 연결하여, 서로 다른 기종의 컴퓨터들을 묶어 고성능 컴퓨터와 같은 작업을 수행하는 것을 말한다.


가상화 기술

하나의 물리적인 컴퓨터에서 마치 여러 대의 컴퓨터가 있는 것처럼 만드는 것을 말한다. 예를 들면, 내 컴퓨터는 윈도우OS를 사용하고 있지만 가상머신 프로그램을 통해 리눅스OS를 동시에 구동할 수도 있다. 가상머신은 물리적 컴퓨터와 동일한 기능을 제공하는 소프트웨어로, 하드웨어의 리소스를 운영체제가 아니라 가상머신에서 직접 제어하여 여러 운영체제를 운영할 수 있게 한다.

윈도우OS에서 VMware(가상머신 제품)를 통해 CentOS(리눅스OS 중 하나) 실행


이러한 가상화 방식은 서버, 네트워크, 스토리지 등에 적용 가능하다.

1. 서버 가상화

서버 가상화 방법에는 세 가지가 있다. 하나는 호스트 가상화이다. 호스트가상화는 하드웨어 위에 설치된 호스트 OS 위에 가상화 소프트웨어를 설치하고, 그 위에 여러 개의 게스트 OS를 구동시키는 방식이다. 호스트 OS란 물리적 컴퓨터의 OS를 말하며, 게스트 OS는 그 위에 얹을 수 있는 OS를 말한다.
또 다른 하나는 하이퍼바이저 가상화이다. 호스트 OS 없이 하이퍼바이저를 설치하는 것이다. 호스트 가상화는 OS 위에 OS를 얹는 형태였다면, 하이퍼바이저가 하드웨어를 직접 관리함으로써 리소스 관리가 유연해진다.
나머지 하나는 컨테이너 가상화이다. 호스트 OS 위에 컨테이너 엔진을 얹는 대신 게스트OS가 없는 형태이다. 게스트OS가 있으면 오버헤드(어떤 처리를 하기 위해 들어가는 간접적인 처리 시간, 메모리 등)가 발생하기 때문인데, 컨테이너 엔진이 게스트 OS를 대신하여 애플리케이션을 바로 동작시킬 수 있다. 대표적인 컨테이너 가상화 기술은 Docker가 있다. Docker는 실행 환경에 구애받지 않도록, 실행에 필요한 모든 환경(이미지)을 지원하여 컨테이너 자체에 환경을 하나로 묶어서 배포할 수 있는 기술이다. 실행환경에 따라 배포 후에도 동작을 안할 수도 있기 때문에, 컨테이너라는 실행 환경이 있고 그 위에 코드를 올려서 그 자체를 배포한다. DevOps와도 맞물린 개념이라고 한다.

 

Docker (출처: https://www.docker.com/)

2. 네트워크 가상화
네트워크 가상화는 물리적인 네트워크 환경은 그대로지만 논리적으로만 분할하는 것을 말한다. VLAN은 LAN(local area network, 근거리 통신망)을 가상화한 것이다. 한 건물에 3개의 회사가 입주해있다고 하면 같은 LAN을 사용하더라도 3개 회사가 서로의 정보를 볼 수 없게끔 논리적으로 분리를 시켜야한다. 이 때 사용하는 기술로, 패킷에 고유번호 태그를 붙여 네트워크를 구분하는 것이다. 참고로 패킷이란 네트워크가 전달하는 데이터 전송 단위이다.
VPN(Virtual Private Network)은 공용 네트워크에 사설 네트워크와 같은 효과를 적용하는 것으로, 공용 네트워크에서 데이터가 오고 가더라도 다른 상대가 알 수 없도록 패킷을 암호화한다. 이 때 사용되는 것이 VPN 터널링 기술이 사용되는데, 터널링이란 인터넷 상에 가상화된 파이프를 통해서 데이터가 오고가도록 하는 것이다.
NFV(Network Functions Virtualization)과 SDN(Software Defined Network)는 네트워크를 가상화한 것이다. NFV는 라우터, 방화벽, 스위치와 같은 물리적인 네트워크 장비를 소프트웨어로 가상화한 것이다. 또한 SDN은 통합되어있던 제어부와 전송부를 독립시켜, 제어부를 소프트웨어로 가상화한 것이다.

3. 스토리지 가상화
스토리지에도 가상화 기술을 적용할 수 있다. 최근 스토리지는 다중화, 즉 디스크를 묶어 서버와 연결하여 사용하는 구성방식을 사용한다. RAID(Redundant Arrays of Independent Disks)는 디스크를 병렬적으로 구동하는 것이다. 데이터를 중복으로 저장하거나, 데이터를 읽을 때 여러 디스크로 분리된 데이터를 양쪽에서 동시에 읽음으로써 빠르게 처리할 수 있다. NAS(Network Attached Storage)는 네트워크를 통해 연결된 스토리지로, 권한이 있는 사용자들끼리 파일을 저장하고 공유할 수 있다. .
이러한 다중화를 구현하려면 여러 디스크를 관리하고 유지하는 데에 비용이 든다. 스토리지 가상화는 물리적인 스토리지와 서버 사이에 가상화 계층을 만들어, 여러 스토리지를 하나의 스토리지로 그룹화하고 서버는 가상 볼륨을 할당받아 사용하는 형태이다. 서로 다른 스토리지에서 유휴 디스크 공간을 모아주는 스토리지 블록 가상화 기술, 스토리지 소프트웨어를 하드웨어에서 분리하여 스토리지를 가변적으로 확장할 수 있는 소프트웨어 정의 스토리지 기술 등이 사용된다.


서버리스 컴퓨팅 기술

AWS의 Lambda, Azure의 Functions

서버리스라는 말 때문에 서버가 없는 것으로 오해할 수 있지만, 서버리스란 사용자가 요청할 때에 서버가 구동되는 것을 말한다. 서버는 사용자 요청이 없어도 늘 가동되어 있어야 했지만, 서버리스 컴퓨팅 기술로 사용자 요청이 없을 때는 유휴자원이 된다. 서버리스는 BaaS와 FaaS 두 개념을 포괄하는 것으로, 코드가 실행될 때 리소스가 동적으로 할당되며 사용자에게 결과를 주면 리소스를 회수한다.

Azure의 Function의 경우 이벤트 단위로 동작하여, 이벤트가 발생할 때 트리거를 통해서 동작한다. 보통은 HTTP 트리거를 사용한다고 하는데, Timer 트리거는 배치작업을 할 때, Blob Storage 트리거는 이미지를 다운사이징할 때 등 많은 트리거들이 제공된다. MSA를 운영하기 위한 좋은 기능이다.


가용성을 향상시키는 기술

출처: 데브경수님의 인스타툰(@waterglasstoon)

가용성이란 시스템을 계속 가동시킬 수 있는 능력을 말한다. 가용성을 높이기 위해, 다양한 기술을 사용한다.
1. 헬스체크(Health Check)는 하드웨어 또는 소프트웨어가 정상상태에 있는지 일정 간격으로 응답 요청을 보내서 응답이 돌아오는지를 통해 정상적으로 가동하고 있는지를 판단하는 기법이다. 최근 Slack과 같은 메신저로도 연결하여, 헬스체크를 한다고 한다.
2. 로드 밸런싱(Load Balancing)을 이용하여 부하를 분산시킬 수도 있다. 로드 밸런싱은 클라이언트와 서버 사이에 위치하여, 클라이언트의 요청을 백엔드로 보낼 때 트래픽을 분산시키는 역할을 한다.
3. 오토 스케일링(Auto Scailing)은 부하가 발생할 경우 서버를 늘리고, 부하가 줄면 서버를 회수하면서 자동으로 부하관리를 해주는 기술을 의미한다. 모니터링 중에 특정한 상황이 발생하면, 리소스 풀에서 자원을 가져다가 사용하며, 사용이 끝나면 리소스 풀에 반환한다. 참고로 리소스 풀이란 즉시 사용할 수 있는 서버, 스토리지 등의 리소스를 담아두는 공간이다.
4. 클라우드 버스팅(Cloud Bursting)은 갑자기 프라이빗 클라우드가 처리량을 감당할 수 없는 경우, 작업을 일시적으로 퍼블릭 클라우드에 이관하는 것을 말한다.


후기

마이크로소프트의 Azure, 아마존의 AWS, 구글의 GCP, ... 나는 우리 회사에서 어떤 제품을 쓰고 있는지 정도로만 알고 있었다. 그나마 클라우드 컴퓨팅을 접했던 경험은 업무를 하면서 이벤트가 발생하여 서버 증설을 요청했던 것, 데이터를 어디에 올릴지 논의해본 것 정도였다.
클라우드 컴퓨팅을 직접 다뤄볼 일은 없었기 때문에 익숙하면서도 낯설었다. 그러다가 그림으로 이해하는 AWS 구조와 기술이라는 책을 읽어보았고, Azure로 실습할 수 있는 학교 강의를 들으면서 점점 익숙해지기 시작한 것 같다. 

Azure를 통해 Ubuntu 만들기

도움 받은 글

1. 방송통신대학교 컴퓨터과학과 강의록

2. 위키백과, 고가용성, https://ko.wikipedia.org/wiki/%EA%B3%A0%EA%B0%80%EC%9A%A9%EC%84%B1

3. 위키백과 구글엔진, https://ko.wikipedia.org/wiki/%EA%B5%AC%EA%B8%80_%EC%95%B1_%EC%97%94%EC%A7%84

4. 금융권 클라우드 서비스 현황 분석, 전자금융과 금융보안 2015.10. https://edu.fsec.or.kr/

5. 위키백과, 그리드컴퓨팅, https://ko.wikipedia.org/wiki/%EA%B7%B8%EB%A6%AC%EB%93%9C_%EC%BB%B4%ED%93%A8%ED%8C%85

6. 클러스터 컴퓨팅과 그리드 컴퓨팅 비교, https://aws.amazon.com/ko/what-is/grid-computing/

7. 서비스형 기능(FaaS)란 무엇입니까?, https://www.tibco.com/ko/reference-center/what-is-function-as-a-service-faas

8. 위키백과, 프로비저닝, https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EB%B9%84%EC%A0%80%EB%8B%9D

9. CaaS란?, https://www.redhat.com/ko/topics/cloud-computing/what-is-caas

10. 가상머신, https://www.vmware.com/kr/topics/glossary/content/virtual-machine.html

11. [소개] 가상화종류3가지, https://tech.cloud.nongshim.co.kr/2018/09/18/%EA%B0%80%EC%83%81%ED%99%94%EC%9D%98-%EC%A2%85%EB%A5%983%EA%B0%80%EC%A7%80/

12. 위키백과, 오버헤드, https://ko.wikipedia.org/wiki/%EC%98%A4%EB%B2%84%ED%97%A4%EB%93%9C

13. 초보를 위한 도커 안내서, 도커란 무엇인가? https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

14. 서비스형 백엔드, https://www.scienceall.com/%EC%84%9C%EB%B9%84%EC%8A%A4%ED%98%95-%EB%B0%B1%EC%97%94%EB%93%9Cbaas-backend-as-a-service/

15. [네트워크] 스위치의 VLAN, https://velog.io/@kimyeji203/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%8A%A4%EC%9C%84%EC%B9%98%EC%9D%98-VLAN-94zb8tn7

16. 정보통신기술용어해설, 터널링, http://www.ktword.co.kr/test/view/view.php?m_temp1=1708

17. SDN이 네트워크 세상을 어떻게 바꿨을까요? https://m.post.naver.com/viewer/postView.nhn?volumeNo=11764596&memberNo=34920570

18. 나스 왜 써요? 시놀로지 나스(NAS) 개념부터 구글 드라이브 비교 장단점, 나스 선택법까지 한 번에!, https://www.youtube.com/watch?v=XSVokcwtOnw

19. 소프트웨어 정의 스토리지란? https://www.purestorage.com/kr/knowledge/what-is-software-defined-storage.html

 

 

728x90

댓글