본문 바로가기

개발서적

[클라우드] 그림으로 배우는 클라우드

 

 

그림으로 배우는 클라우드 2nd Edition

IT 관련 종사자, 사내 정보 시스템 담당자, 클라우드 서비스 및 기술 활용 사례를 배우고 싶은 사람들을 대상으로 클라우드 서비스를 도입하거나 실무에 활용하고자 할 때 도움이 될 수 있는 다

www.aladin.co.kr

 

 

 

 

Ch1. 클라우드란?

01. 클라우드 컴퓨팅이란?

 클라우드 컴퓨팅이란 컴퓨터를 사용한 정보 처리를 자신이 보유한 PC가 아닌, 인터넷 너머에 존재하는 클라우드 사업자의 컴퓨터에서 처리하는 서비스를 말한다. 즉, 회사의 정보를 회사 안에 구축된 시스템에서 처리하는 것이 아니라 클라우드 사업자의 데이터 센터 안의 시스템에서 처리하는 것이다. IT 자산을 소유하는 것이 아니라, 서비스로서 이용하는 모델이다. 클라우드 사용자는 자체 시스템을 구축할 필요없이, 시스템을 마치 서비스처럼 사용할 수 있게 된다.

 클라우드는 은행 예금에 비유할 수 있다. 금융 자산을 은행에 맡긴 뒤, 전 세계의 ATM기기를 통해 찾을 수 있는 것 처럼, 정보 자산을 클라우드에 맡기고 네트워크를 통해 언제든지 이용할 수 있다.

 

02. 클라우드가 등장한 배경

 메인 프레임(단말기는 입출력만 수행하고, 실제 처리는 메인 프레임에서) → 클라이언트 서버(클라이언트에 처리 기능을 탑재하여 집중처리에서 분산처리로) → 네트워크 컴퓨팅(사내 시스템이 내부 인트라넷 네트워크 환경위에 구축되면서 처리가 서버에 다시 집중) → 클라우드 컴퓨팅(서버를 보유하지 않고, 전 세계에 분산된 서버의 리소스들을 서비스로서 이용하는 모델)

클라우드 보급 배경

- CPU의 처리 속도 고속화

- 가상화 기술과 분산 처리 기술의 발전

- 빨라지고 저렴해진 네트워크

- 거대해진 데이터 센터에 의한 규모의 경제

- 클라우드를 통해 기업은 IT 투자 비용의 절감, 유영한 서비스와 이용 , 구축 및 운용 부담 경감.

03. 클라우드의 정의와 특징 NIST(미국 국립 표준 기술연구소)

- 사업자의 수동 조작 없이 사용자별 관리 화면에서 서비스를 이용할 수 있다.

- 모바일 기기 등 다양한 디바이스로 서비스에 접속할 수 있다.

- 여러 사용자가 같은 컴퓨팅 리소스를 공유하여 이용한다. 사용자마다 리소스가 할당되지만, 사용자는 시스템의 어느 부분에 접속했는지 알 수 없다.

- 필요에 따라, 필요한 만큼 컴퓨팅 리소스를 늘리거나 줄일 수 있다.

- 서비스를 이용한 만큼 요금이 부과된다.

클라우드 서비스 모델

- SaaS(Software as a Service)

- PaaS(Platform as a Service)

- IaaS(Infrastructure as a Service)

 

클라우드 이용 모델

- 프라이빗 클라우드

- 커뮤니티 클라우드

- 퍼블릭 클라우드

- 하이브리드 클라우드

04. 클라우드의 장점

- 경제성

자체 시스템을 이용할 경우, 피크 타임의 이용량을 예상하여 그만큼의 소프트웨어와 하드웨어를 준비해야 한다. 반면, 클라우드를 사용할 경우 사용한 기간 만 사용하여 비용을 절약할 수 있다.

- 유연성

자체 시스템에서는 시스템을 가볍게 확장 및 축소할 수 없지만, 클라우드에서는 필요할 때만 시스템을 확장하고 필요없을 때는 시스템을 축소할 수 있다.

- 가용성

서버의 장애가 발생할 경우를 대비하여 이중화(ex. standby 서버 추가) 및 백업이 필요하다. 하지만 클라우드에서는 자체 시스템보다 더 신뢰성 높은 경우도 있기 때문에 믿을 만 하다.

- 빠른 구축 속도

