서버란?
서버는 웹 사이트, 웹 앱 등 다양한 응용 프로그램과 서비스를 다른 컴퓨터 및 클라이언트에게 제공하고 실행하는 컴퓨터이다. 일반적으로 수백 또는 수천 개의 서버 컴퓨터가 데이터 센터라는 곳에 저장된다.
데이터 센터에는 서버가 지속적으로 전력과 인터넷 연결을 공급받을 수 있고 하루 24시간 호출될 수 있도록 하는 시스템이 마련되어 있고 전 세계 곳곳에 데이터 센터가 존재한다.
-
- 서버 - 하드웨어
- 서버의 물리적 구성 요소를 말한다. 데이터 센터 서버는 서비스 목적에 따라 구축된다. 예를 들어, 서버가 이미지 저장에만 사용되는 경우 하드 드라이브 공간을 많이 필요로 하며, 서버가 복잡한 계산이 필요한 경우 빠른 프로세서와 많은 메모리가 필요하다. 이를 서버 하드웨어라 한다.
-
- 서버 소프트웨어
- 하드웨어에서 실행되는 코드, 즉 소프트웨어를 말한다. 그중에 웹에 관련된 기능을 가진 서버 소프트웨어를 웹 서버라 한다.
웹 서버란?
웹 서버에는 웹 사이트 호스팅, 웹사이트 저장 및 관리, 데이터 저장, 보안 및 이메일 관리 등 많은 기능이 있고, 클라이언트의 웹 요청 처리 및 응답하는 기능을 한다. 사용자가 디바이스에서 브라우저를 열고 웹 사이트 이름을 입력하면, 웹 서버는 해당 웹 사이트의 콘텐츠를 사용자 디바이스로 다시 보내는 역할을 한다. 이 프로세스를 요청 응답 주기(request response cycle)라고 한다.
웹 호스팅이란?
웹 호스팅 서비스를 이용하여 누구나 인터넷에 자신의 웹사이트를 만들 수 있는데, 호스팅 회사의 웹 서버에 나의 웹 사이트와 파일을 배치하는 서비스를 웹 호스팅이라 한다. 안정적이고 안전한 파일 보관을 위해 서버 공간을 임대하는 것이다.
웹 호스팅 종류 4가지
-
Shared hosting 공유 호스팅: 호스팅 서비스 중에 가장 저렴하며 다른 계정과 웹 서버 비용을 나누어 지불한다. 다른 웹사이트와 서비스 처리 능력, 메모리 및 대역폭을 공유하기 때문에 성능이 저하될 수 있다. 방문자 수가 적은 소규모 웹사이트 또는 개발자 샌드박스 환경을 만들거나 개발자 호스팅 관련 연습이 필요할 때 가장 적합한 호스팅이다. 일부 호스팅 회사는 무료 공유 호스팅을 제공한다.
-
Virtual private hosting 가상 사설 호스팅: VPS는 전용 CPU, 메모리 및 대역폭 리소스가 있는 가상 서버로, 다른 VPS 인스턴스가 있는 하드웨어 서버에서 실행되지만 VPS 인스턴스별로 리소스가 고정되어 있으므로 다른 VPS 인스턴스의 성능에 영향을 받지 않는다.
-
Dedicated hosting 전용 호스팅: 사용자의 웹사이트를 위해 하나의 하드웨어 서버를 전용으로 대여하는 호스팅 서비스로 모든 하드웨어, CPU, 메모리 및 대역폭 리소스를 개인적으로 사용할 수 있다.
-
Cloud hosting 클라우드 호스팅: 클라우드 호스팅은 물리적인 서버와 가상 서버를 모두 사용하는 클라우드 환경에서 실행되는 서비스이다. 물리적 또는 가상 서버 중 하나에 장애가 발생하면 다른 서버에서 실행되어 온라인 상태를 유지할 수 있고, 하드웨어 제한 없이 필요한 만큼 리소스를 사용할 수 있다. 웹사이트 또는 앱의 인기가 증가함에 따라 쉽게 확장 가능한 Scalable 의 장점이 있지만, 리소스 사용량에 따라 비용을 지불하기 때문에 높은 비용을 지불해야 할 수 있다.
앱 서버 = 어플리케이션 서버 = 백엔드란?
클라이언트가 웹 사이트를 열면 웹 서버가 웹 사이트의 콘텐츠를 브라우저로 보내는데, 정적 컨텐츠는 웹 서버가 보내고 동적 컨텐츠는 웹 서버가 앱 서버(백엔드)와 통신하여 보낸다.
정적 콘텐츠는 동영상이나 이미지와 같이 웹 서버에 저장된 그대로 서버에서 전송하는 파일이다. 동적 콘텐츠는 HTTP 요청이 이루어질 때 앱 서버(백앤드)에서 즉각 생성되는 파일이다.
브라우저로부터 HTTP 요청을 받은 웹서버가 앱서버에 콘텐츠를 요청하고, 앱 서버는 동적 콘텐츠를 생성하여 웹 서버로 다시 보내고, 웹 서버가 다시 사용자의 브라우저로 응답을 보내는 과정을 거친다.
즉, 앱 서버 = 백엔드
앱 서버는 애플리케이션 로직을 실행하고 데이터베이스와 통신하고 권한을 확인해야 하는 등 웹 서버보다 복잡한 기능을 수행한다.
웹 서버와 캐싱
웹 서버는 동적 콘텐츠의 복사본을 보관하여 캐싱을 하고, 이후 요청이 들어오면 콘텐츠가 캐시에 있는지 확인한다. 캐시가 있다면 앱 서버에 따로 요청하지 않고 바로 복사본을 브라우저로 보낼 수 있고, 캐시가 없다면 앱 서버에 요청한다. 캐싱을 통해 앱 서버의 로드를 줄이는 것이다. 이후 일정 시간 후에 웹 서버는 캐시를 최신 콘텐츠로 업데이트한다.