서버와 클라이언트는 고정된 존재가 아니라, 관계에 따라 역할이 달라진다
서버와 클라이언트를 처음 배울 때는 보통
"서버는 서비스를 제공하는 쪽, 클라이언트는 서비스를 요청하는 쪽"
이라고 정리한다.
이 설명 자체는 맞지만, 여기서 더 중요한 것은
서버와 클라이언트가 절대적으로 고정된 역할이 아니라는 점이다.
같은 애플리케이션도 상황에 따라 어떤 순간에는 서버가 되고,
또 다른 순간에는 클라이언트가 될 수 있다.
예를 들어 사용자가 브라우저에서 구글 검색을 요청했다고 해보자.
클라이언트가 네트워크를 통해 요청을 보내면,
그 요청은 방화벽이나 스위치 같은 네트워크 장비를 지나
검색 서비스를 담당하는 서버로 전달된다.
이 시점에서 검색 서비스는 사용자의 요청을 받아 처리하는 입장이므로 서버가 된다.
그런데 검색 서비스를 처리하는 도중에, 검색 결과나 사용자 행동을 기록하기 위해
별도의 로깅 서비스에 로그 저장 요청을 보낼 수 있다.
이 순간에는 검색 서비스는 더 이상 서버 역할만 하는 것이 아니라, 로깅 서비스를 호출하는 클라이언트 역할도 하게 된다.
반대로 로깅 서비스는 그 요청을 받아 처리하므로 서버가 된다.
결국 서버와 클라이언트는 특정 장비나 프로그램에 영원히 붙어 있는 이름이 아니라,
누가 요청하고 누가 응답하는가에 따라 결정되는 관계적 개념이라고 이해하는 것이 더 명확하다.
기타 클라이언트
브라우저 외에도 다양한 HTTP 클라이언트가 존재한다.
클라이언트라고 하면 많은 사람들이 가장 먼저 웹 브라우저를 떠올린다.
하지만 웹 개발이나 백엔드 개발을 하다 보면 브라우저 외에도
다양한 방식으로 서버에 요청을 보내야 할 일이 생긴다.
이때 사용하는 대표적인 도구가 Postman과 curl이다.
① Postman

먼저 Postman은 GUI 환경에서 HTTP 요청을 쉽게 만들고 테스트할 수 있는 도구다.
브라우저는 사용자가 웹페이지를 보는 데 최적화되어 있지만,
개발자는 종종 더 세밀하게 요청을 제어할 필요가 있다.
예를 들어 특정 URL로 POST 요청을 보내고 싶다거나,
헤더 값을 직접 넣고 싶다거나, JSON 본문을 원하는 형태로 작성해 테스트하고 싶을 수 있다.
Postman은 이런 작업을 편하게 할 수 있도록 화면 기반 인터페이스를 제공한다.
그래서 백엔드 API를 개발할 때, 서버가 의도한 대로 동작하는지 확인하거나
프론트엔드 없이 API만 먼저 검증해볼 때 매우 자주 사용된다.
② curl

반면 curl은 커맨드라인에서 사용하는 HTTP 클라이언트다.
Postman이 직관적이고 시각적인 도구라면,
curl은 명령어 기반으로 더 가볍고 자동화에 적합한 도구라고 볼 수 있다.
curl은 HTTP 요청을 직접 만들어 보낼 수 있을 뿐만 아니라,
필요에 따라 다른 프로토콜도 다룰 수 있다.
예를 들어 터미널에서 간단히 API 응답을 확인하거나,
셸 스크립트 안에서 외부 서비스에 요청을 보내 결과를 받아오는 방식으로 자주 사용된다.
특히 curl은 스크립트 자동화와 잘 어울린다는 점이 큰 장점이다.
어떤 애플리케이션을 만들 때 외부 API에 요청을 보내고 그 결과를 받아 후속 작업을 처리해야 할 수도 있다.
그래서 배포 스크립트, 서버 점검, API 헬스 체크, 간단한 테스트 자동화 같은 상황에서 curl이 자주 활용된다.
결국 브라우저, Postman, curl은 모두 서버에 요청을 보내는 클라이언트라는 공통점을 가진다.
다만 브라우저는 일반 사용자가 웹페이지를 보는 데 적합하고,
Postman은 개발자가 API를 직관적으로 테스트하는 데 유리하며,
curl은 터미널 환경과 자동화 작업에 강점을 가진다.
'공부 기록 > 이것이 백엔드 개발이다 With Java' 카테고리의 다른 글
| EP7. 백엔드 개발자가 HTML을 알아야 하는 이유 (0) | 2026.03.24 |
|---|---|
| EP6. 스프링부트로 웹 애플리케이션을 시작해보기 (0) | 2026.03.23 |
| EP4. 서버와 브라우저 (0) | 2026.03.18 |
| EP3. 서버와 클라이언트의 개념 (0) | 2026.03.16 |
| EP2. 백엔드 개발이란? (0) | 2026.03.11 |