[CS] Chapter 12 네트워크와 분산 시스템

Ringo·2024년 11월 13일

Computer Science

목록 보기
16/16
post-thumbnail

📌 네트워크와 인터넷

1. 통신과 네트워크

통신 환경의 발전

프로토콜

사람과 마찬가지로 컴퓨터나 기기들도 데이터를 주고받기 위해서 통신을 사용합니다. 이를 데이터 통신(data communication)이라고 합니다.

여러 대의 컴퓨터끼리 데이터를 주고받는 통신 시스템을 컴퓨터 네트워크(computer network)라고 합니다.

프로토콜 (protocol) : 통신을 위한 약속

우리말로는 "통신 규약"이라고 합니다.

네트워크를 구성하려면 하드웨어적으로는 두 기기를 연결하고 소프트웨어적으로는 프로토콜을 마련해야 합니다. 이 두가지 요건이 충족되어야만 네트워크가 구성됩니다.

TCP/IP

가까운 거리에 연결된 네트워크를 "Local Area Network" 즉 "LAN"이라고 부릅니다. LAN이란 수 미터에서 약 1km 내에 연결되는 근거리 네트워크를 의미합니다. 반대로 국가 전체를 연결하거나 국가 간에 연결되는 네트워크를 "Wide Area Network" 즉 "WAN"이라고 부릅니다. WAN이란 수백 킬로미터 이상을 연결하는 장거리 네트워크를 의미합니다.

인터넷에는 수많은 LAN이 섞여 있습니다. 어떤 LAN은 오래되어 느리고 자주 고장 나기도 하고, 어떤 LAN은 독특한 규격의 데이터만 전송하기도 합니다. IP가 이러한 LAN들을 통과하여 목적지까지 데이터를 보내면 해당 데이터가 사라지거나, 순서가 뒤바끼거나, 일부가 훼손되는 일이 발생하였습니다. 이 문제를 해결하기 위해, 보낸 데이터가 원래의 상태로 도착하는지를 감시하는 프로토콜을 새로 만들었습니다. 이것이 TCP(Transmission Control Protocol)인데 우리말로는 "전송 제어 프로토콜"이라고 합니다. TCP는 데이터 전송에서 발생하는 에러를 바로잡고, 데이터가 최종 목적지 프로그램에 전달될 수 있도록 창구 역할을 담당합니다.

2. 유무선 통신

웹 시스템

하이텔 같은 일반 통신 프로그램이 글로만 쓰인 책이라면 모자이크 같은 웹 브라우저는 그림책과 같습니다. 모자이크는 오늘날 사용하는 웹 브라우저의 시초입니다. 1995년 마이크로소프트가 인터넷 익스플로러를 개발하고 윈도우 운영체제에 포함하여 무료로 배포하면서 웹 브라우저가 급속도로 보급되었습니다. 웹 브라우저를 이용한 서비스를 월드 와이드 웹(World Wide Web) 줄여서 WWW라고 합니다.

무선통신 시스템

📌 분산 시스템

1. 분산 세스템의 개요

개인용 컴퓨터의 보금으로 값싸고 크기가 작은 컴퓨터를 네트워크로 묶어 대형 컴퓨터 같은 능력을 가진 시스템을 만들 수 있게 되었는데 이를 분산 시스템(distributed system)이라고 합니다. 분산 시스템은 중앙 처리 시스템과 반대되는 개념으로, 네트워크상에 분산되어 있는 컴퓨터가 작업을 처리하고 그 내용이나 결과를 서로 교환하는 시스템입니다.

분산 시스템은 강결합 시스템과 약결합 시스템으로 나뉩니다. 강결합 시스템(tightly coupled system)은 네트워크로 연결된 모든 컴퓨터의 프로세서가 하나의 메모리를 공유하는 방식입니다. 모든 컴퓨터는 메모리를 공유하면서 같은 운영체제를 사용합니다. 강결합 시스템의 장점은 약결합 시스템에 비해 속도가 빠르다는 것입니다.

약결합 시스템(loosely coupled system) 은 둘 이상의 독립된 시스템을 연결한 것으로, 오늘날의 네트워크는 이 방식으로 이루어져 있습니다. 약결합 시스템에서 각 컴퓨터는 자신만의 운영체제, 메모리, 프로세서, 입출력장치를 가지고 독립적으로 운영되다가 필요할 때 통신선을 이용해 메시지를 전달하여 통신합니다.

약결합 시스템은 통신 오버헤드가 있기 때문에 강결합 시스템보다 느립니다. 그러나 강결합 시스템에서는 하나의 시스템에 문제가 생기면 다른 시스템에도 영향을 미치지만, 약결합 시스템에서는 컴퓨터들이 서로 독립적으로 작동하기 때문에 하나의 시스템에 장애가 발생해도 다른 시스템에 영향을 미치지 않습니다.

