분산 시스템의 정의


  • 사용자가 보기에 하나의 시스템으로 보이는, 여러 개의 독립적인 컴퓨터(서버, 컴포넌트)들의 집합
  • 네트워크로 연결된 컴퓨터에 위치한 하드웨어 또는 소프트웨어 구성요소가 메시지를 전달하여 동작을 통신하고 조정하는 구성요소

전산망 vs 분산 시스템

  • 전산망 : 자율 컴퓨터들은 명확하게 알아볼 수 있다.

  • 분산 시스템 : 다중 자율 컴퓨터들의 존재는 투명하다

분산 시스템의 특징


  • Concurrency(동시성)
    • 동시 프로그램 실행
    • 동시에 실행하는 프로그램들의 자원을 공유하는 것을 조정한다.
  • Independent failure(독립적인 고장)
    • 시스템의 각 구성 요소가 독립적으로 고장날 수 있으며, 나머지 구성요소는 여전히 실행중일 수 있다.
    • 네트워크에 장애가 발생하면 연결된 컴퓨터만 끊기지만 그렇다고 해서 컴퓨터 작동이 멈추는 것은 아니다.
    • 컴퓨터의 고장 또는 예기치 못한 프로그램의 종료는 컴퓨터가 통신하는 다른 구성 요소에 즉시 알려지지 않는다. (바로 알 수 없음)
      • 예) 엘리베이터에서 통화할때 전화가 안되는경우 통화중인 상태이지만 상대방은 말을 안하는 것처럼 인지하고 있음
  • No global clock
    • 단일 컴퓨터에서는 Clock이라는 CPU의 속도 단위를 기준으로 프로세서가 동작한다. 하지만, 분산 시스템에서는 메시지를 통해 데이터를 주고 받기 때문에 Global Clock이 없다.
    • 💡 단일 컴퓨터에서 프로세스 : 자신의 가상적인 private memory를 가지고 있고(private address space), 독립적인 기계 상태를 가지는 작업 단위
    • 💡 분산 시스템에서 프로세스 : 하나의 기계 상태를 여러 컴퓨터가 공유하지만, 사용자에게는 하나의 기계 상태로 느껴진다. (투명성)

분산 시스템의 동기


  • 공유 리소스
    • 디스크 및 프린터와 같은 하드웨어 부품
    • 파일, DB 및 데이터 개체와 같은 소프트웨어 정의 엔티티, 비디오 프레임의 스트림와 오디오 연결을 포함한다.
  • 시스템을 분산하는 것에 대한 이유

    • 기능 분배 : 컴퓨터는 기능 능력이 다르다.

      • 클라이언트/서버
      • 데이터 수집/처리
      • 특정 기능을 가진 리소스 공유
    • 부하 분산/균형 조정

      • 전반적인 시스템 성능이 최적화 되도록 프로세서에 작업 할당
    • 처리 능력 복제

      • 마이크로 컴퓨터 집합에서 구성된 분산 시스템은 슈퍼컴퓨터가 결코 달성할 수 없는 처리 능력을 가질 수 있다.
    • 경제성
      • 마이크로 프로세서 집합은 대형 메인 프레임보다 더 나은 가격 대비 성능을 제공한다.

분산 시스템의 예


  • 분산 시스템은 최근 몇년 동안 가장 중요한 기술 발전의 많은 부분을 포함한다.
  • 현재 사용 중인 광범위한 애플리케이션에 대한 초기 통찰력
    • 국지 시스템(자동차, 항공기)에서 수백만 개의 노드를 포함하는 글로벌 스케일 시스템에 이르기까지
    • 데이터 중심 서비스에서 프로세서 집중적인 일까지
    • 매우 작고 상대적으로 원시적인 세서로 만들어진 시스템으로 부터 강력한 계산 요소를 포함하는 시스템에 이르기까지
    • 임베디드 시스템에서 정교한 대화형 사용자 환경을 지원하는 시스템에 이르기까지 다양한 기능을 제공한다.
  • 이미 선택되었거나 새롭게 등장한 분산 시스템 기술 사용의 일부를 강조하는 주요 상업적 또는 사회적 응용 분야 선택 범위
