티스토리 뷰

Non-Programming/Computer

Cloud Computing (2)

글그리 2019. 6. 13. 13:17

클라우드 컴퓨팅

특성

클라우드 컴퓨팅이란 인터넷 환경에서 하드웨어 자원과 컴퓨팅 능력을 제공하는 서비스를 말한다. 플랫폼은 감추고 간단한 그래픽 인터페이스와 API만을 제공하여 사용자로 하여금 서비스가 어떻게 이루어져있는지 캡슐화하며 서비스가 언제 어디에서든 인터넷에 연결되어있기만 하면 제공받을 수 있는 것을 목표로 한다.

 

서비스 모델

  1. Cloud Software-as-a-Service (SaaS)
    인터넷 환경을 통해 어플리케이션을 제공한다. 사용자는 웹 또는 서비스 API를 통해 어플리케이션을 사용할 수 있다. (Google’s Gmail)
  2. Cloud Platform-as-a-Service (PaaS)
    어플리케이션을 개발할 수 있는 플랫폼을 제공한다. (Google’s App Engine)
  3. Cloud Infrastructure-as-a-Service (IaaS)
    컴퓨팅 자원을 제공한다. (AWS)


SaaS -> PaaS -> IaaS 로 갈 수록 사용자의 관리권한이 깊어진다.

 

4 deployment models

  1. private cloud
    서비스 제공업체가 자사 내부에 직접 클라우드 컴퓨팅을 위한 인프라를 구축하여 제공하는 것.
  2. community cloud
    협력하는 다수의 업체가 클라우드 컴퓨팅을 위한 내부 구조를 공유하면서 제공하는 것.
  3. public cloud
    클라우드 컴퓨팅을 위한 자원은 공용으로 사용하고 서비스를 그 자원 위에 올려서 제공하는 것. 아마존 AWS, 마이크로소프트 Azure 등이 여기에 속한다.
  4. hybrid cloud
    private cloud와 public cloud를 적절히 섞어서 제공하는 것.

 

 

 

컴퓨팅 패러다임

컴퓨터 모델은 컴퓨터가 발명된 이후로 계속 변화했다. 메인프레임, PDF, PC를 거쳐 1990년대부터 현대에 가장 중요하게 여겨지는 모델은 HTC (High Throughput Computing)HPC (High Performance Computing) 모델이다.

 

Throuput
컴퓨터가 동시에 처리할 수 있는 Task의 양을 말한다.
Performance
컴퓨터가 하나의 Task를 얼마나 빠르게 처리할 수 있는지를 뜻하며 일반적으로 CPU의 clock속도로 나타낸다.

  • 중앙처리 (Centralized Computing)
    하나의 OS가 메모리와 컴퓨팅 자원을 모두 관리하는 시스템. 즉, 하나의 컴퓨터가 모든 일을 처리하고 나머지는 해당 컴퓨터에 접속하는 형태.
  • 병렬처리 (Parallel Computing)
    다중 코어를 사용해서 여러가지 작업을 동시해 수행할 수 있도록 구축한 시스템.
  • 분산처리 (Distributed Computing)
    하나의 작업을 빠르게 수행하기 위해 여러개의 작은 작업으로 나눠서 여러 컴퓨터가 연산하고 결과를 하나로 취합하는 시스템.
  • 클라우드 (Cloud Computing)
    centralized 또는 distributed된 거대한 데이터센터에서 리소스를 제공하는 시스템.

 

성능 측정

CPU의 성능은 MIPS (Million Instructions Per Seconds) 즉, 초당 백만번 연산이 가능하다면 1MIPS로 나타내며, 네트워크 성능은 Mbps (Mega bit per seconds)로 나타낸다.

  • system throughput
    MIPS, Tflops (Tera floating-point operation per seconds), TPS (Transection per seconds) 등으로 측정한다.
  • system overhead
    시스템이 작업을 처리하기까지 걸리는 시간, 메모리 사용량 등을 의미한다.
  • QoS (Quality of Service)

 

 

 

