12-2.[os] 분산 시스템

분산 시스템의 개요

  • 과거: 메인프레임 - 값비싼 대형 컴퓨터로 데이터 처리

  • 개인용 컴퓨터 보급

  • 분산 시스템: 값이 싸고 작은 컴퓨터를 네트워크로 묶어 대형 컴퓨터같은 능력을 가진 시스템을 만들 수 있게 됨

  • 예) 지구 밖의 신호를 검출해 우주 생명체의 존재를 파악하는 seti@home 프로젝트

    • 개인컴에 프로그램 설치 후 분석 결과를 중앙 컴퓨터로 보냄
  • 중앙 처리 시스템과는 반대되는 개념

  • 네트워크 상에 분산되어 있는 컴퓨터가 작업을 처리하고 그 내용이나 결과를 서로 교환


분산 시스템의 장점:

  • 네트워크로 연결된 기기가 여러 자원을 공유할 수 있다.

  • 작업 분배(load balancing)를 통해 여러 기기가 작업을 나누어 처리할 수 있다.

  • 데이터나 처리를 분산함으로써 연산 속도를 향상할 수 있다.

  • 장애가 발생해도 시스템을 복구할 수 있다


분산 시스템에서 고려해야할 사항:

  1. 각 기기의 독립성 보장

  2. 사용자는 시스템을 하나의 기기로 인식할 수 있어야함

  • 기기의 자율성 보장

  • 자원 분산 및 중복을 통해 가용성 높임

  • 특정 자원에 대한 위치 투명성 보장


  • 분산 시스템에 사용되는 운영체제 = 네트워크 운영체제 | 분산 운영체제

네트워크 운영체제

  • 각 컴퓨터가 독자적인 운영체제를 가진 채 사용자 프로그램을 통해 분산 시스템이 구현된 것

  • 낮은 수준의 분산 시스템 운영체제

  • 기기마다 운영체제가 다르고, 지역적으로 퍼진 대규모 네트워크에서 사용

  • -> 사용자가 기기 및 운영체제의 종류와 사용법을 알고 있어야함

  • 실행이 간단

  • 소프트웨어 재사용이 가능

  • 순수 분산 시스템이라고 하기엔 기능적 제약이 많음

분산 운영체제

  • 시스템 내에 하나의 운영체제가 존재

  • 전체 네트워크를 통틀어서 단일 운영체제로 운영

  • 사용자가 시스템 내 기기의 종류를 알 필요 없음

  • 전체 시스템을 일관성 있게 설계

  • 네트워크의 이해, 유지, 수정


분산 시스템의 단점:

  • 각 컴퓨터가 독립적으로 작동하기 때문에 시스템을 구성하는 데 문제가 많다

  • 작업 도중 컴 한대 꺼지면 다른 컴으로 작업을 옮겨야함

  • 작업이 끝난 후엔 전체 작업 결과를 합쳐서 하나로 만들어야함

  • 모든 컴퓨터가 동일한 지위를 가짐


클라이언트/서버 시스템


클라이언트/서버 시스템의 구조

  • 모든 컴퓨터가 동일한 지위를 갖지 않고 작업을 요청하는 클라이언트와 요청받아 처리하는 서버의 이중 구조로 되어있음

  1. 클라이언트가 웹 브라우저에 서버 주소를 입력

  2. 웹 브라우저는 HTTP를 이용하여 서버에 있는 HTML(HyperText Markup Language)를 요청

  3. 서버는 클라이언트의 요청을 처리한 후 결과를 클라이언트에 전달

  4. 결과가 클라이언트에 도착하면 웹 브라우저가 그 내용을 화면에 출력. 대표적인 웹 브라우저는 마이크로소프트의 인터넷 익스플로러, 구글의 크롬.

  • 서버는 멈추지 않고 꼐속 작동하여 클라이언트의 요청을 처리

  • 데몬: 멈추지 않고 계속 작동하는 프로그램

  • 웹 데몬, HTTP 데몬: 웹 시스템에서 사용하는 데몬 (ex. 아파치 톰캣)


CGI와 가상머신

  • 초기 HTML 화면: 고정된 페이지, 동적인 데이터 표시 불가능

  • CGI(Common Gateway Interface): 프로세스에 질문을 하고 그 결과값을 HTML형태로 웹 데몬에 전달하는 프로세스

  • ASP, PHP, JSP: CGI를 프로그래밍 언어 형태로 만들어 개발자들이 다양한 작업을 할 수 있게함

미들웨어

  • 양쪽을 연결하여 데이터를 주고받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어

  • 필요에 따라 서버를 증설하면 서로 다른 기종의 서버를 운영 해야 하는 경우, 서로 다른 데이터베이스를 연결해야 하는 경우

  • -> 미들웨어로 서로 다른 기종의 서버를 묶어 사용 -> 표준화된 인터페이스를 통해 일관된 작업 가능

  • 3-tire 클라이언트/서버: 미들웨어를 사용하는 클라이언트/서버

  • 2-tire 클라이언트/서버: 미들웨어를 사용하지 않는 일반 클라이언트/서버

