[TIL] 서버 통신 관련 용어

YJin·2025년 3월 19일

[내배캠 Spring 6기_TIL]

목록 보기
12/56

📊통신에 사용하는 데이터 양식

XML

: 과거에 주로 사용한 서버-클라이언트 간 통신 데이터 양식.

단점

  • 통신에 필요한 데이터 양이 많다
  • 사람이 읽기 어려움

JSON

: XML을 대체하여 현재 주로 사용하는 경량화된 데이터 양식.

장점

  • 사람, 기계 모두 이해하기 쉬우며 용량이 작음
  • 서버나 클라이언트 간 언어가 달라도 통신이 가능.

JSON 예시

{
 "userName" : "Henry",
 "age" : 33,
 "hired" : true,
 "phoneNumber":null,
 "class": ["Science", "HealthCare", "Math"]   
}
  • key:value 형태
    • 예시) key = userName, value = Henry
  • snake_case, camelCase 모두 사용 가능
  • 허용 데이터 타입: nullnumberstringarrayobjectboolean


📈서버 성능 향상을 위한 방법

Scale Up

example
  • 수직적 확장. 단일 서버의 하드웨어 성능을 향상

장점

  • 단일 서버에서 성능을 확장할 수 있어 빠르게 성능 향상 가능

단점

  • 서버 커질수록 비용 급수적으로 증가
  • 단일 서버의 문제가 전체 시스템에 영향 끼칠 수 있음

Scale Out

example
  • 수평적 확장. 같은 성능의 서버를 여러개 배치.

장점

  • 동시에 더 많은 사용자 요청을 처리 가능 (분산 서버)

단점

  • 서버 간의 데이터 동기화가 필요하며 이에 따라 관리가 복잡해질 수 있음


🔄서버 통신 상태 유지

✅서버 통신 상태 유지 (State)

: 클라이언트의 요청을 기억해두는 방식으로, 이전의 요청에 응답한 동일한 서버가 유지되어야 한다.

단점

  • 서버 측 동작 문제
    • 시스템 에러, 비지니스 로직 문제, 리소스 부족 문제 등
    • 요청 트래픽이 몰리게되면 상태 유지에 리소스가 많이 소모된다.
    • 리소스가 버티지 못하면 서버가 종료되거나, 다음 요청에 대한 처리가 느려진다.

❌서버 통신 상태 유지 (Stateless)

: 요청을 받을 때마다 새로운 상태에서 처리하는 방식으로, 서버가 클라이언트의 상태를 기억하지 않는다.

장점

  • 같은 서버를 유지할 필요가 없다.
  • 수평 확장성이(Scale Out) 높다.
  • 갑자기 요청량이 증가하여도 서버를 증설하기 쉽다.

단점

  • 클라이언트가 데이터를 추가적으로 전송해야 한다.
  • 전송되는 데이터의 양이 많아진다.

상태 유지를 최소화하는 것이 좋지만, 일부 필요한 경우 있음 (ex. 로그인, 결제)

➡️ Cookie, Session, Token 등을 활용하여 이러한 한계를 극복


🔗서버 통신 연결 유지

✅서버 통신 연결 유지 (Connection)

: TCP/IP 연결을(3-way 핸드쉐이킹) 통해 서버-클라이언트 간 지속적인 연결을 유지하는 방식

장점

  • 새로운 연결 과정 X —> 응답속도 향상

단점

  • 연결 유지를 위해 자원 소모

❌서버 통신 연결 유지 (Connectionless)

: 요청 시마다 새로운 연결 과정을 시작하는 방식

단점

  • 추가 요청 시 연결 과정 새로 해야함
    • 정적 자원(HTML, CSS, JSS …) 다시 다운로드 필요

💡 해결 방법: 캐시, 브라우저 캐싱으로 해결
➡️ 현재는 HTTP 지속 연결로 해결하는 방식

HTTP 지속연결(Persistent Connections)

  • 하나의 요청에 필요한 요청들이 모두 응답될 때 까지 연결을 유지한다.
  • 연결을 한번만 맺고 끊기 때문에, Connectionless 방식보다 연결 횟수가 적다.
    ➡️ 그만큼 속도가 증가

예시: (HTML 요청 + CSS 요청 + JS 요청 + 이미지 요청) ➡️ 하나의 요청으로 묶음

profile
백엔드 개발도 락이다

0개의 댓글