금융 및 상업 전자 상거래 아마존, 이베이, 페이팔, 온라인 뱅킹 및 거래
정보사회 웹 정보, 검색 엔진, 이북, 위키피디아, 소셜 네트워킹, 페북
창의적인 사업과 엔터테인먼트 온라인 게임, 집에서 음악과 영화, 사용자 생성 컨텐츠 ex)유튜브
헬스케어 건강정보, 온라인 환자 기록, 환자 모니터링
교육 이러닝, 가상 교육 환경, 원격 교육
운송 및 물류(위치 인식) GPS, 구글 맵, 구글 어스
과학 과학자간 협업을 위한 기술로서의 그리드
환경 관리 지진, 홍수 또는 쓰나미를 감시하는 센서 기술
  • 웹 검색
    • 구글이 단순히 검색만 하는 것이 아니고 분산 관련된 기술이 상당히 발전되어있다.
    • 데이터 센터를 설치했고 분산 파일 시스템을 디자인하여 많은 파일을 저장할 수 있다.
    • 단순한 저장뿐 아니라 프로그램을 좀더 효과적으로 하는 부분이 발전하고 있다.
  • MMOGs(Massively Multiplayer online games)
    • 빠른 응답 시간을 요구한다.
    • 사람이 누가 쐈을때 누군가 맞아서 판정되었다는 것이 일치해야한다. (누구는 맞고 누구는 안맞고 이런게 없어야 함) 이러한 이벤트가 실시간으로 이루어 져야함
    • 세계 상태의 단일 복사본이 중앙 집중식 서버에서 유지 관리되고 클라이언트 프로그램이 액세스하는 클라이언트-서버 아키텍쳐
    • 지리적으로도 분산되어 있을 수 있는 수많은 서버에 걸쳐 세계가 분할되어 있는 보다 분산된 아키텍쳐
    • 클라이언트-서버 원칙에 키초하지 않고 모든 참여자가 게임을 수용하기 위해 리소스에 기여하는 P2P기술을 기반으로 완전히 분산된 접근 방식을 채택하는 보다 급진적인 아키텍처에 주목하고 있다.
  • 금융 거래
    • 광범위한 정보에 실시간 액세스 ex) 주가, 동향, 경제, 정치
    • 이벤트로 알려진 관심항목의 전달 및 처리
    • 신뢰할 수 있고 적시에 이벤트를 제공해야 할 필요성
    • 이러한 정보 항목에 대해 명확한 관심을 가지고 있는 잠재적으로 매우 많은 고객에게

분산 시스템 트렌드

  • 만연한 네트워킹 기술 등장

    • 인터넷은 다양항 유형의 컴퓨터 네트워크들이 서로 연결되어 있는 광대한 집합체로서, 그 종류가 증가하고 있다.

      • ex) 와이파이, 블루투스, 휴대전화 등

      • 언제 어디서나 리소스 장치와 연결 가능

    • 인터넷 또한 매우 큰 분산 시스템

      • ex) WWW, 이메일, 파일 전송등 서비스에 활용
    • 인트라넷 - 회사와 다른 조직 사람이 사용하는 서브네트워크, 인트라넷은 방화벽에의해 보호된다

    • ISP - ISP는 브로드 밴드 링크와 다른 타입의 연결을 개인사용자와 작은 조직에게 제공하는 회사다.
  • 디바이스 최소화와 무선 네트워킹
    • 노트북
    • 스마트폰
    • 웨어러블
    • 가전 제품에 장착된 디바이스
  • 모바일 컴퓨팅
    • 위치와 상황인지 컴퓨팅
    • 사용자아 이동하는동안 일을 처리하는 것
  • 유비쿼터스 컴퓨팅

    • 사람의 일상으로 들어가 기존 사물들과 융합하거나 하나가 되어 버리는 기술

    .

  • 모바일 컴퓨팅

    • 이동 중에 인터넷 액세스를 가능하게 할 뿐만 아니라 일상 생활에 필수적인 휴대용 기술을 수용한다.

유비쿼터스와 모바일 컴퓨팅이 겹치지만 구별된다.

  • 유비쿼터스 하지만 모바일은 아니다 : 유비쿼터스 컴퓨팅은 가정이나 병원과 같은 단일 환경에 머무르는 동안 사용자에게 이익이 될 수 있다.
  • 모바일이지만 유비쿼터스가 아니다 : 모바일 컴퓨팅은 기존 기기만 사용해도 장점

  • 분산 시스템의 휴대용 및 핸드헬드
  • 자발적 상호 작용
  • 기기 간의 연관성이 일상적으로 생성되고 팍뢰된다
  • 서비스 검색
  • 기기를 적절한 로컬 서비스와 연결

