본문 바로가기

KNU Freshman/컴퓨터학개론

(12) 분산시스템 / 클라우드

* 분산시스템
인터넷에 연결된 여러 컴퓨터들의 처리 능력을 이용하여 메시지를 하나에서 다른 하나로 보냄(message passing)으로써 거대한 계산 문제를 해결하려는 분산처리 모델
느슨하게 네트워크로 연결된 컴퓨팅 자원들 간에 자원을 공유하는 것이 분산 시스템의 주요 목적
    • CPU, 메모리, 저장장치(HDD, SSD), 네트워크모든 물리적 혹은 논리적 자원
- 사용 예: 웹서비스, 클라우드 컴퓨팅, P2P, 분산 데이터베이스 등

 
- 분산 시스템의 물리적 모델
• 분산 시스템의 하드웨어 구성요소(컴퓨터와 네트워크)를 추상화하여 상위 계층으로 서비스를 제공해 하위 계층에 대한 지식없이 분산 자원을 사용함
 
• 분산 시스템의 발전 과정:
    – 초기 분산 시스템 [70-80s]: LAN-based, 10-100 nodes
    – 인터넷 규모의 분산 시스템 [early 90-2010]: 클러스터, 그리드, P2P
    – 오늘날의 분산 시스템: 클라우드, 모바일 컴퓨팅, IoT 등으로 분산 시스템에 참여하는 컴퓨팅 노드가 동적으로 변경됨
 
• 분산 시스템의 특징
    – 동시성 
    – 글로벌 시계의 부재: 시간 동기화의 어려움
    – 부분적인 장애 및 오류 
    – 네트워크로 느슨하게 연결된 구조로 인한 성능 저하
 
- 분산 시스템의 구조
• 분산 시스템의 구조는 컴퓨팅 노드들의 위치와 각각의 관계에 따라 달라짐

– 클라이언트-서버 모델
• 클라이언트: 메시지를 보내는 역할
• 서버: 메시지를 수신하여 요청된 작업을 수행하고 결과를 다시 보내주는 역할
• 서버는 또 다른 서버의 작업을 요청할 수 있음 (예: 웹서비스)
    – 2-tier(티어) 혹은3-tier 구조가 일반적인 웹 서비스 모형임

 
피어--피어(Peer-to-peer) 모델
클라이언트와 서버가 서로 대등한 관계로 클라이언트와 서버의 구별이 모호함
: 블록체인, 토렌트

 
* RESTful APIs
    – 분산 시스템 (혹은 서버)가진 자원에 접근하고 작업을 요청하기 위한 기반의 인터페이스
    – HTTP기반으로 응용 계층에서 컴퓨팅 노드들 간의 메시지 전송을 위한 커뮤니케이션 수단
    – 많은 REST API들이 공개되어 있으므로 이를 활용하여, 새로운 서비스를 개발할 있음
    – 서로 다른 언어를 사용하여 REST API사용할 있음
        • REST APIPython으로 구현되더라도 클라이언트는 Python, Java, Javascript 등을 모두 사용할 있음
 
REST 기반 서비스에서는 HTTP Verbs사용하여 서자원에 접근함
    – GET 특정 자원을 ID기반하여 추출
    – POST 새로운 자원을 생성
    – PUT 기존의 자원을 업데이트
    – DELETE ID사용하여 기존 자원을 삭제

<REST example>
GET 함수사용하여 유저 DB정보를 추출함 (조회)
   데이터 포맷에 대한 정보는 “Accept” 헤더에 의해 표시됨
<DB>

 
POST 함수를 사용하여 유저 DB에 정보 추가 (삽입)

 
PUT 함수를 사용하여 유저 DB를 업데이트 (갱신)

 
DELETE 함수를 사용하여 특정 유저를 삭제 (삭제)

 
잘못된 자원에 접근할 때 
   –HTTP 상태코드를 사용하여성공/실패를 표시함

 
