그동안 개발을 하면서 주어진 기능 구현에만 급급했었다.
코드가 어떻게 실행되고, 어떤 구조 위에서 돌아가는지 깊이 생각해본 적이 없었는데
유투브 원투코딩 채널에 백엔드의 가장 기본이 되는 핵심 요소에 대한 영상이 있길래 보면서 정리해봤다.
백엔드 개발을 위해 꼭 알아야 할 전체 구성
[Web Server, WAS, Database]
1. Web Server
- 문제 상황: HTML 문서를 어디서든 볼 수 있게 공유할 수 있도록 만들고 싶음
- 결과: 정적 파일을 공유할 수 있게 해주는 웹 서버 등장
웹 서버가 하는 일
웹 서버는 정적 파일(HTML, CSS, JavaScript, 이미지 등)을 클라이언트에게 전달하는 역할을 한다.
사용자가 URL에 접속하면 서버에 저장된 파일을 그대로 내려주는 방식이다. 별도의 연산이나 로직 처리 없이, 요청받은 파일을 찾아서 응답한다.
주요 웹 서버
- Nginx: 가볍고 빠른 성능, 요즘 가장 많이 사용됨
- Apache: 역사가 오래되고 모듈이 풍부함
- Microsoft IIS: Windows 환경에 최적화
- Caddy: HTTPS 자동 설정이 편리함
→ 정적 파일을 제공하는 기본 기능에 매우 충실, 고도로 최적화 됨
2. Web Application Server(WAS)
- 문제 상황: 웹이 대중화되면서 정적 파일 공유를 넘어서 다양한 기능이 요구됨
ex. 방문자 수 표기 / 사용자들의 글 작성 / 사용자마다 다른 화면 표출 등..
- 결과: 동적인 웹 페이지를 생성하는 WAS 등장
WAS의 역할
WAS는 요청을 받아 프로그램을 실행하고, 그 결과를 동적으로 생성해서 응답한다.
서버가 단순히 파일을 찾아 전달하는 게 아니라, 로직을 처리하고 연산을 수행하기 시작!
언어별 WAS
- Java: Tomcat, Jetty
- Python: Gunicorn, Uvicorn
- JavaScript: Node.js
- .NET: Microsoft IIS
💡 웹 서버 vs WAS
웹 서버: 항상 동일한 정적 페이지 반환WAS: 요청 내용에 따라 다른 동적 페이지 반환
WAS와 백엔드 프레임워크
Spring, Django, Express 같은 프레임워크와 WAS가 같은 걸까?
WAS != Backend Framework
두 개는 완전히 다른 개념!
- 백엔드 프레임워크 (Spring, Django, Express 등)
개발자가 애플리케이션을 쉽게 만들 수 있도록 미리 준비된 구조와 도구 모음
자동차를 만들기 위한 설계도와 부품 세트 같은 것 - WAS
프레임워크로 작성한 코드를 실제로 실행시켜주는 환경
자동차가 움직이게 하는 엔진
프레임워크로 코드를 아무리 잘 짜도, WAS가 없으면 실행할 수 없다.
💡 요즘 프레임워크들은 내장 서버(embedded server)가 포함되어 있어서, 개발할 때는 따로 WAS를 설치하지 않아도 된다. 하지만 실제 서비스 환경에서는 성능과 안정성을 위해 별도의 WAS를 사용하는 경우가 많다.
3. Database(DB)
- 문제 상황: 서버를 껐다 키면 이전 데이터들이 다 사라짐
- 결과: 데이터를 안전하고 영구적으로 저장해주는 Database 등장
데이터베이스가 해결하는 문제
- 동시성: 여러 사용자가 동시에 접근해도 데이터 충돌 없이 처리
- 무결성: 데이터의 정확성과 일관성을 보장
- 확장성: 데이터가 많아져도 성능 유지
- 성능: 빠른 검색과 조회를 위한 최적화
⚡️이런 문제들은 단순히 파일로 저장하는 방식으로는 절대 해결 불가 !
주요 데이터베이스
- 관계형 DB: MySQL, PostgreSQL, Oracle, MS SQL Server
- NoSQL: MongoDB, Redis, Cassandra, DynamoDB
[정리]
백엔드의 역사는 문제 해결 과정으로부터 시작됨!
문제 해결의 역사
- 처음에는 정적인 문서를 공유하는 것만 필요했다 → Web Server
- 웹이 발전하면서 동적인 콘텐츠 생성이 필요해졌다 → WAS
- 데이터를 잃지 않기 위해 영구 저장소가 필요했다 → Database
⭐️ 백엔드 개발의 핵심 = 역할과 책임의 분리
- 웹 서버: 정적 파일을 빠르고 안정적으로 전달
- WAS: 요청에 따라 동적인 결과를 실시간으로 생성
- 데이터베이스: 데이터를 영구적이고 안전하게 보관
출처 : 유튜브 원투코딩 https://youtu.be/M8E6vYAIuzQ?si=dfWWOsf9zcmGJ6dh