<aside>
<img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/93430ed4-3a4e-4e91-bdc6-d8d69cc32a8a/server.png" alt="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/93430ed4-3a4e-4e91-bdc6-d8d69cc32a8a/server.png" width="40px" /> 서버-클라이언트 모델(Server&Client Model)
</aside>
- 개념
- 서버-클라이언트 구조란 데이텉를 저장하고 관리하는 서버부분과 해당 서버에 접속하여 데이터를 열람하는 클라이언트 부분으로 구성된 네트워크 구조를 말한다.
- 서버-클라이언트 방식이란 클라이언트를 서비스에 대한 요구자로, 서버를 서비스에 대한 제공자의 형태로 네트워킹하여 자원을 공유하는 분산처리기법을 말한다.
- 과거에는 이를 HW적으로 구분하였었지만, 최근에는 HW적인 개념보다는 "역할"의 관점에서 서버와 클라이언트를 구분한다. 데이터를 요구하는 쪽을 클라이언트, 요청을 받아 응답을 보내는 쪽을 서버라고 한다.
- 구조
- 서버와 클라이언트는 1:N(일대다) 구조로 연결되어 있다.
- 즉, 한 대의 서버에 다수의 클라이언트가 달라붙어 서비스를 이용한다.
- 대부분의 인터넷 웹 사이트는 서버-클라이언트 구조로 동작한다.(ex. 구글, 네이버, 유튜브 등)
- 서버에는 방대한 데이터를 저장하고 다수의 사용자들이 PC나 스마트폰 등의 단말기(End System)를 사용하여 해당 서버에 접속하여 필요한 정보를 열람한다.
- 서버의 경우 하루 24시간 계속해서 인터넷에 연결되어 있어야한다. 반면 클라이언트의 경우 필요할 때만 인터넷에 접속하면 된다.
- 장점
- 서버-클라이언트 구조는 매우 효율적인 네트워크 구조이다. 다수의 사용자들이 공동으로 열람/복사/수정/관리하는 데이터를 여러 곳에 분산시키지 않고 단일한 중앙 서버에 저장하여 관리함으로써 데이터의 유일성과 통일성을 보장할 수 있다.
- 중앙 서버만 관리하면 되므로 분산 저장 방식에 비해 네트워크 구성 및 유지관리 비용이 적게 든다.
- 서버가 서비스 관리를 집중적으로 수행하기 때문에 시스템의 설계 및 유지가 쉽다.
- 기능 추가, 버그 수정 등 업데이트 및 관리가 쉽다.
- 단점
- 서버 장애 등이 발생할 경우 서비스 전체가 중단된다.
- 서버-클라이언트 구조는 해킹 공격과 디도스 및 랜섬웨어 공격 등에 취약하다. 모든 중요 데이터가 중앙 서버에 집중되어 있기 때문에 해커가 중앙 서버에 침투하여 데이터를 위변조할 경우 모든 클라이언트들에게 잘못된 정보가 전달된다.
- 이를 방어하기 위해 방화벽, 웹 방화벽, IDS, IPS 등 다양한 보안 제품을 설치하고, 서버에 저장된 데이터를 복사하여 별도의 저장장치에 백업을 해야하기 때문에 추가적인 비용이 든다.
<aside>
<img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f7f70532-354f-4b4c-ab80-b6158c3bcd2c/p2p.png" alt="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f7f70532-354f-4b4c-ab80-b6158c3bcd2c/p2p.png" width="40px" /> P2P(Peer to Peer)
</aside>
- 개념
- P2P란 Peer to Peer의 약자로써, 인터넷에 연결된 다수의 개별 사용자들이 중개 기관을 거치지 않고 직접 데이터를 주고받는 것을 말한다.
- 네트워크에 연결된 모든 컴퓨터들이 서로 "대등"한 입장에서 데이터나 주변장치 등을 공유할 수 있다.
- P2P 혹은 동등 계층 간 통신망은 비교적 소수의 서버에 집중하기 보다는 망 구성에 참여하는 기계들의 계산과 대역폭 성능에 의존하여 구성하는 통신망이다.
- 컴퓨터끼리의 양방향 파일 전송 시스템이며 중앙 서버 없이 각각의 컴퓨터가 서버와 클라이언트가 되고 서로 연결하여 파일을 주고 받는다.
- 구조
-
피투피 방식은 기존의 서버-클라이언트방식의 데이터 전송과는 본질적으로 다른 구조를 가진다.
-
피투피 방식을 따르는 경우 중앙이나 중심 또는 센터가 없다.
-
피투피 네트워크에 참여하는 모든 참여자가 서로 "동등"하다.
-
구현 방식
P2P 시스템을 크게 2가지로 분류하면 각 노드들을 발견하고 탐색하기 위한 인덱스 서버를 사용하는 하이브리드P2P와 순수하게 노드들만 존재하며, 노드 탐색 등의 기능도 노드들이 알아서 수행하는 퓨터 P2P로 구분할 수 있다.
- 장점
- 서버를 준비할 필요가 없고, 각 노드들이 트래픽과 자원을 할당해 부하를 분산시켜준다.
- 노드가 증가하더라도 서비스를 유지할 수 있는 높은 확장성을 갖는다.
- Peer 간 자원 공유가 가능하다.
- P2P 방식은 구현 비용이 서버-클라이언트 구조보다 훨씬 적다.
- 단점
- 새로운 기능을 추가하거나 업데이트를 할 경우 관리가 어렵다.
- 네트워크 전송 시간 때문에 노드간 정보 불일치, 성능 저하가 발생하기 쉽다.
- 자원 공유에 따른 정보 유출이 문제가 될 수 있다.
- 특정한 통신 대상 지정이 불가하고 불특정 다수와 통신한다.
- 웜, 바이러스 등 악성코드의 전파에 용이하다.
- 단말 통신 속도를 보장하기 어렵다.
<aside>
📕 참고자료
</aside>
서버-클라이언트
피투피