05. SaaS란?

 멀티 테넌트와 싱글 테넌트의 차이 : https://www.itworld.co.kr/news/216079

 SaaS란 주로 업무에서 사용하는 소프트웨어의 기능을, 인터넷 등의 네트워크를 통해 필요한 만큼 서비스로 이용할 수 있도록 제공하는 형태를 뜻한다. 하나의 서버를 여러 기업에서 공유하는 것을 전제한 멀티 테넌트 방식 서비스를 제공한다. 그러나 데이터는 기업 사용자별로 분리되도록 설계하여 보안성을 확보한다.

 소프트웨어의 업그레이드 작업은 사업자의 몫이다. 사용자는 필요한 기능을 필요한 기간만큼 임대하는 방식으로 이용한다. 예시는 마이크로소프트의 Office 365, 구글의 G Suite가 있다.

 SaaS는 하드웨어에서 어플리케이션 모두를 사업자가 운용하고 관리한다.

06. PaaS란?

 기업의 애플리케이션 실행 환경 및 애플리케이션 개발 환경을 서비스로써 제공하는 모델이다. PaaS에는 애플리케이션 실행 환경이나 데이터베이스 등이 미리 마련되어 있다. 따라서 인프라 구축 및 운용 보수를 하지 않아도 그 기반을 사용할 수 있으므로, 단기간에 응용 프로그램을 개발하여 서비스를 제공할 수 있다.

 Paas와 IaaS의 차이점은 서버, 네트워크, 보안 부분을 클라우드 사업자에게 위임한다는 점으로 구축 및 운영이 쉬워진다. 또한 SaaS는 정해진 소프트웨어를 서비스로 제공하지만, PaaS는 자사에서 개발한 응용 프로그램을 가동할 수 있다. 그러나 반대로 서버 및 미들웨어의 상세한 설정을 할 수 없을 수 있으며, 특정 PaaS 환경에 대한 의존도가 높아지게 되면 다른 환경으로의 마이그레이션이 어려워질 수 있다.

07. IaaS란?

 CPU나 하드웨어등의 컴퓨팅 리소스를 네트워크를 통해 서비스로 제공하는 모델입니다. 대표적인 IaaS의 서비스로는 가상 서버 및 온라인 스토리지 등을 들을 수 있다. 가상 서버란 클라우드 사업자가 보유하는 물리적 서버의 CPU와 메모리, 스토리지 등의 하드웨어 자원을 소프트웨어적으로 나누어 사용자에게 제공하는 것이다. 대표적인 서비스로는 aws의 ec2가 있다.

08. 클라우드 이용 모델

- 퍼블릭 클라우드

클라우드 사업자가 시스템을 구축하고, 인터넷망 등의 네트워크를 통해 불특정 다수의 기업과 개인에게 서비스를 제공하는 형태이다. 필요한 컴퓨팅 자원을 단기간에 저비용으로 마련할 수 있고, 운용 부담이 적다는 장점이 있다.

- 프라이빗 클라우드

클라우드 서비스의 사용자 또는 사업자의 데이터 센터에 클라우드 관련 기술이 활용된 자사 전용 환경을 구축하여 컴퓨팅 리소스를 유연하게 이용할 수 있는 형태.

- 커뮤니티 클라우드

특정 기업들이 공동 운영하는 클라우드 환경

- 하이브리드 클라우드

여러 클라우드 서비스들과 온프레미스 시스템을 연계시켜 활용하는 시스템 및 서비스

09. 프라이빗 클라우드의 종류

- 온프레미스 프라이빗 클라우드

기업 사용자가 직접 클라우드 기반 소프트웨어를 이용하여, 자체적으로 구입한 서버 및 스토리지, 하드웨어 리소스를 기업안에 설치하여, 자사 전용 클라우드 환경을 구축해서 운용하는 형태. 자사의 시스템 요구 사항에 맞춘 유연한 시스템 설계가 가능하며 자체적인 보안 정책에 따른 강력한 보안 환경을 구축해서 운용할 수 있다.

- 호스티드 프라이빗 클라우드

클라우드 사업자가 기업 사용자별로 클라우드 환경을 제공하여, 서버와 스토리지같은 컴퓨팅 리소스를 서비스로 제공하는 형태. 단기간에 전용 클라우드 환경을 구축할 수 있다. 전용성과 VPN망을 통해 보안 수준이 높은 전용 클라우드를 사용할 수 있다.