클러스터

클러스터는 다수의 컴퓨터를 하나로 연결하는 구조로 연결하는 컴퓨터의 수만큼 성능이 높아지는 시스템이다. 그냥 여러 컴퓨터를 연걸해놓은 MPP(Massive Parallel Process)와는 다른 구조이다.

 

  • CUDA
    Nvidia에서 병렬처리를 위해 만든 엔진 CPU보다 훨씬 많은 연산을 할 수 있는 GPU의 특성을 활용해 CPU연산을 GPU를 병렬연결해서 처리할 수 있도록 하는 기술이다. CPU 메모리를 복사해서 사용하고 연산한 후에 다시 CPU 메모리로 저장해서 마치 CPU가 처리한 것 처럼 한다.
  • 가용성
    RAS에 의해 결정된다.
    Reliablity 즉, 시스템이 정상적으로 얼마나 오래 동작할 수 있는지.
    Availability 즉, 시스템이 가동중일 때 접근할 수 있는 퍼센트.
    Serviceability 즉, 하드웨어나 소프트웨어의 유지보수 업그레이드 비용.

 

 

 

가상화

다양한 컴퓨터를 하나의 시스템으로 묶기 위해서 가상화가 사용된다.

 

  • Host 가상화
    Host OS 위에 Guest OS가 돌아가는 가상화를 뜻한다. HostOS에 크게 제약사항이 없다는 장점이 있지만 OS를 2중으로 돌리는거기 때문에 오버헤드가 크다.
  • Hypervisor
    Host OS 없이 하드웨어 위에 하이퍼바이저라는 가상 OS를 올리고 그 위에 Guest OS가 돌아가는 방식이다. Xen, KVM 등이 있다. Host 가상화보다 오버헤드는 작지만 머신관리 기능이 부족하기 때문에 추가적인 컴퓨터나 콘솔이 필요하다.
  • 반가상화 (Para Virtualization)
    Guest OS는 하이퍼콜을 통해 하이퍼바이저에게 직접 명령을 실행시킬 수 있다. 모든 명령을 DOM0를 통해 요청하는 전가상화에 비해 속도는 빠르지만 하이퍼콜을 위해 Guest OS 커널을 수정해주어야 한다.

 

 

 

SOA (Service Oriented Architecture)

REST (REpresentational State Transfer)

  1. 리소스를 URL에 들어나게 설계한다. 이를 URI (Uniform Resource Identifier)라고 한다.
  2. 리소스는 CRUD 즉, PUT, GET, POST, DELETE 4가지만의 명령으로 쉽게 접근할 수 있다.
  3. http 통신이기 때문에 stateless하다. http session과 같은 정보를 저장하지 않고 구현이 단순해진다.
  4. 동사(CRUD)+명사(URI)로 이루어져있어서 어떤 행위를 하는지 명령에서 바로 알 수 있다. 메세지 또한 JSON이나 XML같은 직관적인 텍스트로 되어있기 때문에 REST API 메세지만 보고도 어떤 서비스를 하는지 한눈에 알 수 있다.

 

웹 서비스 (Web Service)

네트워크 상에서 서로 다른 컴퓨터들의 상호작용을 위한 분산 소프트웨어 시스템으로 SOAP, WSDL, UDDI 등 주요기술로 구현된다.

 

SOAP (Simple Object Access Protocol)
XML과 HTTP를 기반으로 네트워크 상의 다른 자원에 접근하기 위한 프로토콜로 서비스제공자와 사용자는 SOAP을 사용해 연결 (Bind)되어있다.
WSDL (Web Service Description Language)
XML 기반의 언어. 서비스 제공자는 이 언어르 사용해 자신의 서비스를 UDDI에 등록 (publish)한다.
UDDI (Universal Description, Discovery, and Integration)
비즈니스 레지스트리. 서비스 브로커라고도 하며 사용자는 UDDI에서 원하는 서비스의 서비스 제공자를 검색(Find)한다.

 

