네트워크 어플리케이션 구조란 이전 포스트에서 다룬 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 특유의 분산 구조 특성으로 인해 보안, 성능, 신뢰성 부분에서 여러 단점이 존재한다.

 

 

참고자료

 

컴퓨터 네트워킹 하향식 접근 - YES24

컴퓨터 네트워킹 하향식 접근

www.yes24.com