12-2.[os] 분산 시스템
분산 시스템의 개요
과거: 메인프레임 - 값비싼 대형 컴퓨터로 데이터 처리
개인용 컴퓨터 보급
분산 시스템: 값이 싸고 작은 컴퓨터를 네트워크로 묶어 대형 컴퓨터같은 능력을 가진 시스템을 만들 수 있게 됨
예) 지구 밖의 신호를 검출해 우주 생명체의 존재를 파악하는 seti@home 프로젝트
- 개인컴에 프로그램 설치 후 분석 결과를 중앙 컴퓨터로 보냄
중앙 처리 시스템과는 반대되는 개념
네트워크 상에 분산되어 있는 컴퓨터가 작업을 처리하고 그 내용이나 결과를 서로 교환
분산 시스템의 장점:
네트워크로 연결된 기기가 여러 자원을 공유할 수 있다.
작업 분배(load balancing)를 통해 여러 기기가 작업을 나누어 처리할 수 있다.
데이터나 처리를 분산함으로써 연산 속도를 향상할 수 있다.
장애가 발생해도 시스템을 복구할 수 있다
분산 시스템에서 고려해야할 사항:
각 기기의 독립성 보장
사용자는 시스템을 하나의 기기로 인식할 수 있어야함
기기의 자율성 보장
자원 분산 및 중복을 통해 가용성 높임
특정 자원에 대한 위치 투명성 보장
- 분산 시스템에 사용되는 운영체제 = 네트워크 운영체제 | 분산 운영체제
네트워크 운영체제
각 컴퓨터가 독자적인 운영체제를 가진 채 사용자 프로그램을 통해 분산 시스템이 구현된 것
낮은 수준의 분산 시스템 운영체제
기기마다 운영체제가 다르고, 지역적으로 퍼진 대규모 네트워크에서 사용
-> 사용자가 기기 및 운영체제의 종류와 사용법을 알고 있어야함
실행이 간단
소프트웨어 재사용이 가능
순수 분산 시스템이라고 하기엔 기능적 제약이 많음
분산 운영체제
시스템 내에 하나의 운영체제가 존재
전체 네트워크를 통틀어서 단일 운영체제로 운영
사용자가 시스템 내 기기의 종류를 알 필요 없음
전체 시스템을 일관성 있게 설계
네트워크의 이해, 유지, 수정
분산 시스템의 단점:
각 컴퓨터가 독립적으로 작동하기 때문에 시스템을 구성하는 데 문제가 많다
작업 도중 컴 한대 꺼지면 다른 컴으로 작업을 옮겨야함
작업이 끝난 후엔 전체 작업 결과를 합쳐서 하나로 만들어야함
모든 컴퓨터가 동일한 지위를 가짐
클라이언트/서버 시스템
클라이언트/서버 시스템의 구조
- 모든 컴퓨터가 동일한 지위를 갖지 않고 작업을 요청하는 클라이언트와 요청받아 처리하는 서버의 이중 구조로 되어있음
클라이언트가 웹 브라우저에 서버 주소를 입력
웹 브라우저는 HTTP를 이용하여 서버에 있는 HTML(HyperText Markup Language)를 요청
서버는 클라이언트의 요청을 처리한 후 결과를 클라이언트에 전달
결과가 클라이언트에 도착하면 웹 브라우저가 그 내용을 화면에 출력. 대표적인 웹 브라우저는 마이크로소프트의 인터넷 익스플로러, 구글의 크롬.
서버는 멈추지 않고 꼐속 작동하여 클라이언트의 요청을 처리
데몬: 멈추지 않고 계속 작동하는 프로그램
웹 데몬, 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는 소프트웨어나 하드웨어를 직접 구매하여 운영하는 대신 필요한 서비스 를 빌려 쓰는 형태
구매 및 관리 비용을 줄여주고 사용한 기능만큼만 비용을 지불