VPN(virtual private network)

https://terryterry.tistory.com/40

일반적으로 사설망에는 네트워크 내부에 있을 때 접근할 수 있다. 즉, 물리적으로 연결되지 않은 사설망 밖에서는 사설망의 내부 네트워크로 접속할 수 없다는 뜻이다. 그러나 vpn을 사용하면 사설망을 사용할 수 있다. 먼저, 사설망이 존재하는 네트워크에 vpn 서버를 설치한다. 외부에서는 사설망으로 직접 접속하지 않고 vpn서버를 통해서 우회하여 접속한다. 외부에서는 vpn 클라이언트를 통해 보내질 데이터를 암호화하고, vpn서버는 해당 데이터를 복호화하여 내부 네트워크에 전달하기 때문에, 중간에 데이터가 탈취되어도 암호화되었기 때문에 내부 정보를 알 수 없다.

 

 

Ch3. 클라우드를 실현하는 기술들

01. 클라우드를 실현하는 기술들

 클라우드 서비스들은 가상화 기술, 컨테이너 기술, 분산 처리 기술, 데이터베이스 기술, 저장 기술 등으로 구현되어 있다. 가상화란 서버 같은 하드웨어 리소스를 논리적으로 다룰 수 있게 만드는 메커니즘이다. 가상화 기술을 사용하면, 하나의 물리 서버 리소스를 여러 개로 나누어 여러 개의 서버 환경을 구축할 수 있고, 여러 대의 물리적 서버 리 소스를 하나의 서버 환경으로 통합할 수 도 있다.

 컨테이너는 하나의 OS환경에서 애플리케이션을 실행하기 위한 영역을 여러 개로 나누어 사용할 수 있도록 한다. 분산 처리는 대량의 데이터를 여러 서버에 분산하여 동시에 병렬로 빠르고 효율적으로 처리하는 기술이다.

02. 서버 가상화 기술

https://itholic.github.io/hypervisor/

https://pearlluck.tistory.com/121

 서버 가상화 기술은 하나의 물리적 서버 리소스에 여러 개의 서버 환경을 할당하고, 각각의 환경에서 OS와 애플리케이션이 실행될 수 있도록 만들어 준다. 이를 통해 물리 서버의 리소스를 최대로 활용할 수 있다.

 가상 서버에는 CPU, 메모리, 스토리지, 네트워크 등이 에뮬레이트 되므로 물리 서버처럼 사용할 수 있다. 각각의 가상 서버는 독립된 상태이므로, 같은 물리 서버에 있는 가상 서버중 하나가 바이러스와 같은 위협에 노출되더라도 다른 가상 서버에게 영향을 미치지 않는다.

 서버 가상화 기술은 주로 ‘하이퍼바이저 형’, ‘호스트 OS 형’, ‘컨테이너 형’의 3종류로 분류된다.

- 하이퍼바이저 형

 하이퍼바이저 형은 TYPE1과 TYPE2로 나눠진다. TYPE1은 다른 미들웨어 없이 하드웨어위에 바로 올라가는 형태이고  TYPE2는 호스트OS에 하이퍼바이저가 올라가고 그 위에 게스트OS가 올라가는 형태이며, 이는 호스트 OS형이라고 부른다.

 먼저 TYPE1의 원리를 알아보자. 하이퍼바이저는 하드웨어에 직접 접근할 수 있으며, 하드웨어 명령을 전달 할 수 있도록 인터페이스를 제공한다. 게스트OS들을 각각 자신들의 커널을 가지고 있다. 해당 커널들마다 명령어의 형태가 다르기 때문에 만약 하이퍼바이저가 없이 하드웨어에 직접 명령어를 전달한다면, 하드웨어는 명령어를 해석할 수 없을 것이다. 즉, 각각의 OS 명령어를 하드웨어가 이해할 수 있도록 해석하는 과정이 필요하다.

 이때 이 해석과정에 따라 ‘전가상화’와 ‘반가상화’로 나눠진다. 전가상화는 하이퍼바이저가 OS의 명령어를 해석하여 하드웨어에게 전달한다. 자세하게 보자면, DOM0라는 유일하게 하이퍼바이저에 직접 접근할 수 있는 하이퍼바이저의 VM이 게스트OS들의 명령어를 해석하여 하이퍼바이저에게 전달한다. 추가적으로, 하이퍼바이저는 하드웨어에 직접 접근할 수는 있지만 하드웨어를 관리할 능력은 없기 때문에 DOM0가 하드웨어를 관리해준다. 이 방식에서는 DOM0가 OS들의 명령어를 해석해주기 때문에 OS커널을 수정할 필요가 없다는 장점이 있다. 하지만, DOM0를 거치는 과정 떄문에 ‘반가상화’에 비해 상대적으로 속도가 느리다는 단점이 있다.

 ‘반가상화’는 전가상화에서 DOM0가 OS의 명령어를 해석하는 과정을 OS에서 직접수행하는 것이다. 즉, OS는 자신들의 명령어를 하이퍼바이저가 이해할 수 있게 번역하여 하이퍼바이저에게 직접 전달한다. 이를 위해서 커널을 수정해야한다는 단점이 있다. 윈도우의 경우 커널을 수정할 수 없으므로, 반가상화를 적용시킬 수 없다. 그러나 DOM0를 경유하지 않기 때문에 상대적으로 전가상화보다 성능이 좋다는 장점이 있다.

