Web Server Story for Backend Builders

“요청을 안전하게 돌려보내려면?”이라 묻던 운영자의 연대기

1990년 CERN에서 연구원이 말했습니다. “링크만 눌러도 보고서를 열 수 있다고요?” httpd 데몬 앞에서 팀 버너스-리가 웃으며 “GET 한 번이면 됩니다”라고 답했습니다. 그 순간부터 서버는 단순 파일 창고가 아니라, 요청을 받아 판단하는 동료가 되었습니다.

곧 운영팀은 “사용자마다 다른 응답을 보내려면 어떻게 하지?”라며 서블릿과 HttpSession을 붙잡았고, Tomcat은 “세션은 내가 지킬게요”라며 새벽 호출을 줄여 주었습니다. 보안 담당자는 SSL 자물쇠를 가리키며 “이제 카드 결제도 해봅시다”라고 설득했고, 인프라 엔지니어는 mod_proxy와 LVS 앞에서 “정적·동적 요청을 갈라보죠”라며 트래픽을 쪼개기 시작했습니다.

오늘날 Nginx, Spring Boot, Lambda, Ingress 운영자는 “설정은 줄이고 배포는 자동으로, 필요하면 컨테이너가 대신 받아요”라고 자신 있게 말합니다. 아래 연대를 눌러 당시 엔지니어가 어떤 결정을 내렸고, 어떤 대사로 팀을 설득했는지 함께 들어보세요.

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

1990–1995

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

CERN, NCSA, Apache 팀이 코드를 공개하며 “다운로드해서 직접 고쳐 보세요”라고 말하자 전 세계 운영자가 자신만의 웹 서버를 세우기 시작했습니다.

1994–1998

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

SSL, mod_proxy, LVS가 등장하며 운영자들은 “보안은 여기서 끝내고, 트래픽은 여기서 갈라요”라며 웹 서버와 애플리케이션 서버를 분리했습니다.

1997–1999

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

Servlet 규칙과 Tomcat 컨테이너가 “요청은 내가 받아 줄게, 세션은 내가 기억할게”라며 동적 웹의 토대를 닦았습니다.

2003

“EJB 말고도 길이 있다”

Spring 1.0이 “Plain Java로도 트랜잭션 돌릴 수 있어요”라며 경량 프레임워크 시대를 열었습니다.

2005

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

Memcached가 “세션과 캐시는 밖에 둬요”라며 여러 대의 WAS를 묶을 수 있는 확장 전략을 제시했습니다.

2011–2015

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

Nginx, Spring Boot, Lambda, Ingress가 “가벼운 프록시, 자동 설정, 서버 없는 실행, 클러스터 관문”을 선언하며 운영 방식을 새로 썼습니다.

참고 자료

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