서버란 무엇인가 - 배경지식과 역사
개발을 배우기 전엔 서버라는 게 굉장히 추상적이었다. “어딘가에 있는 큰 컴퓨터” 정도? 직접 서버를 구축하고 나서야 그 개념이 실체를 가지기 시작했다.
서버의 본질
서버(Server)는 다른 컴퓨터(클라이언트)의 요청을 받아 응답하는 컴퓨터 또는 프로그램이다.
“서버”는 사실 하드웨어를 가리키기도 하고, 소프트웨어를 가리키기도 한다. 물리 서버는 그 이름처럼 거대한 기계일 수도 있지만, 사실 일반 노트북에 Nginx를 띄워도 “서버”가 된다. 요청을 받고 응답하면 그게 서버다.
역사: 메인프레임에서 클라우드까지
1950-60년대: 메인프레임
초기에는 건물 한 채를 가득 채우는 거대한 메인프레임이 서버 역할을 했다. 여러 단말기(터미널)가 하나의 메인프레임에 접속해서 CPU 시간을 나눠 썼다. 지금 기준으로는 성능이 형편없지만, 그때는 그게 전부였다.
1970-80년대: 미니컴퓨터와 유닉스
메인프레임보다 작은 미니컴퓨터가 등장했다. 유닉스가 이 시기에 개발됐고, “모든 것이 파일”이라는 리눅스의 철학이 여기서 비롯됐다.
1990년대: PC 서버와 인터넷
일반 PC급 하드웨어로 서버를 구축하는 시대가 열렸다. HTTP, HTML의 탄생과 함께 웹 서버 개념이 생겼다. Apache HTTP Server가 1995년에 나오면서 웹 서버 시대가 본격화됐다.
2000년대: 가상화
한 물리 서버에서 여러 가상 머신을 돌리는 가상화 기술이 발전했다. VMware, Xen 등으로 하드웨어 자원을 효율적으로 나눠 쓸 수 있게 됐다.
2006년~: 클라우드
AWS가 S3와 EC2를 출시하면서 클라우드 시대가 열렸다. 물리 서버를 직접 사지 않아도 필요한 만큼 빌려 쓸 수 있게 됐다.
2013년~: 컨테이너
Docker의 등장으로 가상 머신보다 훨씬 가볍게 애플리케이션 환경을 격리할 수 있게 됐다. Kubernetes가 컨테이너 오케스트레이션을 표준화하면서 마이크로서비스 아키텍처가 현실적인 선택지가 됐다.
서버의 종류
| 종류 | 역할 |
|---|---|
| 웹 서버 | HTTP 요청 처리 (Nginx, Apache) |
| 애플리케이션 서버 | 비즈니스 로직 처리 (Tomcat, Spring Boot) |
| 데이터베이스 서버 | 데이터 저장·조회 |
| 파일 서버 | 파일 공유 (NAS) |
| 메일 서버 | 이메일 송수신 |
| DNS 서버 | 도메인 이름 → IP 주소 변환 |
직접 서버를 만들면서 달라진 관점
홈랩을 구축하면서 가장 크게 달라진 건, “서버”가 뭔가 신비로운 것이 아니라 “요청을 받아 응답하는 프로세스”라는 걸 몸으로 이해하게 됐다는 거다.
Proxmox로 가상 머신 만들고, LXC 컨테이너 띄우고, Nginx로 리버스 프록시 설정하고, Cloudflare Tunnel로 외부에 노출하는 과정이 결국 메인프레임 시대부터 이어진 “요청-응답”의 현대적 구현이다.