오늘 저는 서버의 유형에 대해 가지고 와봤습니다!
전공 수업이나 정처기 공부 중 꼭 나오는 어플리케이션 서버, 웹 서버, 웹 어플리케이션 서버 등등.. 여러 가지 헷갈리는 서버의 유형들..!!
부끄럽게도 저는 공부할 때마다 대충 어떤 느낌인지만 파악했던 것 같습니다.
이번 기회로 제대로 이해해보려구요.
바로 시작할게요 🚀🚀
🧑🍳: 안녕하세요 우리 레스토랑🥘🍳🥗 입니다 -!!
오늘 저는 레스토랑을 예로 들어 서버의 각 역할을 설명하고, 각각의 서버가 어떤 일을 담당하는지 알려드리겠습니다!
먼저 우리의 귀한 손님을 소개합니다.
클라이언트(Client) -손님
손님은 레스토랑에 와서 원하는 메뉴를 주문합니다.
컴퓨터 세계에서는 이렇게 요청을 보내는 손님을 클라이언트라고 하고, 클라이언트는 서버에 요청을 보냅니다.
🧑🍳: 우리 귀한 손님과 대화 나누셨나요? 다음으로 우리 웨이터를 소개합니다~!
웹 서버(Web Server) -웨이터
웨이터는 손님과 주방 사이에서 중간다리 역할을 합니다.
웹 서버는 손님에게 메뉴판(HTML, CSS, JavaScript와 같은 정적 콘텐츠)을 보여주고, 주문을 받아요.
여기서 잠깐! “정적 콘텐츠”란?
어떤 사용자가 이용하든지 바뀌지 않고 동일하게 전달되는 콘텐츠를 말해요.
클라이언트의 요청을 받고 서버에 미리 저장된 파일을 그대로 응답해 보여주는, 실시간 변화가 없는 데이터랍니다.
반대로, 어떤 클라이언트가 언제, 어디서, 어떻게 요청했는지에 따라 각기 다른 결과를 보여주는 콘텐츠는 바로 “동적 콘텐츠”예요!
만약 손님이 물이나 빵처럼 미리 준비된 간단한 것(정적 콘텐츠)을 원하시면 바로 제공하지만,
요리가 필요한 요청(동적 콘텐츠)을 하시면 주방으로 전달하는 역할을 한답니다.
🧑🍳: 저는 우리 레스토랑의 요리사입니다. 컴퓨터 세계에서는 저를 AP서버라 부르더군요.
AP 서버 (Application Server) - 요리사
요리사는 손님의 요청을 받아 요리(비즈니스 로직)를 만들어요.
손님이 “파스타🍝 주문할게요!” 라고 요청하시면, 저는 냉장고(데이터베이스 서버)에서 재료를 가져와 요리를 합니다. 그리고 요리가 완성되면 웨이터(Web서버)에게 전달하고 손님에게 가져다 드려요.
아 참! 제 소개를 하면서 이 친구를 함께 말씀드려야겠네요.
WAS (Web Application Server) - 레시피
데이터베이스에서 가져온 재료(데이터)를 어떤 레시피로 조리할지 결정하고 클라이언트가 원하는 형태로 요리를 만드는 과정(HTTP 요청 처리, 동적 콘텐츠 생성)을 관리하는 녀석이에요.
이 친구로 완성한 요리는 웨이터(웹 서버)를 통해 손님에게 전달되겠죠?
데이터베이스 서버 (DB Server) - 냉장고
위에서 언급했지만, 제가 요리(비즈니스 로직)를 준비하기 위해 필요한 재료인 데이터를 저장하고 제공하는 역할을 해요!
제가 “클라이언트의 요청대로 파스타를 만들겠어! 토마토와 파스타면을 줘!” 라고 하면, 냉장고는 그 재료를 제공해줍니다.
레스토랑을 예시로 조금 쉽게 풀어내려고 노력해봤는데, 혹시 이해가 되셨나요?
이제는 그 개념에 대해 더 제대로 알려드릴게요!
AP 서버
비즈니스 로직을 처리하는 서버입니다. 사용자가 요청한 데이터의 처리, 계산, 데이터베이스와의 상호작용 등을 담당합니다.
HTTP, TCP, UDP 등 다양한 프로토콜에 따라 클라이언트와 통신하며 다양한 서비스를 제공합니다.
대표적인 AP서버:
Apache Tomcat, Oracle WebLogic, GlassFish
웹 서버
HTML, CSS, JavaScript 같은 정적인 웹 콘텐츠를 클라이언트(브라우저)로 전달합니다.
웹 서버는 콘텐츠를 전달하는 데 초점이 맞춰져 있고, AP서버처럼 데이터를 가공하거나 로직은 실행하지 않습니다. (개념은 그러한데, 요즘 웹서버는 플러그인 또는 모듈을 통해 제한적인 서버 측 로직을 처리하기도 합니다..)
대표적인 웹서버:
Apache, IIS, Nginx
WAS
DB에서 조회한 데이터를 로직으로 처리해서 만든 동적인 콘텐츠를 제공하는 서버입니다.
대표적인 WAS:
WebLogic, Jeus, JBoss, Tomcat
DB 서버
데이터를 저장하고 관리하며, AP 서버와 통신하여 데이터를 제공하거나 저장하는 서버입니다.
그 외..
파일 서버
파일(이미지, 동영상, 문서 등)을 저장하고 사용자나 AP서버가 필요할 때 제공하는 서버입니다.
이렇게 서버의 여러가지 유형이 있지만, 현실에서는 웹 서버와 애플리케이션 서버의 구분이 모호해졌습니다.
대부분의 웹 서버는 스크립팅 언어(ex. ASP, JSP, PHP, Perl)의 플러그인을 지원합니다.
그러면 웹 서버에서 서버 측 로직을 기반으로 동적 콘텐츠를 생성할 수 있습니다.
또한 점점 더 많은 수의 애플리케이션 서버가 웹 서버 기능을 통합함은 물론, HTTP를 기본 프로토콜로 사용하고 웹 서버와의 인터페이스를 위해 기타 프로토콜을 지원합니다.
아울러 웹 애플리케이션에서 리버스 프록시, 클러스터링, 이중화, 로드 밸런싱 등의 서비스를 활용할 수도 있습니다.
자 오늘 이렇게 서버의 유형에 대해 살펴봤는데요,
이해가 잘 되셨으면 좋겠습니다 😍
질문은 편하게 댓글로 남겨주세요.
'Web Programming' 카테고리의 다른 글
[JUnit] assertThat(AssertJ), assertEquals(JUnit) 비교 (0) | 2025.01.10 |
---|---|
Spring Batch와 스케줄러 (0) | 2024.11.25 |
JWT(JSON Web Token)란? (0) | 2024.11.25 |
[Spring] DI 의존성 주입 | Field 주입, Setter 주입, 생성자 주입 (1) | 2024.09.04 |
[Java] HikariCP | Database Connection Pool (0) | 2024.08.27 |