클라우드에 대한 공부~
ComputerScience/System Programming

클라우드에 대한 공부~

앨리스 2기 트랙, azure를 통해 두 번째 팀 프로젝트 배포를 해보았다. 그리고 그 microsoft의 azure에 대한 관심이 생겨서 공부해보기로 했다. 그럼 우리가 사용한 azure는 platform as a service니까 paas인가? 


먼저 클라우드란 무엇일까?

공유 구성이 가능한 resource(네트워크, 서버, 스토리지, application서비스)를 통합해 어디서나 간편하게 네트워크 요청에 따라 접근 가능하게 하는 것

그럼 클라우드를 실현하는 기술은?

1. 가상화 기술! 

가상화란 서버같은 하드웨어 리소스(예 CPU, 메모리, 스토리지 )를 논리적으로 다룰 수 있게 만드는 매커니즘이다. 물리적인 하드웨어 리소스를 가상화 기술로 논리적으로 다루고 있기 때문에 가능해짐.  (여기서 추상화라는 개념이 중요하고) 

서버 가상화기술(하이퍼바이저형, 컨테이너형, 호스트 OS형 등) - 하나의 물리적 서버 리소스에 여러 개의 서버 환경을 할당  / 가상 서버에는 cpu와 memory, storage , network 등을 에뮬레이트 해서 물리 서버에 남는 리소스를 최대한 활용해 공간 절약과 비용 절감에 도움됨. 하드웨어 자원을 소프트웨어적으로 나누어(가상 서버 각각 독립된 상태) 사용자에게 제공

cf) 하이퍼바이저 형 - 하드웨어 환경을 통째로 가상화하는 것 ( VMware vSphere, Xen Server, Hyper-V)

2. 컨테이너 기술 : 이것도 가상화 기술 중 하나인데, 하나의 OS환경에서 application을 실행하기 위한 영역을 여러 개로 나누어 사용할 수 있는 것! 애플리케이션의 실행 환경을 가상화 , 성능 저하도 없고 게스트 os가 필요 없으므로 보조기억장치 사용량도 줄이고, 개별 컨테이너가 요구하는 하드웨어 리소스가 적어 부팅, 시작과 정지가 빠르고, 매우 많은 양의 컨테이너 올릴 수 있다. (도커, 쿠버 네티스-컨테이너 타입 SW 운영 관리해주는 도구)  단점 ; 호스트 OS와 컨테이너는 커널을 공유. LINUX커널에서 WINDOWS컨테이너 동작은 불가능함

 

3. 분산처리 기술 : 대량의 데이터를 여러 서버에 나누어 병렬로 빠르고 효율적으로 처리할 수 있는 기술. 처리 부하 상황에 따라 서버와 같은 리소스 늘리거나 줄이기 가능. 가격 부담 줄이면서 대량의 데이터 고속으로 처리 -> 대량 데이터 분산 처리장치 클러스터링이라고 부름. 대표 sw( Apache Hadoop: 하나의 마스터 서버 슬레이브 서버로 구성, Apache Spark: 메모리 안에서 대용량 데이터의 병렬 분산 처리 실행 속도 빠르지만 테라바이트급 이상의 데이터는 적재 불가능)

4. 데이터베이스 기술 : 사용목적과 데이터 특성에 따라 RDB(관계형 데이터베이스)와 NoSQL(키 밸류형, 컬럼지향형, 문서 지향형, 그래프형)등이 제공

5. 그 외 스토리지 기술(블록 스토리지, 파일 스토리지, 오브젝트 스토리지), 오픈소스 클라우드 기반 소프트웨어, 운영관리, 보안 등 다양한 기술로 구성


IaaS

하드웨어 자원을 네트워크를 통해 이용하는 형태(cpu나 하드웨어 등 컴퓨팅 리소스를 네트워크를 통해 서비스로 제공하는 모델) 


대표적인 서비스 : 가상 서버 및 온라인 스토리지 ex) Amazon web services가 제공하는 amazon elastic compute cloud(EC2)

 

IaaS 기반 구성하는 기술

서버 가상화 기술(하이퍼바이저형, 컨테이너형, ) - 하나의 물리적 서버 리소스에 여러 개의 서버 환경을 할당 

네트워크 가상화 기술(VLAN, VPN NFV, SDN 등)

VLAN - (Virtual Lan) 하나의 물리적인 네트워크를 여러 개의 논리적인 네트워크로 분할, 클라우드와 데이터 센터 사이에 사용한다면 프라이빗한 환경 구축 가능

VPN - Virtual Private Network 가상으로 전용선과 같은 사설망을 연결하는 기술

NFV -(Network Functions Virtualization) 네트워크 기능을 소프트웨어로 구현하여 가상 서버 위에 구축하는 기술, 라우터와 게이트웨이 방화벽 로드밸런서와 같은 네트워크 장비의 기능을 가상 서버에서 애플리케이션 소프트웨어로 구현한다. 전용 하드웨어 없이 네트워크 기능 제공

스토리지 가상화 ( 데이터 엑세스 방식 : 블록 스토리지, 파일 스토리지, 오브젝트 스토리지 등)

블록스토리지 - FC와 iSCSI 이용 - 블록 스토리지 논리 볼륨을 블록 단위로 엑세스

파일 스토리지 - 파일 시스템을 네트워크 통해 연결(SMB나 CIFS, NFS 등 이용) 파일 단위로 전송

