이론/백엔드 개념정리
용어정리
블스뜸
2025. 5. 3. 19:29
JSON (JavaScript Object Notation)
JSON은 클라이언트와 서버 간 통신 시 사용되는 데이터 양식이다.
- 사람과 기계 모두 이해하기 용이하며, 데이터 용량이 작다.
- XML을 대체하여 데이터 전송 등에 널리 활용된다.
- 웹 환경에서 전 세계 공통어와 같이 사용된다.
- 클라이언트에서 서버로 데이터를 전송하는 데 사용된다.
- 서버 간 데이터 통신에도 활용된다.
- Key-Value 형태로 구성된다.
- null, number, string, array, object, boolean 타입의 데이터를 사용할 수 있다.
Scale Up (수직적 확장)
Scale Up은 서버의 성능을 향상시키기 위해 단일 서버의 하드웨어 사양(CPU, Memory 등)을 높이는 방식이다.
- 요청 처리 속도를 향상시킬 수 있다.
- 서버 비용 증가에 따라 성능 향상을 기대할 수 있다.
Scale Out (수평적 확장)
Scale Out은 서버의 처리 능력을 향상시키기 위해 동일한 사양의 서버(인스턴스)를 여러 대 배치하는 방식이다.
- 동시에 더 많은 사용자 요청을 처리할 수 있다.
- 비용 대비 성능 향상 효과가 크다.
Stateful (상태 유지)
Stateful 방식에서 서버는 클라이언트의 이전 요청 내용을 기억하여 다음 요청 처리에 활용한다.
- 마지막 요청에 대한 정보를 서버가 저장한다.
Stateful 방식의 문제점
- 특정 서버에 지속적으로 요청해야 한다.
- 이전 요청을 처리했던 서버가 아닌 다른 서버로 요청이 전달될 경우, 상태 정보가 없어 정확한 처리가 어렵다.
- 서버는 시스템 오류, 비즈니스 로직 오류, 리소스 부족 등 다양한 이유로 인해 동작 불능 상태에 빠질 수 있다.
- 요청 트래픽이 집중될 경우, 상태 유지에 많은 리소스가 소모되어 서버 성능 저하 또는 장애를 유발할 수 있다.
Stateless (무상태)
Stateless 방식에서 서버는 클라이언트의 상태를 저장하지 않는다.
Stateless 방식의 실제 요청 방식
- 이전 요청에 필요한 모든 정보를 현재 요청에 포함하여 전송한다.
Stateless 방식의 장단점
장점
- 특정 서버에 종속될 필요가 없어 서버 관리가 용이하다.
- Scale Out (수평 확장)이 용이하여 갑작스러운 트래픽 증가에 유연하게 대처할 수 있다.
단점
- 매 요청마다 클라이언트가 추가적인 데이터를 전송해야 하므로 전송 데이터 양이 증가한다.
Stateless 방식의 한계점
- 웹 애플리케이션 개발 시 서버 확장성을 고려하여 Stateless하게 설계하는 것이 권장되지만, 로그인과 같이 상태 유지가 필요한 경우가 발생한다.
- Cookie, Session, Token 등의 기술을 활용하여 상태 유지의 한계를 극복하고, 상태 유지를 최소화해야 한다.
Connection, Connectionless (연결 유지 여부에 따른 특성)
클라이언트와 서버 간의 연결 유지 여부에 따라 Connection 방식과 Connectionless 방식으로 구분된다.
Connection (연결)
서버는 클라이언트와의 연결을 유지하기 위해 자원을 소모한다.
- 많은 사용자가 서비스를 이용하더라도 실제로 서버에서 동시에 처리하는 요청 수는 적으며, 일부 클라이언트는 요청이 없는 상태에서도 연결을 유지한다.
Connection 방식의 장단점
장점
- 새로운 연결 설정 과정이 불필요하므로 요청에 대한 응답 속도가 빠르다.
단점
- 클라이언트가 지속적으로 요청을 보낼 것이라는 보장이 없어 연결 유지를 위한 서버 자원이 낭비될 수 있다.
Connectionless (비연결)
클라이언트와 서버는 연결을 유지하지 않고, 각 요청마다 연결을 맺고 끊는다.
- 서버는 최소한의 자원만 사용한다.
- 예시: 인터넷 연결이 끊어진 상태에서도 브라우저에 이미 로드된 홈페이지가 정상적으로 보이는 것은 비연결 특성 때문이다.
Connectionless 방식의 장단점
장점
- 서버 자원을 효율적으로 사용할 수 있다.
단점
- 새로운 요청이 있을 때마다 연결 설정(3-way handshake) 과정을 거쳐야 하므로 응답 시간이 증가한다.
- 웹 페이지의 HTML, CSS, JS, 이미지 등 정적 자원을 매번 다시 다운로드해야 한다. (→ 캐시, 브라우저 캐싱으로 해결 가능)
HTTP 지속 연결 (Persistent Connections)
현재는 Connectionless 방식의 단점을 보완하기 위해 HTTP 지속 연결 방식을 사용한다.
- 하나의 요청에 필요한 모든 하위 요청(HTML, CSS, JS, 이미지 등)이 완료될 때까지 연결을 유지한다.
- 연결 설정 및 해제 횟수를 줄여 Connectionless 방식보다 응답 속도가 빠르다.