본문 바로가기
강의/웹 프로그래밍(풀스택)

부스트코스 웹 프로그래밍(풀스택) - 1. 웹 프로그래밍 기초 - 6 강의 정리

by 리드민 2022. 3. 21.
반응형

[1] 강의

웹 프로그래밍(풀스택)

1. 웹 프로그래밍 기초

5) browser의 웹 개발-2

 

[2] 강의 정리

  웹 서버는 소프트웨어를 보통 말하지만, 웹 서버 소프트웨어가 동작하는 컴퓨터를 말하는 경우도 있다. 이번 학습에서는 웹 서버 소프트웨어에 대해서 알아보도록 하겠다. 웹 서버의 가장 중요한 기능은 보통 클라이언트가 요청하는 HTML 문서나 각종 리소스를 전달하는 것이다. 여기서 클라이언트란 보통 웹 브라우저를 이야기한다. 웹 브라우저 외에 웹 크롤러의 경우에도 웹 서버의 요청을 보낼 수 있다. 웹 브라우저나 웹 크롤러 모두 웹 서버에게 HTTP에 맞도록 리소스를 요청하게 되고 웹 서버는 요청한 리소스를 반환하게 된다. 만약에 리소스가 존재하지 않거나 요청한 리소스를 전송할 때 문제가 발생된다면 에러 메시지를 전송하게 된다.

  웹 브라우저나 웹 크롤러가 요청하는 리소스는 컴퓨터에 저장되어 있는 정적인 데이터거나 동적인 결과가 될 수 있다. 정적인 데이터란 보통 이미지, HTML 파일, CSS 파일, JavaScript 파일과 같이 컴퓨터에 저장되어 있는 파일들을 의미한다. 동적인 결과란 웹 서버에 의해서 실행되는 프로그램을 통해서 만들어진 결과물을 보통 이야기한다.

  웹 크롤러는 네이버나 구글 같은 검색 사이트에서 다른 웹사이트 정보를 읽어갈 때 사용하는 소프트웨어를 이야기한다. 클라이언트와 웹 서버 간에는 보통 HTTP를 통해서 통신을 하게 된다. URL 주소가 HTTP로 시작되는 이유는 HTTP를 사용한다는 것을 의미한다. HTTP는 Hypertext Transfer Protocol의 약어로 인터넷상의 데이터를 주고받기 위한 프로토콜을 이야기한다. 프로토콜은 규약이라는 의미를 가지고 있다. 여러분이 지금 강의를 듣고 있는 곳에 혹시 창문이 있나? 창문이 있다면 한번 봐라. 차도 사람도 신호등에 파란 불이 들어오면 갈 수 있고 빨간불에는 멈추는 등 다양한 규칙이 정해져 있다. 우리는 어렸을 때부터 이런 규칙을 아주 당연하게 그냥 사용했었다. 만약에 이런 규칙들이 없었다면 밖에 도로가 어떻게 될까? 클라이언트와 서버도 미리 정해놓은 규칙을 가지고 통신을 해야만 제대로 통신을 할 수 있다. 이렇게 서로 정해놓은 규칙들을 프로토콜이라고 이야기한다. 웹 브라우저로 네이버에 HTML 문서를 요청하는 과정을 통해서 웹 브라우저와 웹 서버 간에 어떤 통신이 일어나는지 알아보도록 하겠다. 먼저 웹 브라우저와 서버 간에 어떤 통신이 이루어지는지 보기 위해서 브라우저에서 이렇게 한번 해볼것이다.

  오른쪽 버튼을 클릭하고 검사라는 메뉴를 선택해보자. 그러면 오른쪽이나 아래쪽에 이렇게 생긴 창이 하나 더 마련이 될 것이다. 굉장히 여러가지 정보들을 볼 수가 있다. 그중에 네트워크라는 탭을 한번 클릭해본다. 이때 Network에 All이라는 메뉴가 선택되어 있으면 좋을거같다. 자, 이때 우리 네이버 페이지를 한번 보자. 다시 요청하게 하기 위해서 새로 고침 버튼을 한번 눌려본다. 뭔지는 모르겠지만 굉장히 많은 일들이 벌어진 것 같다. 무슨 일이 벌어졌는지 한번 살펴보자. 웹 브라우저는 www.naver.com 이라는 웹 서버에 접속을 했을 것이다. 해당 주소에서 기본으로 보이는 HTML 문서를 요청했다. 그러면 웹 서버는 사용자가 요청한 HTML 문서를 웹 브라우저에게 전달한다. 웹 브라우저는 웹 서버로부터 전송받은 HTML 문서를 읽어들인 후에 해석을 한다. HTML 문서를 알맞게 보여주기 위해서 필요한 이미지, CSS, JavaScript와 같은 이런 리소스들에 대해서 URL을 추출해낸다. 웹 서버에게 동시에 여러 개의 리소스를 요청하게 된다. 웹 서버는 동시에 요청한 여러 개의 요청을 받아들여서 그 결과를 브라우저에게 전송한다. 웹 브라우저는 아까 해석했던 HTML 문서와 그리고 읽어들인 여러 개의 응답을 하나로 합쳐서 그 결과를 화면에 보이게 하는 것이다. 지금 naver.com이 요청을 했을 때 해당 HTML이 응답이 들어왔을 것이다. 이때 보면 이 네이버 페이지에 확장자가 js, css, png인 굉장히 많은 내용이 들어있다. 이미지들도 많다. 이런 부분들을 다 한꺼번에 요청해서 가져와서 합쳐서 보여주는 이런 일을 한다고 생각하면 된다. 이렇게 하나로 합쳐서 보여주는 작업을 렌더링 한다고 이야기한다. 그래서 이렇게 요청을 받은 후에 한꺼번에 화면에 보여주는 걸 볼 수 있다.

  이때 이 하나하나씩을 보면 지금 저 페이지를 보여줄 때 필요한 PNG 파일을 이런 부분들이다. 한번 여기에서 Preview 이런 거 한번 눌려본다. 이런 이미지. 지금 저 화면을 하나 보여주기 위해서 굉장히 많은 이미지들, 여러 가지 데이터들,  이런 것들을 가져왔다. 이런 부분들을 확인해볼 수 있다. 웹 서버에 소프트웨어 종류는 여러 가지가 존재한다. 가장 많이 사용되고 있는 웹 서버는 Apache가 있을 수 있다. Nginx라든가 마이크로스프트, 구글 웹 서버 이런 서버들이 존재하고 있다. Apache 웹서는 Apache Software Foundation에서 개발하는 웹 서버로서 오픈소스 소프트웨어이다. 거의 대부분 운영체제에서 설치 및 사용이 가능하다. Nginx는 차세대 웹 서버로 불리고 있다. 더 적은 자원으로 더 빠르게 데이터를 서비스하는 것을 목적으로 만들어진 서버이다. Apache 웹 서버와 마찬가지로 오픈소스 소프트웨어이다.

  이렇게 netcraft라는 통계를 조사하는 사이트에서 찾아봤더니 2017년 기준으로 전 세계 웹 서버 시장 점유율을 이렇다. Apache 서버가 당연 1등이다. 약간 눈여겨볼 내용은 Nginx 부분이다. 우리 초록색으로 표시되어 있는 부분이다. 성장세를 잘 보면 2007년 이후부터 굉장히 가파르게 성장곡선을 보이고 있는 것을 볼 수 있다. 사용량이 계속 늘어나고 있다는 뜻이다. 이렇게 이번 강의에서는 웹 서버가 무엇인지 웹 서버의 종류는 어떤 것들이 있는지 웹 서버가 어떤 일을 진행하는지 이러한 부분들에 대해서 살펴보겠다.

반응형