오브젝트 스토리지 - HTTP/HTTPS이용 - 오브젝트 단위로 전송 데이터를 객체 단위로 처리, 갱신 빈도 적은 대량 데이터를 저장, 장기보존 용도

가상화 기반 기술 (OpenStack, VMware, vSphere..) 

오픈소스 클라우드 기술-OpenStack - 진정한 자체 프라이빗 클라우드 구축하기 위한 소프트웨어.

Apache 라이센스 2.0 적용, 표준개발언어 Python, 외부 API는 REST API(http기반), Amazon EC2/S3 호환, 표준 OS로는 Ubuntu Linux

다양한 기능의 컴포넌트로 구성, 대표적 컴포넌트(소프트웨어)는 Nova(하이퍼바이저 제어 및 베어 메탈 프로비저닝 수행), Neutron(가상 네트워크 제어), Swift(오브젝트 스토리지 기능), Glance(템플릿 이미지와 스냅샷의 보존 및 관리), Keystone(사용자 인증 기능), Horizon(관리 web 대시보드 기능), Cinder(블록 볼륨 관리) 등이 있다.

 


Paas

애플리케이션 개발환경을 네트워크를 통해 이용하는 형태

자사에서 개발한 응용 프로그램을 가동할 수 있다. - 어플리케이션 자유도는 높지만 서버나 미들웨어 등 상세 설정은 불가능 -> 특정 Paas 의존도가 높아지면 다른 환경으로의 migration이 어려워진다.
이용용도 : 개발 및 테스트 시행에 큰 처리능력이 필요한 경우, 자사에서 운용 중인 애플리케이션의 최대 부하를 분산 처리하는 경우 / 스마트 폰이나 태블릿 등의 모바일 서비스에서 인터넷 접속이 필요한 경우! / 다양한 사물들이 인터넷 통신을 하는 (IoT)의 센서 데이터 같은 대용량 데이터를 효율적으로 수집 처리

 

PaaS 기반 구성하는 주요 기술 - 미들웨어 cf) OS(가상화 소프트웨어), 인프라(서버, 네트워크, 스토리지)

분산처리기술 ( Apache Hadoop , Apache Spark 등)

데이터베이스 기술(RDB, NoSQL 등) 

오픈소스 클라우드 기술(Cloud Foundry, OpenShift 등)  

PaaS 기반 소프트웨어 - Cloud Foundry 등의 PaaS 기반 소프트웨어는 PaaS 기능을 제공하는 소프트웨어로 구성.  IaaS와 독립적으로 동작, AWS와 VMware, OpenStack과 같은 다양한 클라우드 서비스에서 실행시킬 수 있다. 컨테이너 실행환경도 지원 / 컨테이너와 URL을 매핑하여 부하 분산시킨다.


SaaS

소프트웨어의 기능을 네트워크를 통해 이용하는 형태

하드웨어, os, 미들웨어, 앱 모두 cloud 사업자가 운용한다

하나의 서버 여러 기업에서 공유(멀티테넌트) 전제 ex) CRM(고객정보관리시스템), 전자메일, G-suite, office365 등

 

 


  • 클라우드 분류

더보기

클라우드 이용 모델 (환경을 누가 어디에 구축하고 운영하느냐에 따라 부르는 이름이 달라진다.)

 

- 퍼블릭 클라우드 : 사업자가 시스템 구축, 인터넷망 등의 네트워크를 통해 불특정 다수의 기업과 개인에게 서비스를 제공하는 형태 

- 프라이빗 클라우드 : 클라우드 관련 기술이 활용된 자사 전용 환경을 구축하여 컴퓨팅 리소스를 유연하게 이용 //  높은 기술력과 운용능력이 필요하고 비용이 소요

- 커뮤니티 클라우드 : 공통의 목적을 가진 특정 기업들이 클라우드 시스템을 형성하여 데이터 센터에서 공동 운영하는 형태

- 하이브리드 클라우드 : 퍼블릭 클라우드와 프라이빗 클라우드, 커뮤니티 클라우드 같은 클라우드 서비스들과 온프레미스 시스템을 연계시켜 활용하는 시스템 및 서비스


온프레미스(자체 시스템 구축)과 비교한 클라우드의 장점
-   경제성/ 유연성/ 가용성/빠른 구축 속도
  • 클라우드 다섯 가지 특징
    • 사업자 수동 조작 없이 사용자별 관리 화면에서 서비스 이용 가능
    • 광범위 network접속 가능(모바일 기기 등)
    • 리소스 공유(여러 사용자 같은 컴퓨팅 리소스 이용 ) 사용자마다 리소스 할당되었지만 어느 부분인지 알 순 없다.
    • 스케일 업, 다운(처리능력 올리거나 내리거나) 가능
    • 이용한 만큼 요금 부과

 


마지막으로 클라우드 분류, 장단점 , 특징에 대해 정리하고 마무리~ :)


엘리스에 들어와서 요행 바라지 않고 노력하는 친구를 많이 만나 꼼꼼하게 공부하려고 노력 중~ 당장 다음 주 직무 멘토링에, 모의면접에! 이력서 수정도 못 마쳤고 배운 내용을 정리하는데도 미숙하지만 ㅎㅎ 아직 알지 못하는 사람들도 이해하기 쉽게 글을 쓰고 싶다.