TCP 서버와 웹서버 장단점 비교

Posted by 엘키의 주절 주절 on September 27, 2016

TCP 서버

장점

  • 성능이 좋다. (=빠르다)
  • 커넥션 기반
    • 가용성을 확보하는 공수가 큼.
  • 손쉽게 notify가 가능. (클라이언트의 요청없이 서버가 패킷 전달)

단점

  • 커넥션 기반이라, 커넥션 유실/복구 이슈
    • 로직간 결합도가 높아지는 경우가 자주 발생한다.
  • 서버 크래시에 대한 높은 리스크.
    • 예외처리로 커버되지 않을 때.

웹 서버

장점

  • stateless 기반
    • 가용성 확보가 쉬움.
    • state는 모두 db에 존재.
  • 오픈소스 프레임워크가 많고, 검증되어있음.
    • 프레임워크 내에서도, 다양한 기능들이 오픈소스로 배포되고 쉽게 사용 가능.
  • state가 없음으로 로직간 결합도가 낮다.
    • 서버 크래시에도 큰 장애는 없다.
    • 어지간해서는 서버 크래시도 없다. [일부 기능만 오류 발생.]
    • 부하로 인한 timeout이나, 스크립트 오류가 발생할 뿐.

단점

  • 모든 데이터는 요청마다 db를 조회해야해서 성능이 떨어진다.
  • notify가 어려움. (1-request, 1-response 구조)
  • 다른 피어와 통신용으로 사용하기 위해선 polling이 필요하다. [like ajax]