- 호스트 OS형

일반적으로 알고 있는 VMware, VM workstation, virtualBox가 이에 해당한다. 호스트OS가 하드웨어를 관리하기 때문에 하이퍼바이저 형에서의 DOM0와 같은 관리 툴은 따로 필요없다. 그러나 호스트OS위에 하이퍼바이저가 구동되고 그 위에 게스트OS가 구동되기 때문에, 느리다는 단점이 있다.

 

03. 컨테이너 기술

 컨테이너 기술이란 하나의 OS 환경에서 애플리케이션의 실행 영역(유저 스페이스)을 여러 개로 나누어 사용하는 기술을 말한다. 그리고 이렇게 나눈 각각의 유저 스페이스를 ‘컨테이너’라는 이름으로 부른다. 서버 가상화는 하드웨어 환경을 통째로 가상화하는 것이고, 컨테이너는 애플리케이션의 실행환경을 가상화하는 것이다.

 컨테이너를 만들 때는 다양한 OS를 지원하는 템플릿을 사용할 수 있으므로, 그것을 사용하여 하나의 호스트OS에서 멀티 OS환경을 제공할 수 있다. 가상 서버는 기동에 수십 초에서 수 분 정도가 걸리지만, 컨테이너는 가상화에 따른 오버헤드가 적으므로 빠르게 기동/정지할 수 있으며 성능 저하도 거의 없다. 게스트 OS가 없기 때문에 보조 기억장치의 사용량도 줄일 수 있다.

 애플리케이션의 실행 환경이 컨테이너 단위로 패키징되므로 로컬 컴퓨터의 개별 환경을 클라우드로 옮길 수도 있으며 복제가 쉽고 이식성이 뛰어난다. 대표적으로 도커와 쿠버네티스가 있다.

04. 분산 처리 기술

https://dataonair.or.kr/db-tech-reference/d-lounge/technical-data/?mod=document&uid=235894

 분산 처리를 위해서는 다수의 컴퓨터와 네트워크가 필요하다. 이를 클러스터라고 한다. 클러스터의 기본 구성은 컴퓨터, 고속 네트워크(LAN), 클러스터를 구현할 수 있는 소프트웨어다. 슈퍼컴퓨터가 하나의 컴퓨터 안에서 CPU, 메모리를 이용해 서로 통신했다면, 클러스터는 여러 컴퓨터가 LAN으로 통신해 데이터를 처리한다.

 대량의 데이터를 분산 처리하는 장치로, 여러 개의 서버를 결합하여 하나의 컴퓨터로 보이게 만든다. 이를 ‘클러스터링’이라고 부른다. 클러스터링을 하면, 대용량 데이터 처리 중에 몇 개의 서버에 장애가 발생하더라도 나머지 서버에 자동으로 작업을 할당하고 작업을 이어갈 수 있다.

 분산 처리를 구현하는 대표적인 소프트웨어로는 ‘Apache Hadoop’과 ‘Apache Spark’가 있다. 하둡은 1대의 마스터 서버와 마스터 서버가 제어하는 여러 개의 슬레이브 서버로 구성된다. 마스터 서버는 데이터 처리 전체를 제어하고 슬레이브 서버는 연산을 처리한다. 처리 능력은 서버의 대수에 비례해서 늘어난다.

 스파크는 메모리 안에서 대용량 데이터의 병렬 분산 처리를 실행한다. 메모리 안에서 실행하므로 반복 처리 중에 디스크에 데이터를 빈번하게 읽고 쓰는 하둡과 비교하여 속도가 매우 빠르다. 그러나 테라바이트급 이상의 데이터는 클러스터링 시스템의 메모리에 모두 적재할 수 없으므로 적합하지 않다.

