티스토리 뷰

Non-Programming/Computer

Cloud Computing (1)

글그리 2019. 4. 23. 13:16

분산시스템(Distributed System)은 단일 하드웨어로 구성하기 힘든 규모의 서비스를 제공하려는 목적으로 여러개의 하드웨어가 서로 각자 맡은일만 수행할 수 있도록 구축한 시스템을 말한다.

분산시스템의 목적

  • 리소스의 공유
    원격 저장소에 있는 자원을 쉽게 접근할 수 있어야한다.
  • 투명성
    사용자는 시스템이 어떻게 분산되어있는지 알 필요가 없다.
  • 개방성
    기능을 추가하는데 어려움이 없어야한다.
  • 확장성
    얼마나 많은 요청을 처리할 수 있는지를 말한다. 트래픽이 증가했을 때 문제없이 동작할 수 있는지, 저장공간을 동적으로 추가하거나 줄일 수 있는지 등을 말한다.
    이를 위해 분산시스템을 사용하는 서버는 비동기 통신을 지원하여 작업이 처리되는 동안에도 계속 클라이언트와 통신을 할 수 있게 하여 latency를 줄일 수 있다.
  • 분산 알고리즘
    하나의 서버가 모든 알고리즘을 가지고 있으면 안되고, 논리적인 절차에 의해서 모든 서버가 동작한다.

분산시스템의 종류

Distributed ComputingSystem

  • 클러스터 컴퓨팅 시스템 (Cluster Computing System)
    여러개의 컴퓨터가 하나의 시스템처럼 동작하도록 구축한 시스템을 말한다. 부하를 분산하여 성능이 낮은 하드웨어를 가지고도 복잡한 기능을 수행하도록 할 수 있다.
  • 그리드 컴퓨팅 시스템 (Grid Computing System)
    클러스터 컴퓨팅이 근거리 통신으로 구축되는 반면 그리드 컴퓨팅 시스템은 WAN을 사용해서 보다 넓은 범위의 하드웨어를 통합하여 사용할 수 있다. 또한 플랫폼의 통일이 필요없다는 점에서 클러스터 시스템보다 더 큰 개념이라고 볼 수 있지만 보안의 문제로 자주 사용되지는 않는다.

Distributed Information System

  • 거래처리시스템 (Transaction Processing System)
  • Enterprise Application Integration

    Distributed Parvasive System

  • 유비쿼터스

2. Architecture


소프트웨어 아키텍처

하나의 소프트웨어를 개발할 때 고려할 수 있는 여러가지 구조를 말한다.

  • Layered Architecture
    소프트웨어의 각 기능을 담당하는 레이어를 상하구조로 구현해서 요청과 응답을 주고받도록 구현한 아키텍처
  • Object Based Architecture
    각 기능을 수행하는 오브젝트들이 서로 소통하면서 기능을 제공하도록 구현한 아키텍처로 일반적인 OOP개념과 비슷하다.
  • Event Based Architecture
    하나의 이벤트버스에 연결된 컴포넌트들이 이벤트에 반응하도록 구현한 아키텍처
  • Data Centered Architecture
    공통 데이터 저장소를 두고 컴포넌트들이 저장소에 접근하도록 구현한 아키텍처

시스템 아키텍처

여러 하드웨어와 소프트웨어가 참여하는 시스템을 설계할 때 고려할 수 있는 여러가지 구조를 말한다.

  • Server-Client Architecture
    클라이언트-서버 모델은 그 깊이와 역할의 분배에 따라 종류가 나뉜다. 전체 시스템은 크게 User Interface, Application, Database 정도로 나뉘는데 이 3가지의 기능을 어떤 깊이로 누구에게 권한을 줄 것인지에 따라 용도가 다르다. 최근에는 보안이나 서비스 안정성을 우선하기 위해 서버쪽에 더 큰 역할을 주는 추세이다.
  • Pear-to-Pear Architecture
    중앙 서버를 두지 않고 참여자끼리 자원을 공유하도록 구축한 아키텍처이다. 이 때 각 노드를 pear라고 하며 특정 pear에게 더 큰 역할을 부여하는 아키텍처도 있다.

3. Processes


MultiThread Client

worker thread와 communication thread로 나누어서 latency를 숨기며 복제 투명성을 유지할 수 있다.

Multithreaded Server

client와 비슷하게 worker, dispatcher 등으로 thread를 나누어서 각자 맡은 처리를 하도록 구성할 수 있다.

  • multi-threaded : parellelism, blocking system call
  • single-thread : non-parellelism, blocking system call
  • finite-state machine : parellelism, non-blocking system call

Virtualization

소프트웨어가 하드웨어의 기능을 가상화해서 서로 다른 하드웨어 위에서도 동일한 동작을 수행할 수 있도록 하는 시스템을 말한다. 대표적으로 JVM이 있다. 가상화 머신은 그 종류에 따라 하드웨어 바로 위에서 동작하는 것과, OS위에서 동작하는 것 등으로 나뉜다. 일반적으로 하드웨어에 더 가까워질 수록 성능이 더 향상된다.