분산 시스템의 장점

  1. 네트워크로 연결된 기기가 여러 자원을 공유할 수 있습니다.
  2. 작업 분배(load balancing)를 통해 여러 기기가 작업을 나누어 처리할 수 있습니다.
  3. 데이터나 처리를 분산함으로써 연산 속도를 향상할 수 있습니다.
  4. 장애가 발생해도 시스템을 복구할 수 있습니다.

분산 시스템에서 고려해야 할 사항은 두 가지 입니다. 첫째, 각 기기의 독립성을 보장해야 합니다. 둘째, 사용자는 하나의 기기로 인식할 수 있어야 합니다. 이를 위해 분산 시스템은 네트워크를 구성하는 각 기기의 자율성(autonomy)을 보장하고, 자원 분산 및 중복을 통해 가용성(availability)을 높이며, 특정 자원에 대한 위치 투명성(transparency)을 보장해야 합니다.

분산 시스템에 사용되는 운영체제는 크게 네트워크 운영체제(NOS, Network Operating System)와 분산 운영체제(DOS, Distributed Operating System)로 나뉩니다.

네트워크 운영체제는 각 컴퓨터가 독자적인 운영체제를 가진 채 사용자 프로그램을 통해 분산 시스템이 구현된 것으로, 낮은 수준의 분산 시스템 운영체제라고 볼 수 있습니다. 기기마다 운영체제가 다르고, 지역적으로 널리 분산된 대규모 네트워크에서 사용하기 때문에 사용자가 기기 및 운영체제의 종류와 사용법을 알고 있어야 합니다. 실행이 간단하고 소프트웨어의 재사용이 가능한 반면, 순수한 분산 시스템이라고 하기에는 기능적으로 제약이 많습니다.

분산 운영체제는 시스템 내에 하나의 운영체제가 존재하고, 전체 네트워크를 통틀어서 단일 운영체제로 운영됩니다. 사용자가 시스템 내 기기의 종류를 알 필요가 없고 전체 시스템을 일관성 있게 설계할 수 있습니다. 따라서 네트워크의 이해, 유지, 수정이 용이합니다.

2. 클라이언트/서버 시스템

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

클라이언트/서버 구조란 클라이언트가 서비스를 요청(request)하면, 서버가 응답(reply)하는 구조입니다. 클라이언트/서버 구조에서는 완전한 분산 시스템과 같이 모든 컴퓨터가 동일한 지위를 갖지 않고, 작업을 요청하는 클라이언트와 요청받은 작업을 처리하는 서버의 이중 구조로 되어 있습니다.

서버가 요청을 받으면 HTML(Hyper Text Markup Language)을 사용하여 만들어진 웹 페이지를 클라이언트에 전송합니다. 이렇게 받은 웹 페이지를 웹 브라우저가 화면에 보여줍니다. 웹 브라우저는 "구경하다"라는 뜻의 브라우징(browsing)에서 나온 말입니다.

클라이언트가 언제 서비스를 요청할지 모르기 때문에 항상 대기 상태로 기다려야 합니다. 이렇게 죽지 않고 살아서 서비스를 계속 진행하는 프로그램을 데몬(daemon)이라고 합니다.

CGI

CGI (Common Gateway Interface) : 웹 데몬이 응용 프로그램에 질문한 것에 대한 결과를 HTML에 맞게 변형하는 프로그램

HTML5

Active-X는 웹 서버가 제공하는 소프트웨어를 클라이언트 컴퓨터에 설치할 수 있도록 해주는 기술입니다. 이를 통해 클라이언트 컴퓨터에 소프트웨어들이 설치되어 다양한 기능을 수행할 수 있었습니다. 문제는 악성 소프트웨어도 설치될 수 있다는 점인데, 이 때문에 Active-X는 컴퓨터 보안을 위협하는 기술이 되었습니다. Active-X와 같은 비표준 기술을 사용하지 않고도 다양한 프로그램을 개발할 수 있도록 만들어진 표준 기술이 HTML5입니다.

  • 멀티미디어 기능 제공
  • 그래픽 지원
  • 양방향 통신 지원
  • 다양한 장치에 접근 가능

3. P2P 시스템

분산 시스템을 기본으로 하면서도 서버의 부하를 줄이고 몇 개의 컴퓨터가 고장 나더라도 서비스를 지속할 수 있는 시스템을 설계했는데 이것이 바로 P2P 시스템입니다.

실제 화폐라면 은행 데이터베이스에서 관리하겠지만 실물이 없는 가상 화폐의 경우 그 기록을 누가 관리할지 정할 수 없습니다. 관리자를 정한다 해도 누군가가 장부를 조작하거나 없애면 화폐 가치가 사라져 버릴 것입니다. 그래서 비트코인은 블록체인 기법을 사용하여 서버가 없는 완전한 P2P 방식으로 거래 장부의 문제를 해결했습니다.

4. 클라우드 컴퓨팅

그리드 컴퓨팅 : 여러 곳에 떨어져 있는 컴퓨팅 파워나 소프트웨어를 하나로 묶어 하나의 컴퓨터처럼 사용하는 기술