멀티미디어 서비스에 대한 수요가 증가하는 것

  • 연속매체유형의 중요성
  • 매체 유형 요소간의 실시간 관계
  • 광범위한 신규(미디어) 서비스 및 애플리케이션
  • 웹캐스트와 같은 멀티미디어 애플리케이션은 기반 분산 인프라에 대한 상당한 요구를 제기한다.
  • 다양한 인코딩 및 암호화 포맷 지원
  • 원하는 서비스 품질(QoS)를 충족할 수 있는 다양한 메커니즘 제공
  • 관련 자원 관리 전략 제공
  • 불가피한 상황에 대처하기 위한 대응전략 제공

분산 시스템을 상품 또는 유틸리티로 보는 관점

  • 적절한 서비스 공급업체에 의해 자원을 제공하고 최종 소유자가 소유하는 것이 아니라 효과적으로 임대하는 것
  • 물리적 리소스와 보다 논리적인 서비스 모두 적용
    • 보관, 처리 등 물리적 자원
    • 원격 저장시설에서 데이터 센터로
    • OS가상화는 핵심기술
  • 소프트웨어 서비스
    • 파일 공유, 이메일 분산 캘린더

클라우드 컴퓨팅

  • 인터넷을 기반으로 한 애플리케이션, 저장과 컴퓨팅서비스를 제공한다.
  • 모든 것을 서비스로 보는 관점
  • 일반적으로 클러스터 컴퓨터에 구현되어 이러한 서비스에 필요한 규모와 성능을 제공한다.
  • 클러스터 컴퓨터는 하나의 통합된 고성능 컴퓨팅 기능을 제공하기 위해 긴밀히 협력하는 상호 연결된 컴퓨터 집합이다.
  • 정보기술(IT) 패러다임
    • 구성 가능한 시스템 리소스 및 고급 서비스의 공유 풀에 어디서나 액세스할 수 있도록 지원한다.
  • 인터넷을 통해 최소한의 관리 노력으로 신속하게 프로비저닝할 수 있음
  • laas(Infrastructure as a service)
    • 물리적인 서버, IP주소, 위치, 데이터 파티션, 보안, 백업
    • 서버, 스토리지, 네트워크를 가상화 환경으로 만들어 필요에 따라 인프라 자원을 사용할 수 있게 서비스를 제공하는 형태
    • ex) AWS Ec2
  • Paas(Platform as a Service)
    • 서비스를 개발할 수 있는 안정적인 환경(Platform)과 그 환경을 이용하는 응용 프로그램을 개발할 수 있는 API까지 제공하는 형태
    • ex) 구글 클라우드 플랫폼, 네이버 클라우드 플랫폼
  • Saas(Software as a service)
    • 소프트웨어 및 관련 데이터는 중앙에 호스팅되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하는 형태의 소프트웨어 전달 형태
    • 클라우드 환경에서 동작하는 응용프로그램을 클라이언트에게 서비스로 제공하는 형태
    • ex) MS 오피스, G메일, 문서도구, 캘린더 등

K-223

리소스 공유 집중


하드웨어 장비 vs 고수준 자원

  • 디스크와 프로세서 vs 공유 데이터 또는 웹페이지 세트의 데이터 공유
  • 서버 vs 검색 엔진과 같은 유틸리티

리소스 공유 패턴

  • 사용자의 범위와 긴밀하게 협력하는 방법(사용자의 지리적 분포)에 따라 매우 다양함

  • 웹상의 검색 엔진

    • 직접 접촉하지 않음
  • 컴퓨터 지원 협력 작업(CSCW)

    • 문서 등 자원을 소규모의 폐쇄적인 집단으로 직접 공유하도록 협력

클라이언트-서버 컴퓨팅

  • 서버
    • passive - 요청 기다리다가 받으면 깨어남
    • 지속적으로 작동
    • 서비스를 수행하기 위해 다른 컴퓨터에서 실행중인 프로그램의 요청을 수락하고 적절하게 응답하는 네트워크 컴퓨터에서 실행 중인 프로그램
  • 클라이언트 - 요청 프로세스
    • active - 요청 생성
    • 해당 애플리케이션이 일부를 구성하는 동안 지속
  • 클라이언트와 서버는 프로세스를 참조한다
    • 원격 호출
    • 클라이언트는 요청을 전송한다.

소프트웨어 엔지니어링 연습

  • 서비스
    • 관련 리소스 모음을 관리하고 사용자 및 애플리케이션에 해당 기능을 제공하는 컴퓨터 시스템의 고유한부분
  • 캡슐화
    • 효과적인 공유를 위해서는 각 자원을 통신 인터페이스가 제공되는 프로그램으로 관리하여야 한다.
    • 리소스는 객체로 캡슐화되고 클라이언트 객체에 의해 액세스 될 수 있음
    • 클라이언트 개체가 서버 개체에 메서드를 호출합니다.