Client-Server Architecture

  • stub
    stub은 서버에서 클라이언트에게 부여하는 코드묶음으로, 서버의 분산 투명성을 유지하는 역할을 한다. 클라이언트는 정해진 API를 통해 서버에게 요청을 하고 stub 코드가 이를 가로채서 분산된 서버에게 다시 알맞게 분배하여 요청한다.
  • stateful
    youtube 이어보기처럼 이전의 상태를 서버가 저장하고 있는 경우를 stateful server 라고 한다.
  • stateless
    페이지를 새로고침하면 회원가입 양식을 다시 입력해야하는 서비스의 경우 stateless server 라고 한다.

4. Communication


RPC (Remove Procedure Call)

별도로 연결을 위한 코드를 작성하지 않아도 원격 프로세스의 함수를 호출할 수 있도록 해주는 기능을 말한다. 클라이언트-서버 구조에서 각 컴포넌트의 하위에 stub 코드가 생성되고 원격 호출은 stub 코드를 통해 전송되고 실행된다. socket 또한 비슷한 개념이며 같은 결과를 낼 수 있지만 RPC는 좀 더 다양한 기능을 제공한다.
원격호출할 때 파라미터들은 메시지와 함께 marshalling 되어 전송되는데 오브젝트를 직렬화 하는 것과 유사한 개념이다.

  • AsynchronousRPC
    클라이언트가 요청을 보내면 서버는 먼저 요청을 받아들였다고 응답한다. 응답을 받은 클라이언트는 대기를 멈추고 다시 작업을 수행하고 요청에 대한 처리가 끝난 서버는 클라이언트에게 단방향 RPC로 결과값을 보내고 결과값을 받은 클라이언트는 그에 따른 처리를 한다. 따라서 요청이 수행되는 동안 클라이언트는 다른 작업을 할 수 있다.

Multicast

하나의 메시지를 여러 컴포넌트들에게 전송하는 기술을 말한다. 멀티캐스팅의 신뢰도를 높이기 위한 다양한 방법들을 시도한다.

  • Holdback
    메시지의 수신자는 메시지를 수신할 때 마다 ACK신호를 다시 보내서 정상적으로 메시지를 수신했다고 응답한다. 매번 ACK신호를 보내기 때문에 통신은 많아지지만 가장 신뢰도가 높은 방법이라고 할 수 있다.
  • Negative Acknowledgement
    말 그대로 ACK신호를 반대 개념으로 사용한다. 메시지를 수신하지 못한 경우에만 ACK신호를 보내서 재전송을 요청한다. 송신측은 메시지에 번호를 붙여서 전송하고 수신측은 이 메시지 번호가 순서대로 들어오는지 검사한다. 1-2-3-4-5 순서로 들어오면 문제가 안되지만 1-2-3-5 순서로 메시지가 들어오면 4번 메시지를 수신하지 못했다는 뜻이기 때문에 ACK신호로 재전송을 요쳥한다.
    통신 횟수가 줄어드는 장점이 있지만 오류를 발견하기까지 시간이 오래걸릴 수 있다는 단점이 있다. 예를들어 송신측이 1-2-3-4 메시지를 송신하고 수신측이 1-2-3 까지만 수신했다면 송신측에서 다시 5를 송신하여 4번이 유실되었음을 알게될 때 까지 유실된 사실조차 모르게 된다.

5. Naming


Flat Naming

어떠한 정보도 가지고 있지 않은 이름으로 전역에서 사용되기 때문에 같은 이름이 있을 수 없다. 따라서 broadcasting, multicasting에 사용된다.

Structured Naming

노드 구조에서 구조의 깊이를 포함하는 이름으로 디렉토리 정보를 포함하고 있어서 경로가 다르다면 이름이 같아도 문제가 없다. 사람이 이해하기 쉬운 이름체계이다.

6. Synchronization


Clock Synchronization

Time Server를 두고 시간을 계속 동기화하면서 처리하도록 구성하는 것을 말한다.

  1. Time Server로 동기화 요청을 보낸다.
  2. 현재시간을 보내준다.
  3. 요청한 시간과 응답받은 시간의 차이를 계산해서 레이턴시를 구한다.
  4. 자신의 시간을 레이턴시만큼 조정한다.

Logical Clock Synchronization

실제 시간과 관계없이 논리적인 순서만 동기화한다.

  • Lamport Logical Clock Synchronization
  1. 서로 요청을 보낼 때 마다 자신의 로컬 시간을 함께 보낸다.
  2. 요청을 받았을 때 자신의 로컬 시간과 맞지 않다면 요청에 담긴 시간보다 한 스탭 다음으로 자신의 시간을 조정한다.

Mutual Exclusion

