네트워크 어플리케이션 구조란 이전 포스트에서 다룬 OSI 7 계층 구조 같은 네트워크 구조와는 다른 개념이다.
어플리케이션 개발자 관점에서 네트워크 구조는 고정되어 있는 구조인 반면, 네트워크 어플리케이션 구조는
어플리케이션 개발자가 직접 여러 구조 중 하나를 선택하고, 세부적으로 설계해야하는 구조라 할 수 있다.
이번 포스팅에서는 가장 많이 사용되는 대표적인 네트워크 어플리케이션 구조 두가지에 대해 알아보자.
클라이언트 - 서버 구조 (Client-server Architecture)
• 서버(server) : 항상 켜져있는 호스트
• 클라이언트(client) : 가끔 혹은 항상 켜져있을 수 있음
• 서버는 클라이언트 라는 다른 많은 호스트로부터 요청(Request)을 받는다.
◦ 예 ) 클라이언트 호스트에서 실행되는 브라우저가 항상 켜져있는 웹 서버로 서비스를 요청한다.
이 때 웹 서버는 클라이언트 호스트로 요청받은 객체를 보내어 응답한다.
◦ 즉 서로 다른 브라우저가 상호간에 직접적으로 통신하지 않는 것 처럼,
클라이언트 - 서버 구조에서 클라이언트 끼리는 서로 직접적으로 통신하지 않고, 무조건 서버를 거친다.
• 고정 IP 주소 : 서버는 고정 IP 주소라는 잘 알려진 유일한 주소를 갖는다.
◦ 인터넷에서 호스트는 IP 주소로 식별된다.
◦ 서버는 항상 동작하고 있으므로, 클라이언트는 이 서버 주소로 패킷을 보내서 항상 서버에 연결할 수 있다.
• 때때로 하나의 서버 호스트가 자신의 모든 클라이언트로부터의 요청에 응답하는것이 불가능한 경우도 있다.
◦ 하나의 서버 호스트가 감당할 수 있는 정도 이상으로 요청이 들어오면 서버가 정상적으로 작동하지 못할 수 있음
◦ 이런 문제를 해결하기 위해 데이터 센터가 사용된다.
• 데이터 센터(data center) : 많은 수의 호스트를 갖춘 강력한 가상의 서버
◦ 데이터 센터는 전력이 공급되어야 하는 10만개 정도를 서버를 가지며, 서비스 제공자들은 데이터 센터로부터 데이터를 보내기 위해
상호연결 및 대역폭에 대한 비용을 지불해야 한다.
◦ 구글 같은 검색엔진이나 페이스북, 인스타그램 같은 SNS 등의 인기 있는 서비스들은 모두 하나 이상의 데이터 센터를 사용한다.
P2P 구조
• P2P 구조에서 어플리케이션은 클라이언트 - 서버 구조와 달리, 항상 켜져있는 호스트 서버에 거의 혹은 전혀 의존하지 않는다.
그 대신 피어(peer)라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신한다.
◦ 피어(peer) : 서비스 제공자가 소유하는 것이 아닌, 사용자들이 제어하는 데스크탑/랩탑 등을 의미
• 특정 서버를 경유하지 않고, 피어끼리 직접 통신하므로 이 구조를 피어-투-피어(P2P)라 부른다.
• 비트토렌트(BitTorrent), 스카이프 등의 서비스가 P2P 구조를 사용한다.
• 자가 확장성(self-scalability) : P2P 구조의 가장 주목할만한 특성
◦ New peers bring new service capacity.
◦ P2P 파일 공유 어플리케이션에서 여러 피어들이 파일을 요구하면 작업 부하가 발행하지만,
각 피어들은 동시에 다른 피어들에게 파일을 분배해줄 수 있으므로 시스템 서비스 기능에 기여할 수 있다.
• 비용 효율성 : P2P 구조는 서버 기반 구조 및 서버 대역폭을 요구하지 않기 때문에 클라이언트 - 서버 구조 혹은 데이터 센터와
비교해보았을 때 비용적인 측면에서 효율적이다.
• 그러나 P2P 특유의 분산 구조 특성으로 인해 보안, 성능, 신뢰성 부분에서 여러 단점이 존재한다.
참고자료
'CS Knowledge > Network' 카테고리의 다른 글
[Network] 어플리케이션 계층의 프로세스 간 통신 (0) | 2022.08.25 |
---|---|
[Network] OSI 7 계층이란? (0) | 2022.06.26 |
[Server] 웹서버 vs WAS (0) | 2022.06.25 |
[REST] REST API의 개념과 간단한 설계 원칙 (0) | 2022.05.06 |