06. 스토리지 기술

 스토리지 기술에는 블록 스토리지, 파일 스토리지, 오브젝트 스토리지가 있다. 블록 스토리지는 데이터를 일정한 크기의 블록으로 저장하는 방식이다. 다양한 접근 경로로 신속한 검색이 가능하다는 장점이 있지만, 고비용이며 App, DB 수준의 작업으로 관리자 부담이 늘어난다는 단점이 있다. 파일 스토리지는 파일과 폴더의 계층 구조로 저장하는 방식이다.

 전통적인 방식으로 사용자 친화적이며 표준화되어있다는 장점이 있지만, 데이터 양이 늘어날 수록 파일과 폴더를 찾기 위한 리소스가 늘어나기 때문에 성능이 저하된다는 단점이 있다. 오브젝트 스토리지는 오브젝트 단위로 데이터를 저장하는 방식이다. 데이터는 키값을 가지며 해당 키값으로 빠르게 접근할 수 있으며 확장성이 좋다는 장점이 있지만, 오브젝트를 수정할 수 없다는 단점이 있다.

참고링크 : https://www.dknyou.com/blog/?q=YToxOntzOjEyOiJrZXl3b3JkX3R5cGUiO3M6MzoiYWxsIjt9&bmode=view&idx=10474168&t=board

09. 네트워크 가상화 기술

- VLAN

하나의 물리적인 네트워크를 여러 개의 논리적인 네트워크로 분할하는 기술이다. 이를 통해 조직 단위로 네트워크를 나누면 조직 안에 한정된 데이터를 전송할 수 있다. 물리적인 네트워크의 변경없이 네트워크를 분할하기 때문에 비용을 절감할 수 있다는 장점을 가지고 있다. 또한, VLAN은 서로 다른 네트워크 그룹이기 때문에 브로드케스트 패킷이 다른 VLAN으로 전송되지 않아 불필요한 트래픽을 줄일 수 있다.

참고링크 : https://steemit.com/cisc/@steemitnw/vlan

- VPN

인터넷과 같은 불특정 다수가 이용하는 네트워크에 가상으로 전용선과 같은 사설망을 연결하는 기술이다. 클라우드 서비스와 기업 사용자가 보유한 온프레미스 시스템이 인터넷을 통해 VPN에 연결할 때에는 IPsec이라는 프로토콜이 사용된다. 해당 프로토콜을 통해 통신 거점 인증, 통신 데이터의 암호화가 이루어지므로 거점 간 안전한 통신을 구현한다.

- NFV

네트워크 기능을 소프트웨어로 구현하여 가상 서버 위에 구축하는 기술이다. 라우터와 방화벽, 로드 밸런서와 같은 네트워크 장비의 기능을 가상 서버에서 어플리케이션 소프트웨어로 구현한다. 이를 통해 네트워크 장비의 수요 및 구성 변경 등에도 유연하게 대응할 수 있다. SDN과 개념이 혼동될 수 있지만 SDN은 ‘네트워크의 기능’에 초점이 맞춰진 기술이고, NFV는 ‘Appliance’에 초점이 맞춰진 기술이라는 점에서 차이가 있다.

참고링크 : https://spri.kr/posts/view/21671?code=industry_trend

10. SDN

기존 네트워크 장비마다 가지고 있던 통신의 전송 기능(데이터 플레인)과 제어 기능(컨트롤 플레인)을 분리하여, 제어 기능을 컨트롤러에 논리적으로 집중시켜서 데이터의 흐름을 소프트웨어로 정의하는 것이다. SDN이 등장하면서 스위치, 라우터와 같은 네트워크 장비의 아키텍처가 OS, 미들웨어, 애플리케이션이 통합된 수직 통합형 아키텍처에서 각 기능별 레이어를 분리해서 오픈형 인터페이스로 연결하는 아키텍처로 바뀌고 있다.