일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- AI Tech 4기
- 레벨2
- 구현
- 2021 Dev-matching 웹 백엔드 개발자
- P Stage
- 대회
- cs50
- 백준
- 백엔드
- 장고
- sts
- AI Tech
- boostcourse
- 프로그래머스
- BOJ
- 4기
- 웹 프로그래밍
- Naver boostcourse
- 부스트캠프
- Naver boostcamp
- QNA 봇
- 풀스택
- 네이버
- 서버
- 프로그래밍
- Django
- Customer service 구현
- 서블릿
- 웹
- 파이썬
- Today
- Total
daniel7481의 개발일지
[웹 프로그래밍(풀스택)]Web 개발의 이해- FE/BE(4) 본문
6) 웹서버
웹 서버란?
-통산 소프트웨어를 말하지만 소프트웨어가 동작하는 컴퓨터를 말한다.
-가장 중요한 기능은 클라(웹 브라우저, 웹 크롤러)가 요청하는 HTML 문서나 각종 리소스를 전달하는 것
-웹 브라우저나 웹 크롤러가 요청하는 리소스는 컴퓨터에 저장되어 있는 정적(static) 데이터(이미지, HTML 파일, CSS 파일, JavaScript파일 같이 컴퓨터에 저장되어 있는 파일)나 동적인 결과(웹 서버에 의해 실행되는 프로그램을 통해서 만들어진 결과물)가 될 수 있음
웹 크롤러: 검색 사이트에서 다른 웹사이트 정보를 읽어갈 때 사용하는 소프트웨어
웹 브라우저와 웹 서버는 보통 HTTP를 통해 통신한다. URL 주소가 HTTP(인터넷 상 데이터를 주고 받기 위한 프로토콜(규약))로 시작되는 이용은 HTTP를 사용한다는 것.
마스터님 비유: 창 밖을 보면 차와 사람들이 보인다. 차와 사람들은 빨간 불, 파란 불에 맞게 이동하거나 멈춘다. 이런 규칙이 HTTP랑 같은 프로토콜이다.
네이버를 띄우게 되면 다음과 같은 일이 일어난다.
- 웹 브라우저는 www.naver.com 이라는 웹서버에게서 접속한 후 HTML 문서를 요청하게 된다.
- 웹 서버는 사용자가 요청한 html 문서를 웹 브라우저에게 전달한다.
- 웹 브라우저는 받은 문서를 읽어들인 후 해석한다.
- HTML 문서를 알맞게 보여주기 위해 필요한 이미지, CSS, JS 같은 리소스에 대해서 URL을 추출한 후, 웹 서버에게 동시에 여러개의 리소를 요청함.
- 웹 서버는 여러 요청을 받아들인 후 그 결과를 브라우저에게 전송
- 아까 해석한 HTML 문서와 여러 개 응답을 하나로 합쳐서 화면에 디스플레이(이러한 과정이 랜더링)
웹 서버 소프트웨어의 종류
- 가장 많이 사용하는 웹 서버는 Apache, Nginx, Microsoft, Google 웹서버가 있다
- 아파치 웹 서버는 오픈소스 소프트웨어이며, 대부분 운영체제에서 사용 가능. Nginx는 차세대 웹서버로 보이며 더 적은 자원으로 더 빠르게 데이터를 서비스 하는것을 목표로 만든 서버
- 아파치가 현재 단연 1등이지만, nginx의 성장세가 도드라진다.
7) WAS(Web Application Server)
클라이언트/서버 구조
-클라이언트는 서비스를 제공하는 서버에게 정보를 요청하여 응답 받은 결과를 사용한다.
DBMS
-다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어
-대표적으로 MySQL, Oracle, MariaDB 등이 있다.
-보통 서버 형태로 존재하기 때문에 DBMS에 접속해서 동작하는 클라이언트 프로그램이 많이 만들어짐. 이러면 클라이언트 로직이 많아지고 클라 프로그램이 커진다. 프로그램 로직이 변경되면 클라가 매번 배포되어야 했다. 또한 보안이 나쁘다.
미들웨어
-클라와 DBMS 사이에 다른 서버를 두는 것. 클라는 미드웨어(서버)에 요청을 보낸다. 미드웨어는 데이터가 필요하면 DBMS에 요청한다. 클라이언트 로직을 변경하면 미들웨어만 변경하면 된다는 장점이 생겼다.
WAS
-웹이 발달함에 따라 웹에서 데이터를 입력하고 조회하는 등의 동적인 기능 요구하게 됨. 웹서버에서 프로그래밍 기능이 들어가는 방식을 CGI라고 하였고, 단순한 프로그래밍에서는 문제가 없었다. 그러나 더 복잡해짐에 따라 DBMS와 연관된 기능들이 많이 생겼고, 브라우저(클라이언트)랑 DBMS 사이에서 동작하는 미들웨어가 필요하게 됨에 따라 WAS가 생김. WAS 기능
1. 프로그램 실행 환경과 데이터베이스 접속 기능을 제공한다.
2. 여러 개의 트랜잭션(업무를 설명하는 단위)을 관리한다.
3. 업무를 처리하는 비즈니스 로직을 실행한다.
WAS는 웹 서버의 기능도 기본적으로 제공한다.(웹서버 따로, WAS 따로 설치할 필요는 없다.)
초창기에는 WAS의 웹 서버 기능이 떨어졌지만 현재는 성능이 비슷하다. 그러나 현업에서는 다음과 같은 구조로 구성한다.
[출처: Naver Boostcourse]
웹 서버는 보통 정적인 콘텐츠를 웹 브라우저에게 전송하는 역활을 하고, WAS는 주로 동적인 콘텐츠(프로그램이 동작하면서 얻은 결과)를 웹 브라우저에게 전송한다. 그럼에도 웹 서버를 설치하는 이유는 웹 서버가 WAS보다 훨씬 간단한 구조로 만들어져 있기 때문이다. 사람들이 많이 접속하는 대용량 웹 애플리케이션일 경우 서버의 수가 여러 개의 경우가 있다. WAS에서 프로그램이 오작동해서 WAS 자체가 고장하는 경우도 있다. 이 때 WAS 자체를 재시작해야 하는데, 이 때 WAS에 선행하는 웹 서버에서 먼저 해당 WAS를 이용하지 못하도록 하면 이용자는 WAS에 문제가 발생한지도 모를 것이다(장애 극복 기능).
'Naver Boostcourse' 카테고리의 다른 글
[웹 프로그래밍(풀스택)]HTML-FE (0) | 2021.12.08 |
---|---|
[웹 프로그래밍(풀스택)]Web 개발의 이해(Summary) (0) | 2021.12.08 |
[웹 프로그래밍(풀스택)] Web 개발의 이해- FE/BE(3) (0) | 2021.12.07 |
[웹 프로그래밍(풀스택)]Web 개발의 이해(2) (0) | 2021.12.06 |
[웹 프로그래밍(풀스택)] Web 개발의 이해(1) (0) | 2021.12.06 |