간단한 웹 어플리케이션 서버를 만들어 SNS 서비스를 만들어 볼 것이다.
WEB SERVER
- 1, 6번 과정으로 클라이언트로 부터 HTTP 요청을 받고 HTTP 응답으로 HTML와 같은 웹페이지를 그대로 반환하는 서버를 말한다.
- 이 때 웹페이지는 그림, CSS, JS를 포함하는데, 이를 정적파일이라고 한다.
- 정적 파일을 있는 그대로 반환하는 서버이므로, 정적 웹서버라고도 한다.
- nginx, Apache Web Server 등이 있다.
WAS(Web Application Server)
- 웹 어플리케이션 서버도 웹 페이지를 전달하는 역할을 수행한다.
- 그러나 동적인 컨텐츠를 생성하거나 업데이트하는 비즈니스 로직을 수행할 수 있다.
- 동적인 요소를 생성하는 서버 사이드 코드를 구현할 수 있는 프로그래밍 런타임 또는 소프트웨어 엔진을 제공한다.
- WAS의 클라이언트는 애플리케이션 그 자체가 될 수도 있고, 웹 서버나 다른 웹 애플리케이션 서버 또는 데이터베이스 서버가 될 수도 있다. 이에 따라 다양한 형태의 아키텍처가 생성될 수 있다.
DB(Data Base Server)
- 사용자 정보나 사진, 동영상 등에 대한 정보를 담고 있는 서버이다.
- MySQL, MongoDB, Oracle 등이 있다.
프록시 서버
- 리소스를 요청하는 클라이언트와 응답으로 리소스를 전달하는 서버 사이에 중계 역할을 하는 서버이다.
- 보안, 캐시, 로드밸런싱 등을 수행한다.
빌드
- 빌드란 프로그램의 소스 코드를 독립적인 아티팩트(artifact)로 변환하는 과정이다.
- 때로는 그 아티팩트 자체로도 실행이 가능하지만, 대체로 런타임(소프트웨어 실행 환경)이 필요한 경우가 많다.
- JS의 경우 node.js라는 빌드 도구를 사용한다. node.js에 대해서는 추가적인 학습이 필요하다. 잘모르겠다..
프레임워크
- 프레임워크는 소프트웨어 개발을 쉽게 만들어주기 위해 필요한 도구, 규약의 집합체이다.
- 프레임워크 없이 밑바닥부터 모든 코드를 작성하는 것도 가능하지만, 프레임워크를 통해 만들고자 하는 소프트웨어의 기본 골격이 제공되기에, 현대의 소프트웨어 개발에서는 많은 부분을 프레임워크에 의존한다.
- JS를 사용하는 백엔드 웹 애플리케이션 개발용 프레임워크에는 Express가 있다.
- JS를 사용하는 프론트엔드 웹 애플리케이션 개발용 프레임워크에는 Vue.js, Svelte 등이 있다.