주요 메세지는 주로 XML로 만들어진다.

 

 

 

병렬 프로그래밍

병렬프로그래밍은 아래 idea에 의해 발전되었다.

 

  • 프로그래머의 생산성을 향상시킨다.
  • 프로그래밍 시간을 단축한다.
  • 시스템의 throughput을 향상시킨다.
  • 높은 수준의 추상화를 추구한다.
  • 기본 자원을 보다 효율적으로 사용한다.

 

MapReduce

분산 시스템에서 작업을 여러개의 단위로 나눠서 처리하도록 하는 것을 말한다. 작업을 분할하는 것을 Map이라고 하며 끝난 작업을 하나의 결과로 종합하는 작업을 Reduce라고 한다.

Hadoop

Apache 재단에서 만든 Java 기반의 Map Reduce 프레임워크로 HDFS에 데이터를 저장하고 동시에 처리한다. RDBMS는 데이터가 많아지면 성능저하가 심해지는데 NoSQL 성격을 띄고있는 하둡은 데이터의 정합성 등을 고려하지 않기 때문에 데이터가 많아져도 성능저하가 심하지 않다.

 

HDFS (Hadoop Distributed File System)
대용량 파일을 여러개의 서버에 분할해서 저장하는 시스템이다. 기존 64MB크기의 블록으로 나누던 것에서 Hadoop 2.0이 되면서 블록크기가 128MB로 증가했다.

 

HDFS는 네임노드와 데이터노드로 구현되는데 데이터노드는 네임노드에게 일정시간마다 하트비트를 보내고 하트비트가 없는 데이터노드는 장애가 발생한 것으로 간주한다. 데이터노드는 실제 파일을 로우데이터와 메타데이터 2개로 저장한다.
HDFS에서 읽기/쓰기를 할 때는 네임노드에 stream을 생성해서 open/create를 요청한다. 네임노드는 요청에 맞는 데이터노드의 주소를 반환해서 작업을 할 수 있도록 한다.

 

 

 

블록체인

블록체인은 트랜젝션 정보가 담긴 블록을 계속 생성하면서 트랜잭션의 유효성을 검사하는 시스템이다. 블록은 이전 블록의 Hash, Time stamp, 트랜잭션, Hash로 이루어져있어서 모든 블록은 생성된 순서대로 연결되어있다. 이 Hash를 계산해서 생성하는 것이 흔히 말하는 채굴 (Mining)이며 이 알고리즘은 시간이 지날수록 점점 어려워져서 채굴을 위해서 더 좋은 컴퓨팅 성능이 필요해지고있다.
비트코인은 Hash를 위해 SHA를 사용한다.

 

SHA (Secure Hashing Algorithm)
단방향 Hash이면서 고정된 크기의 Hash를 생성한다.

 

블록을 수정하기 위해서는 해당 블록의 Hash도 변경해야하지만 그 후에 생성된 블록의 Hash도 모두 수정해야되기 때문에 10분에 1개씩 생성되는 블록의 Hash를 모두 구하는것은 불가능하다는 것에서 착안한 개념이다.

 

 

 

Grid

다양한 환경, 하드웨어를 가진 컴퓨터 리소스들을 다수의 사용자가 공유할 수 있도록 구축한 시스템이다. CPU Scavenging이라고 하는, 네트워크상의 유휴 CPU를 감지하고 사용하는 방법으로 구현한다.

'Non-Programming > Computer' 카테고리의 다른 글

머신러닝 튜토리얼  (0) 2019.07.16
무선 LAN  (0) 2019.06.11
Cloud Computing (1)  (0) 2019.04.23
깃(Git) 용어 정리  (0) 2017.09.18
변복조란?  (0) 2017.02.25
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함