처음으로 백엔드로서 웹 프로젝트를 진행하게 됐다.
VM(Virtual Machine)에 접속하여 Nginx를 설치하라는데, 당최 이 친구가 뭘 하는지도 모른채 주구장창 설치만하다가 정말 많은 카오스를 맛봤다.
오피스아워를 통해 코치님으로부터 WAS(와스라고 읽는다)와 Web server의 개념을 접하게 되었다.
👉 참고영상: 10분 테코톡
Web server
웹 브라우저(클라이언트)로 부터 HTTP 요청을 받아 HTML 문서와 같은 정적 컨텐츠를 제공하는 프로그램
※ 정적 컨텐츠: 사용자가 달라지더라도 바뀌지 않는 컨텐츠 (ex) jpeg, html, css 등
WAS(Web Application Server)
DB조회나 다양한 로직처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 프로그램
※ 오피스아워 코치님 왈,
지금 프로젝트에서 WAS 노드, Web server는 Nginx라고 말씀해주셨다.
- WAS는 DB에 접근하고 비즈니스 접근에 최적화
- Web server는 http에 최적화, 웹에 최적화
그럼, WAS가 다해주는데 Web server가 굳이 왜 필요할까?
Web server를 같이 사용했을 때의 장점이 뚜렷하기 때문이다.
로드 밸런서로서의 역할이 확실하다.
여러 요청을 여러 WAS가 나누어서 처리할 수 있도록 배분 및 설정해준다.
로드밸런싱을 진행하다보면 특정 WAS에서 정상작동을 하지 않는 경우가 생긴다.
이때 Web server가 WAS에 주기적으로 http 요청을 보내며 서버의 상태를 체크한다.
이러한 기능을 Health check(헬스체크)라고 한다.
(ex) 특정 url 요청에 200 응답이 오는가?
Interval: 헬스 체크를 통해 서버 상태를 확인하는 요청을 날리는 주기(default: 5초)
Fails: 몇회 연속 실패하면 서버가 비정상이라고 인지(default: 1회)
Passes: 서버가 다시 복구되어 몇회 연속 성공하면 서버가 정상으로 인지(default: 1회)
리버스프록시를 통해 WAS(실제서버)를 외부에 노출시키지 않음으로써 보안성을 가져간다.
이외에도 Web server는 정말 많은 기능을 제공한다. (ex. Nginx)
그러니 필요에 따라 내가 원하는 기능을 선택하여 사용하면 된다.
백엔드에 발을 들이고나니 정말 많은 개념들에 익숙해져야함을 체감한다.
이번엔 Web server의 정말 간단한 개념들을 훑어봤으니 아래와 같은 개념들을 추가로 찾아가며 확장시켜나가야겠다.