* 마이크로서비스(Microservice)
마이크로서비스(Microservice)작은 크기로 정의된 API의미하며, 소프트웨어를 개발할 여러 개의 마이크로서비스를 조합하여 만들 있음
마이크로서비스는 독립적이며 작은 규모이므로 개발이 쉬우며, 운영시에도 쉽게 확장하거나 축소할 있음
오늘날의 클라우드 기반의 웹 서비스에서 많이 사용됨

 
* 클라우드 컴퓨팅이란?
클라우드 컴퓨팅클라우드 컴퓨팅은 인터넷(“클라우드”)통해 서버, 스토리지, 데이터베이스, 네트워킹, 소프트웨어, 분석, 인텔리전스 등의 컴퓨팅 서비스를 제공하는 것입니다. 클라우드 컴퓨팅을 통해 빠른 혁신과 유연한 리소스를 제공하고 대규모 경영의 이익 효과를 누릴있게 됩니다. 일반적으로 사용한 클라우드 서비스에 대해서만 요금을 지불하므로, 운영 비용을 낮추고 인프라를 보다 효율적으로 운영할 있습니다. 그뿐만 아니라,비즈니스 요구 사항의 변화에 따라 규모를 조정할 있습니다. 
 
Cloud = Lots of storage +computations
It’s a cluster!
It’s a supercomputer!
It’s a datastore!
 (위 조건들을 만족해야 클라우드 컴퓨팅)


* 클러스터란?
컴퓨터 클러스터(computer cluster)여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합
     – 저렴한 마이크로프로세서고속의 네트워크, 그리고 고성능 분산 컴퓨팅용 소프트웨어들의 조합 결과
 
* 클라우드 컴퓨팅의 구성요소

 
 
* 클라우드 컴퓨팅 공급자
•AWS: Amazon Web Services
    –EC2: Elastic Compute Cloud
    –S3: Simple Storage Service
    –EBS: Elastic Block Storage
•Microsoft Azure
•Google Cloud/Compute Engine/AppEngine
•Rightscale, Salesforce, EMC, Gigaspaces, 10 gen,Datastax, Oracle, VMWare, Yahoo, Cloudera
 
* 클라우드 컴퓨팅의 특징
• 자원 공유와 관리
– 클라우드는 자원을 공유하기 위하여 공용 자원 풀(Pool)을 사용함
– 인터넷 기술을 사용하여 확장성(Scalable) 있고, 서비스를 제공함
• (“elastic computing”) 탄력 컴퓨팅은 동적으로 수요에 따라 컴퓨팅 자원을 획득할 수 있는 기술을 말함
• 사용된 자원은 계량되고 사용자는 그에 따라 요금이 청구됨
 
* 클라우드 컴퓨팅의 특징
• 사용량에 따라 자원을 동적으로 할당할 수 있음
    – 기존의 컴퓨팅 환경에서는 최대 사용량에 맞춰 자원을 미리 확보해 둬야함

* 클라우드의 종류
퍼블릭(Public) 클라우드
퍼블릭 클라우드는 가장 일반적인 클라우드 서비스 종류로 최종 사용자가 소유하지 않은 IT 인프라에서 생성되는 클라우드 환경
주변에서 자주 있는 Google Cloud, AWS, Microsoft Azure 등이 퍼블릭 클라우드에 해당함
 
사설(Private) 클라우드
프라이빗 클라우드는 클라우드를 기업 내부에서 독점하는 클라우드 서비스 종류로 제한된 네트워크 내에서 특정 기업이나 사용자만을 대상으로
클라우드 오픈 스택 기술 등을 이용해 컴퓨팅 구성요소를 직접 구축하기 때문에 보안이 뛰어나고 상황에 맞게 기능을 맞춤형으로 커스터마이징할 수 있음
 
혼합(Hybrid) 클라우드
하이브리드 클라우드는 퍼블릭 클라우드와 프라이빗 클라우드가 결합한 클라우드 서비스 종류
IT 서비스의 대부분이 하이브리드 클라우드 형태를 가지고 있지만 고객이 이를 인지하기는 어려움
 
* 클라우드 서비스의 종류

 
- Infrastructure-as-a-Service (IaaS)
사용자는 운영체제 및 데이터,애플리케이션, 미들웨어 및 런타임을 담당하고 제공업체는 사용자가 필요로 하는 네트워크, 서버, 가상화 및 스토리지의 관리와 액세스를 담당
• 제공업체가 사용자를 대신해 인프라를 유지 관리하거나 업데이트하며, 사용자는 애플리케이션 프로그래밍 인터페이스(API) 또는 대시 보드를 통해 인프라에 액세스 및 제어
• 필요한 구성 요소만 구매하고 필요에 따라 확장 또는 축소 가능
    – IaaS는 개발 및 테스트 환경의 구축 및 제거가 빠르고 유연하므로 개발 환경에서 구축해야 할 인프라만 사용하고 필요에 따라 확장 또는 축소하며, 개발이 완료되면 사용을 중단하고 사용량에 대한 비용만 지불 가능함