클라우드 컴퓨팅 (cloud computing) : 하드웨어와 소프트웨어를 클라우드라는 중앙 시스템에 숨기고 사용자가 필요한 서비스만 그때그때 이용하는 방식의 컴퓨팅 환경

그리드 컴퓨팅은 여러 곳에 분산된 컴퓨터를 하나로 묶어서 슈퍼컴퓨터와 맞먹는 컴퓨팅 파워를 제공하는 데 목적이 있습니다.

클라우드 컴퓨팅은 언제 어디서나 컴퓨팅 파워나 소프트웨어에 접근할 수 있는 유연한 컴퓨터 환경입니다.

SaaS(Software as a Service)는 소프트웨어적으로 컴퓨팅 환경을 통합한 것입니다. SaaS는 사용자가 필요한 소프트웨어 기능만 필요할 때 이용하고, 이용한 기능만큼만 비용을 지불하는 개념으로, 네트워크를 통해 표준화된 솔류션을 서비스합니다.

SaaS와 유사하게 서버, 서버 소프트웨어 데이터 공간 같은 컴퓨터 하부 구조를 서비스하는 가상화 구조를 IaaS(Infrstructure as a Service)라고 합니다. 또한 개발 환경을 서비스 하는 것을 PaaS(Platform as a Service) 라고 합니다.

5. 네트워크 저장장치와 고가용성

네트워크 저장장치

네트워크를 사용하는 저장장치는 어떻게 구성하느냐에 따라 DAS, NAS, SAN으로 구분됩니다.

DAS (Direct Attached Storage) : 서버와 같은 컴퓨터에 직접 연결된 저장장치

DAS의 대표적인 예는 윈도우의 파일 공유로, 여러 컴퓨터 중 하나를 파일 공유 서버로 지정하고 나머지 컴퓨터에서 서버로 지정된 컴퓨터에 접근하여 파일을 이용하는 방식으로 운영됩니다.

NAS(Network Attached Storage) : 기존 저장장치를 LAN이나 WAN에 붙여서 사용하는 방식

DAS는 각각의 컴퓨터에 붙어 있는 저장장치이기 때문에 공유 데이터를 관리하기 힘들고 데이터가 여러 컴퓨터에 중복된다는 단점이 있습니다. NAS에서는 이를 보완하기 위해 저장장치를 네트워크상에 두고 여러 클라이언트가 네트워크를 통해 접근하게 함으로써 공유 데이터의 관리 및 데이터의 중복 회피가 가능합니다.

SAN(Storage Area Network) : NAS보다 진보된 형태의 네트워크 저장장치

NAS가 저장장치에 네트워크 인터페이스를 부착한 형태라면, SAN은 데이터 서버, 백업 서버, RAID 등의 장치를 네트워크로 묶고 데이터 접근을 위한 서버를 두는 형태입니다.

고가용성

클라이언트/서버 시스템에서는 중앙 서버가 고장 나면 서비스가 중단됩니다. 고가용성(high availability)은 이러한 업무 또는 서비스 중단을 최소화하기 위해 이중화 작업을 하는 것으로, 작게는 운영체제의 디스크 미러링부터 크게는 시스템 자체를 이중화하는 것을 포함하는 개념입니다. 고가용성을 보장하려면 두 대 이상의 시스템을 하나의 클러스터로 묶어, 시스템 장애 발생 시 클러스터 내의 다른 시스템으로 서비스를 이동할 수 있도록 해야 합니다. 고가용성을 보장하기 위해 시스템을 구성하는 유형은 크게 상시대기, 상호 인계, 컨커런트 엑세스로 분류됩니다.

상시 대기 (hot-standby)

가동 시스템과 백업 시스템으로 구성됩니다. 이 구조에서는 평상시에 대기 상태(standby)를 유지하다가 가동 시스템의 하드웨어 또는 네트워크 장비에 장애가 발생하면 가동 시스템의 자원을 백업 시스템으로 이전하여 서비스가 중단되지 않게 합니다.

상호 인계 (mutual takeover)

2개의 시스템이 각각의 고유 서비스를 수행하다가 한쪽 시스템에 장애가 발생하면 상대 시스템으로 작업을 이동하여 동시에 2개의 업무를 수행합니다. 각 시스템은 장애 발생으로 인한 업무 이전에 대비하여 2개의 업무를 동시에 서비스할 수 있는 시스템 용량을 갖추고 있습니다.

컨커런트 액세스 (concurrent access)

여러 시스템이 동시에 업무를 나누어 병렬 처리합니다. 시스템 전체가 가동 상태로 업무를 수행하기 때문에 한 시스템에 장애가 발생해도 다른 시스템으로 작업을 이동하지 않고도 고가용성을 보장합니다. 이 구조에서는 두 클러스터가 동일한 업무를 수행하기 위해 L4 스위치를 이용하여 작업 분배를 합니다.

profile
끄적끄적…

0개의 댓글