자원을 공유하는 processes or threads가 충돌을 일으키지 않고 안전하게 자원을 공유할 수 있어야 한다. 이를 달성하기 위해서 다양한 방법이 사용된다.

  • Centralized Algorithm
    하나의 프로세스가 공용자원에 대한 접근 권한을 제어한다. 다른 프로세스들은 제어 권한을 가진 프로세스에게 자원 접근을 요청하여 수락받는 형태로 동작한다.
  • Decentralized Algorithm
    중앙제어자 없이 다양한 방법으로 공유자원을 공유하도록 하는 알고리즘이다. 정해진 시간만큼 점유하고 다음 프로세스에게 점유권을 양도하는 방식으로 만들수도 있고,
  • Distributed Algorithm
    자원을 점유하길 원하는 프로세스가 다른 모든 프로세스에게 메시지를 보낸다. 자원이 필요없는 프로세스는 OK응답을 보내고 이미 자원을 점유하고있는 프로세스는 NO응답. 자원을 점유하고자 하는 프로세스는 시간을 비교해서 알맞은 응답을 한다. 모든 프로세스들로부터 OK신호를 받았다면 자원을 점유할 수 있다.
  • Token ring Algorithm
    논리적인 circle을 만들고 하나의 토큰을 일정시간동안 돌아가면서 공유한다.

7. Consistency & Replication


분산시스템은 분산된 컴포넌트가 가지고 있는상태가 일관되게 유지되어야 한다.

  • Sequential Consistency
    여러개의 컴포넌트가 동시에 자원에 읽고 쓰는 작업을 할 때 결과적인 쓰기-읽기가 논리적으로 일치되는 것을 말한다.
  • Causal Consistency
    여러개의 컴포넌트가 동시에 읽고 쓰는 작업을 할 때 결과는 다르게 나타나더라도 쓰기와 읽기의 인과관계만 일치한다면 되는 성격을 말한다. x를 읽었을 때 3이 나왔다면 이전에 x에 3을 쓰는 작업이 있어야 하는 등 인과관계만 유지되면 된다.
  • concurrent
    두개의 컴포넌트가 쓰기작업을 동시에 했을 때 어떤 쓰기작업이 먼저 수행되는지에 따라 결과가 다르게 나타난다면 이 두 쓰기작업을 concurrent하다고 말한다.
    causal consistency model에서 인과관계가 없는 두 작업을 concurrent 하다고 한다.

8. Fault Tolerance


시스템에 결힘이 생기더라도 바로 종료하지 않고 그에 대응하여 시스템을 유지시키는 목적을 말한다. 그러므로 결함을 감지할 수 있는 기능과 결함을 판단하고 대응하여 시스템에 치명적인 피해를 주지 않도록 막아줄 수 있는 기능이 필요하다.

  • Redundancy : 결함이 발생했을 때 결함을 복구할 수 있는 성질

TMR (Triple Modular Redundancy)

3개의 복제 노드로 시스템을 구성하고 각 노드의 결과값을 다수결로 최종 결과값을 출력한다. 하나의 노드가 결함이 생겨서 잘못된 계산을 하더라도 다른 두 노드가 정확한 결과값을 출력했기 때문에 다수결에 의해 정확한 결과값이 채택되고 결함이 발생한 노드 또한 동시에 발견할 수 있다.

9. Security


Hash

메시지를 일정 크기의 해시로 만든다. 해시는 충돌저항성 즉, 서로다른 메시지는 서로다른 해시가 나온다는 성질을 만족해야한다.
강한 충돌저항성은 모든 해시키에 대해 중복이 없다는 것이 수학적으로 증명된 것을 말하며, 약한 충돌 저항성은 어떤 해시키에 대해 중복되는 해시키를 만들 수 없다는 것이 증명된 것을 말한다.

전자서명

메시지를 보낼 때 메시지의 해시를 자신의 개인키로 암호화하여 같이 보낸다. 수신측은 메시지의 유효성 검사와 동시에 메시지의 발신자를 정확히 알 수 있다는 장점이 있다. 메시지 전체를 해시로 만들 경우 비용이 너무 높기 때문이 이러한 방식을 사용한다.

Kerberos

인증 서버, 티켓 서버를 거쳐서 서비스를 제공하는 서버에 접근하는 인증방식

  1. 인증서버는 자신과 TGS(Ticket Grant Server)의 공유키로 암호화한 티켓을 발행한다.
  2. TGS는 자신과 서비스 제공 서버의 공유키로 암호호환 티켓을 발행한다.
  3. 인증된 클라이언트에게 서비스를 제공한다.
    이렇게 3단계의 인증을 거쳐야 하기 때문에 Kerberos 라고 불린다.

접근 제어

  • 티켓발행
    서비스를 제공하는 서버가 여러개로 분산되어있고 그래서 접근제어를 통합하기 어려운 경우 사용하는 방식이다. 티켓을 가지고있다면 해당 분산서버에 모두 접근이 가능하다.
  • Access Control List
    하나의 서버가 서비스를 모두 통제할 경우 사용하는 방식이다. 접근을 허용할 클라이언트의 리스트를 작성하고 이 리스트에 있는 클라이언트에게 서비스를 제공한다.

#university/cloud_computing

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

Cloud Computing (2)  (0) 2019.06.13
무선 LAN  (0) 2019.06.11
깃(Git) 용어 정리  (0) 2017.09.18
변복조란?  (0) 2017.02.25
프로세스 스케줄링 방식의 종류  (0) 2017.02.23
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함