서버 (Server)
A computer program or device that provides a functionality for other programs or devices, called clients.
— RFC 네트워크 표준 아카이브 가이드라인에서 선언한, 요청 노드의 교신을 상시 대기 수용하여 승인하고 리소스를 전송해 주는 주권 시스템 정의
지구촌 수억 명의 데이터 보관과 알고리즘 연산을 24시간 내내 묵묵히 통제 지배하는 보이지 않는 그림자 지휘소이자, 전산실 인프라 야근 엔지니어들의 영혼 탈수 장치. 평소에는 얌전히 데이터 수집만 잘하다가, 크리스마스 특수나 대형 마케팅 당일 새벽에 뜬금없이 침묵으로 프리징 뻗어버려 전 사원 긴급 대피령을 선사하는 유리 멘탈 폭탄(...)
1. 개요
네트워크 구조 내에서 서비스를 제공하는 주체이자 클라이언트의 호출에 응답을 쏘아주는 상시 가동 대기 시스템. 비즈니스의 핵심 논리와 철저한 보안 장치, 대용량 데이터베이스 연산을 물밑에서 전담하는 영혼의 최전선이자 백엔드(Backend) 진영의 든든한 본진 콘솔이다.
2. 24시간 잠들지 않는 철저한 불침번 대기
서버의 근원적인 작동 철학은 '상시 대기(Always Listening)'에 있다. 클라이언트가 언제 기습적으로 밤늦은 새벽에 결제 패킷을 던질지 모르기 때문에, 서버 소프트웨어(Nginx, Tomcat, Express 등)는 지정된 네트워크 엔드포인트 수문장 주소(포트)를 꽉 움켜쥔 채, 무한 루프 감시망을 돌리며 눈을 번뜩이고 대기한다. 신호 패킷이 문을 두드리는 순간, 서버는 내부 스레드(process-and-thread) 일꾼을 깨워 요청을 정밀 분석하고, 데이터베이스에서 보안 규칙 준수 여부를 확인해 가공한 뒤 다시 안전하게 회신을 전송하며 문을 닫는다.
3. 물리 서버(Bare-Metal)에서 클라우드 가상 서버(Cloud VM)까지
과거 고전 IT 시대의 서버 구축은 전산실 철제 랙 캐비닛 안에 수천만 원짜리 무겁고 거대한 IBM 물리 컴퓨터 하드웨어를 직접 손수 노가다 안착시키고 전원 선과 랜선을 한 땀 한 땀 조립하는 쌩노가다 형상 공정이었다. 하지만 현대 클라우드 컴퓨팅(cloud) 혁명을 맞이하면서 이 거대하고 시끄러운 공정은 완전히 화면 속 API 마법으로 변모했다. 이제 아키텍트들은 직접 쇠 덩어리를 만지지 않고, 아마존 웹서비스(AWS) 마우스 대시보드를 몇 번 딸칵 클릭하거나 빌드 스크립트 한 줄을 실행하는 것만으로, 단 10초 만에 가상의 초고성능 클라우드 서버 인스턴스(EC2 등) 100대를 태평양 반대편 클라우드 전산실에 가볍게 순간 탄생시켜 가동하는 호사스러운 아키텍처 세계관을 달리고 있다.1
4. 관련 밈 및 드립
4.1. 서버 터졌다! 긴급 싸이렌 드립
실제 대형 이벤트가 터지거나 블랙 프라이데이 폭탄 트래픽이 몰렸을 때, 감당 용량을 초과한 백엔드 서버 컴퓨터가 메모리 부족(OOM)이나 CPU 99도 온도 초과로 비명을 지르며 강제 자폭 중단되는 런타임 참사 상태를 말한다. 실무 엔지니어들 사이에서는 '서버 터졌다!'는 카톡 경보를 받는 순간 주말 치맥 파티나 데이트를 즉각 정지당하고, 팬티 바람(?)으로 컴퓨터를 켜서 밤샘 서버 소생 수리 마법을 가동하는 눈물겨운 애환의 극치 밈이다.
5. 여담
- 서버용 운영체제는 리눅스가 99%: 일반 사용자용 바탕화면은 윈도우나 맥 OS가 점령하고 있지만, 전 세계를 지배하는 클라우드 인프라 백엔드 서버 컴퓨터의 99% 이상은 마우스 화면이 없는 새까만 문자 터미널창 기반의 리눅스(Linux) OS가 틀어쥐고 지배하고 있다. 가볍고, 미치도록 안정적이며, 공짜 라이선스이기 때문이다.
- 서버실의 가혹한 온도 통제: 대형 기업들이 서버 수만 대를 꽂아두는 데이터센터(IDC)는 엄청난 발열을 내뿜는 거대한 불가마 공장과 같다. 이 때문에 서버실은 컴퓨터 하드웨어가 열로 뻗는 참사를 막기 위해 1년 365일 내내 냉동고 버금가는 에어컨 통풍 시스템을 24시간 가동하여 엄격한 저온 격리 구역으로 통제 유지된다.
- 웹 서버(WS)와 웹 애플리케이션 서버(WAS)의 경계: 주니어 면접의 단골 이론 폭사 질문이다. 가벼운 정적 자원(HTML 이미지 등)만 초고속으로 샤샤샥 서빙해 배포해 주는 수문장 서버가 Web Server(Nginx, Apache)이며, 백엔드 내부의 진짜 복잡한 자바나 파이썬 데이터베이스 연산 알고리즘을 땀 흘려 가동하는 진짜 알맹이 서버 연산 장치가 Web Application Server(Tomcat 등)에 해당한다.
6. 관련 문서
각주
-
실제로 이 유동적인 가상 서버 기술 덕분에 현대적인 대형 서비스 앱들은, 밤늦은 새벽 시간대에는 서버 가동 대수를 2대로 줄여 전기세를 아끼고, 아침 출근 시간대에 트래픽이 폭주하면 자동으로 서버를 50대로 실시간 증설해 주는 '오토 스케일링(Auto Scaling)' 기적의 마법을 가동해 인프라 가성비를 끝장내고 있다. ↩
이 문서를 가리키는 문서
- AJAX
- Apache
- API
- API Key
- 비동기 자바스크립트
- Backend
- 버그
- 빌드
- C언어
- CDN (콘텐츠 전송 네트워크)
- CI/CD
- 클라이언트 (Client)
- 클라우드 컴퓨팅 (Cloud Computing)
- 컴포넌트
- CORS
- 데이터베이스 마이그레이션
- 배포
- 개발 환경
- DNS
- 전자정부 프레임워크
- Git
- GitHub
- Go
- GraphQL
- gRPC
- 호스팅
- HTTP
- IP 주소
- Java
- JWT
- 리눅스 재단
- 로드 밸런서 (Load Balancer)
- macOS
- 메시지 브로커
- Module Bundler
- MongoDB
- MVC 패턴 (Architectural Pattern)
- Next.js
- Nginx
- OAuth
- OpenAI
- 프로그램
- PWA (프로그레시브 웹 앱)
- Python
- RDBMS
- Redis
- Redux
- 저장소 (Repository)
- 요청과 응답
- REST API
- Server-Sent Events (SSE)
- 세션 인증 (Session Authentication)
- 셸
- SOP (단일 출처 정책)
- SPA
- Spring Boot
- SSL/TLS
- 상태
- 썬 마이크로시스템즈
- 터미널
- 토큰
- URL
- WAS (웹 애플리케이션 서버)
- World Wide Web
- 웹 개발자
- 웹소켓 (WebSocket)
- Microsoft Windows