• IaaS의 주요 단점은 제공업체의 보안 문제 가능성, 제공업체가 여러 클라이언트와 인프라 리소스를 공유해야 하는 멀티 테넌트(Tenant/세입자) 시스템 및 서비스 신뢰성 (멀티 테넌트 시스템으로 인해 VM 또는 메모리를 oversee 할 수도 있음)
• 예: AWS, Microsoft Azure, Google Cloud
 
- Platform-as-a-Service (PaaS)
제공업체가 자체 인프라에서 하드웨어와 소프트웨어를 호스팅 하고 이러한 플랫폼을 사용자에게 통합 솔루션, 솔루션 스택 또는 인터넷을 통한 서비스로 제공
• 주로 개발자와 프로그래머에게 유용한 PaaS를 통해 사용자는 자체 애플리케이션을 개발, 실행 및 관리할 수 있으며, 이 과정에서 일반적으로 이러한 프로세스와 관련된 인프라 또는 플랫폼을 구축하고 유지 관리할 필요가 없음
• 사용자는 애플리케이션 코드를 작성, 빌드, 관리하지만 소프트웨어 업데이트 또는 하드웨어 유지 관리가 필요 없음
    – 빌드 및 배포를 위한 환경이 사용자에게 제공됨
• 예: AWS Elastic Beanstalk, Heroku 등
 
- Service-as-a-Service (SaaS)
• 클라우드 애플리케이션 서비스는 가장 포괄적인 형식의 클라우드 컴퓨팅 서비스로, 모든 애플리케이션은 제공 업체가 관리하며 웹 브라우저를 통해 제공
• 제공 업체가 소프트웨어 업데이트, 버그 수정 및 기타 일반 소프트웨어 유지 관리 작업을 처리하며, 사용자는 대시 보드 또는 API를 통해 애플리케이션에 연결함
• SaaS로 시간과 유지관리를 줄일 수 있지만 제어, 보안 및 성능과 관련한 비용이 소요되며, 서비스 제공업체에 대한 의존성이 있음
• 예: Dropbox, Salesforce, Google Apps
 
* 클라우드 컴퓨팅의 핵심: 가상화 (Virtualization)
• 가상화
   - 서버, 스토리지, 네트워크 및 기타 물리적 시스템에 대한 가상표현을 생성하는데 사용할 수 있는 기술
• 가상 소프트웨어는 물리적 하드웨어 기능을 모방하여 하나의 물리적 머신에서 여러 가상 시스템을 동시에 실행할 수 있음
 
• 핵심 개념
    – 서버, 스토리지, 네트워크 및 기타 물리적 시스템에 대한 가상 표현을 생성할 수 있는 기술
    – 가상 소프트웨어는 물리적 하드웨어 기능을 모방하여 하나의 물리적 머신에서 여러 가상 시스템을 동시에 실행할 수 있음
 
•구성 요소
    – 호스트 –> 하위 하드웨어 시스템
    – 가상머신 모니터(VMM) 혹은 hypervisor -> 가상머신을 생성하고 실행할 수 있는 구성요소
    – Guest -> 하이퍼 바이저에 의해서 제공되는 가상머신
 
* 하이퍼바이저의 종류종류
• 유형 1 (기업, 학교)
– 호스트의 하드웨어에서 직접 실행되어 게스트 운영체제를 관리
– 호스트 운영체제를 대신하며 하이퍼 바이저가 하드웨어에 직접 VM 리소스를 예약
– 엔터프라이즈 데이터센터 등 서버 기반 환경에 적합함
 
• 유형 2 (개인)
– 호스트 운영체제에서 게스트 운영체제를 추상화하는 방식으로 작동함
– 개인용 컴퓨터에서 여러 운영체제를 사용하는 경우에 적합함

'KNU Freshman > 컴퓨터학개론' 카테고리의 다른 글

(14) 소프트웨어공학  (0) 2024.06.09
(13) 데이터베이스  (0) 2024.06.09
(11) 네트워크  (1) 2024.06.03
(10) 통신의 발전 과정  (0) 2024.05.20
(9) 입출력 장치(HDD) & Thread, Lock  (0) 2024.04.17