백엔드 개발을 하다 보면 "서버"라는 단어가 여러 방식으로 쓰이면서 헷갈릴 때가 많다.
Web server, WAS, API server, Rest API, Restful API...
이게 다 다른 거고, 또 겹치기도 하는데 어디서부터 어디까지가 뭔지 정리돼 있지 않으면 개념이 뒤죽박죽되기 쉽다.
이번 글에서는 이 용어들을 단계적으로 비교해가면서 한 번에 정리해보자.
- 인터넷 망 안에서 정보를 공유, 검색할 수 있게 하는 시스템
- 인터넷에 연결된 사용자들은 서로 정보를 공유할 수 있다.
- 웹을 지탱하고 구성하는 아래 세 기술
- HTTP(통신 규칙)
- URI or URL(주소)
- HTML(내용)
네트워크를 통해 클라이언트에게 정보나 서비스를 제공하는 컴퓨터 시스템
Web Server는 말 그대로 웹 요청을 처리하는 서버, WAS는 웹 애플리케이션을 처리하는 서버다.
정적인 리소스(html, css, js, 이미지 등)를 처리하는 서버
동적인 요청을 처리한다.
Web Server는 "단순한 정적파일 배달부"
WAS는 "로직이 들어간 동적인 작업 처리"
API 서버는 보통 WAS 안에 포함된다.
다시 말하면, API 서버도 결국은 WAS의 역할 중 하나라는 것이다.
API Server는 데이터를 주고받는 데 집중된 서버이다.
WAS는 주로 HTML을 렌더링해서 돌려주기도 한다. (SSR - 서버 사이드 렌더링)
API 서버는 JSON만 돌려준다. (CSR - 프론트에서 렌더링)
API 서버는 여러 종류의 API를 제공할 수 있고,
그중에서도 "Rest API"는 특정한 원칙을 따른 API 방식이다.
즉, API 서버 안에 Rest API가 있다.
REST 아키텍처 스타일을 따르는 API 방식
Rest API는 "이런 식으로 만들면 좋다"는 약속이고,
Restful API는 그 약속을 잘 지킨 API다.
즉, Rest API 안에 Restful API가 있다.
좀 더 꼼꼼하게 더욱 더 Rest한 API를 말한다.
ex)
- 자원의 품사 : 명사, 일부 동사를 쓰기도 함
- 동작의 품사 : 동사
- GET /getAllUsers <- Restful API X
- GET /users (명사) <- Restful API O
처음에는 다 비슷비슷해 보여도, 하나씩 뜯어보면 역할과 개념이 다르다.
그리고 이걸 제대로 알아야 백엔드 구조를 설계하거나, API를 만들 때 기준이 생긴다.