가상머신

  • 운영체제와 응용 프로그램의 중간에 존재하는 미들웨어

  • 높은 이식성을 위해 개발된 소프트웨어

  • 예) 자바 가상 머신 (JVM): 자바로 작성한 프로그램은 어떤 운영체제에서도 실행 가능


웹 2.0

  • 웹 시스템이 발전하면서 사용자의 요구가 점점 늘어남에 따라 모든 사용자가 같은 웹 페이지를 보지 않고 자신이 원하는 정보로만 구성된 웹 페이지를 보는 것이 가능

  • 클라이언트와 서버가 통신하면서 실행되는 웹 페이지


클라이언트/서버 시스템의 단점:

  • 서버 과부하

  • 모든 클라이언트 요청이 서버로 몰리면 -> 웹 서비스 제공자는 많은 서버와 큰 용량의 네트워크를 사용해야함

  • 서버 유지 비용이 ↑-> 광고↑

  • 서버 고장 시 서비스 중단


P2P 시스템

  • 분산 시스템을 기본으로 하면서도 서버의 부하를 줄이고 몇 개의 컴퓨터가 고장 나더라도 서비스를 지속할 수 있는 시스템

  • 메신저에 쓰임

  • 비구조적 P2P 시스템

  • 전체 노드에 대한 정보는 서버가 가지고 있고, 실제 데이터 전송은 일대일로 연결된 말단 노드를 통해 이루어지는 구조

  • 데이터를 보내는 쪽이 프로그램을 중단하면 받는 쪽에서 데이터를 내려받기 어려움

  • 전체 네트워크에 대한 정보를 모든 노드에 저장하여 관리 or 하나의 노드에 집중 저장하여 관리

  • 구조적 P2P 시스템

  • 각 노드가 전체 네트워크 정보가 아닌 부분적인 네트워크 정보를 유지

  • 특정 파일의 소유자 정보를 여러 노드가 공유 -> 한 노드가 사라지더라도 데이터 공유가 지속적으로 이루어짐

  • 시드를 중심으로 데이 터를 여러 노드가 주고받는 방식

  • ex) 파일 공유, 메신저, 동영상 웹 스트리밍, IP 전화기

  • ex) 토렌트

  • 시드(seed): 원본 파일을 가진 컴퓨터

  • 최초의 시드로부터 파일이 전송 -> 여러 사람이 원본 파일과 같은 파일을 가지게 됨 -> 시드 늘어남

  • 최초의 시드를 가진 컴퓨터에 접속하여 전체 시드 정보를 획득

  • 여러 시드로부터 동시에 데이터를 분할하여 내려받기


클라우드 컴퓨팅


그리드 컴퓨팅 환경의 이해

  • 이기종 컴퓨터들을 묶어 대용량 컴퓨터 풀을 구성하고 이를 원격지로 연결 하여 대용량 연산을 수행하는 컴퓨팅 환경

  • 대용량 데이터 연산을 소규모 연산으로 나누어 여러 대의 컴퓨터에 분산하여 수행

  • CPU 관리, 저장소 관리, 보안 조항, 데이터 이동, 모니터링 등에 대한 표준 규약 필요

  • 그리드 - 하드웨어적으로 컴퓨팅 환경을 통합한 것

  • 계산 그리드: 날씨 계산이나 지진예측과 같이 많은 양의 연산을 필요로 하는 컴퓨팅 환경에서 사용하는 그리드

  • 데이터 그리드: 바이오 분야와 같이 대용량 데이터를 처리하기 위해 고안된 그리드

  • 액세스 그리드: 다수의 시용자가 협업할 수 있도록 고안된 그리드

  • 기존의 저장장치와 서버를 그리드로 묶어 사용하려면 미들웨어가 필요

  • ex) 글로버스 - 미들웨어


클라우드 컴퓨팅 환경의 이해

SaaS(Software as a Service):

  • 소프트웨어적으로 컴퓨팅 환경을 통합한 것

  • 사용자가 필요한 소프트웨어 기능만 필요할 때 이용하고, 이용한 기능만큼만 비용을 지불하는 개념

  • 네트워크를 통해 표준화된 솔루 션을 서비스

  • 사용자는 표준화된 접근 방식과 편리한 인터페이스를 사용하여 서로 협업 가능

  • ex) 회계 프로그램 개인컴 설치(x) 웹사이트 접속해서 협업(o)

IaaS(Infrastructure as a Service):

  • 서버, 서버 소프트웨어 데이터 공간 같은 컴퓨터 하부 구조를 서비스하는 가상화 구조

  • ex) AWS

PaaS(Platform as a Service):

  • 응용 프로그램이 아닌 개발 환경을 제공하는 서비스

  • ex) 구글 개발 환경

  • SaaS, IaaS, PaaS는 소프트웨어나 하드웨어를 직접 구매하여 운영하는 대신 필요한 서비스 를 빌려 쓰는 형태

  • 구매 및 관리 비용을 줄여주고 사용한 기능만큼만 비용을 지불

Did you find this article valuable?

Support Fullstack Developer at Your Service by becoming a sponsor. Any amount is appreciated!