Web Server Story for Backend Builders

정적 파일 서버에서 글로벌 백엔드까지, 웹 서버가 커진 발자취

1990년 CERN 복도에서 팀 버너스-리는 NeXT 컴퓨터 한 대를 책상 위에 올리고 httpd 데몬을 띄웠습니다. 브라우저가 GET을 보내자 로그에 경로가 찍히고 곧바로 HTML이 화면에 나타나는 순간, 연구원들은 문서를 복사해 돌리는 대신 링크 하나로 지식을 나눌 수 있다는 사실을 실감했습니다.

이어 NCSA와 Apache가 소스를 공개해 누구나 서버를 설치하고 고칠 수 있는 기반을 열었습니다. 운영팀은 SSL, mod_proxy, LVS 같은 도구로 앞단에서 보안과 분산을 맡기 시작했고, 뒤에서는 서블릿과 컨테이너가 세션과 비즈니스 로직을 책임지는 역할 분담이 자리 잡았습니다.

2010년대에 접어들며 Nginx, Spring Boot, Lambda, Kubernetes Ingress는 설정을 줄이고, 확장을 자동화하며, 코드를 더 작은 단위로 나누게 해 줍니다. 아래 연표에서 각 시대가 맞닥뜨린 문제와 그 해법을 따라가며 오늘의 백엔드 운영이 어떻게 만들어졌는지 확인해 보세요.

연도 버튼을 누르면 새 창 없이 팝업 대화 상자가 열리고, 그 자리에서 자세한 이야기를 이어서 읽을 수 있습니다.

1990–1995

“서버도 우리 손으로 돌리자”

CERN, NCSA, Apache가 소스를 공개하며 누구나 웹 서버를 설치하고 고칠 수 있는 길을 닦았습니다.

1994–1998

“앞단은 내가, 뒤는 너네”

SSL, mod_proxy, LVS가 앞단에서 보안과 트래픽 분산을 맡으면서 웹 서버와 애플리케이션 서버를 나누는 운영 방식이 보편화되었습니다.

1997–1999

“요청은 객체로, 세션은 컨테이너로”

Servlet 사양과 Tomcat 컨테이너가 요청과 응답을 객체로 다루고 세션을 공통 규칙으로 관리하면서 동적 웹의 기초가 마련되었습니다.

2003

“EJB 말고도 길이 있다”

Spring 1.0은 무거운 EJB 대신 가벼운 컨테이너로 트랜잭션과 보안을 처리할 수 있다는 사실을 보여줬습니다.

2005

“세션은 메모리 풀에 맡기자”

Memcached가 여러 대의 애플리케이션 서버가 공유하는 분산 캐시 전략을 제시하며 확장 공식을 정리했습니다.

2011–2015

“설정은 줄이고, 트래픽은 맡겨라”

Nginx, Spring Boot, Lambda, Ingress가 가벼운 프록시와 자동화된 배포, 서버리스 실행, 클러스터 라우팅을 묶어 현대적인 운영 방식을 만들었습니다.

참고 자료

사양 문서, 배포 공지, 그리고 운영팀의 회고를 모았습니다. 원문을 읽어 보면 웹 서버(WAS)가 어떤 문제를 해결하려고 태어났는지 더 분명하게 들어옵니다.