본문 바로가기
창고 3/[Dev] My Readme

웹 기초 3

by 부엉이의 정보 창고 2021. 12. 22.
728x90

웹 아키텍처

웹 아키텍처는 크게 클라이언트 - 웹 서버 - 데이터베이스의 형태로 간단화시킬 수 있다. 이러한 웹 아키텍처는 아래와 같은 방식으로 동작한다.

  1. 웹 사이트 접속 후 URL 입력
  2. 도메인 -> IP 변환 작업(데이터 전송 전 필요 작업)
  3. HTTP 요청 메시지 작성 후 서버에게 전달(3 way handshake 선행)
  4. 요청 메시지에 따라 데이터베이스 연결 및 질의
  5. HTTP 응답 메시지 작성 후 클라이언트에게 전달
  6. HTTP 응답 메시지를 웹 브라우저가 해석 후 유저에게 출력

웹 사이트 구조 분석

일반적으로 웹 사이트와 서버는 1) HTML form 태그 2) javascript(Ajax, 페이지 비동기화)를 활용해 통신을 한다. Ajax는 백엔드의 부하를 낮추는 장점이 있으므로 트래픽이 많이 발생하는 웹사이트의 경우 Ajax를 많이 활용한다.

페이지 동기화 방식의 경우 사용자가 버튼을 클릭 후 새로운 데이터를 불러와야 할 때 javascript뿐만이 아니라 html, css까지 서버 측에서 새롭게 불러오게 되므로 Ajax보다 백엔드에 부하를 많이 주는 단점이 존재한다.

웹 디렉토리(웹 루트)

웹 서버는 파일 시스템과 데이터베이스를 참고하여 클라이언트가 URL을 통해 요청한 자원을 응답하게 된다. 웹 서버 설정 파일은 웹 서버 안에 있는 웹 루트를 통해 자원의 경로들을 설정하는 역할을 한다. 이 설정 파일은 파일 다운로드/업로드 상의 취약점을 공격할 때 자주 쓰이는 패턴이다.

 

  • e.g 웹 서버 아파치의 설정 파일 - httpd.conf

 

웹 서버와 웹 애플리케이션 서버

사용자 측에서 정적 자원(e.g logo.png)을 요청할 경우 웹 서버 측에서 처리 후 응답 메시지를 보낸다. 반면 동적 자원(e.g 파일명.do)을 요청할 경우 웹 서버->웹 어플리케이션 서버-> (필요에 따라)데이터베이스를 거쳐 처리 후 응답 메시지를 보낸다.

대부분의 회사에서는 가격, 유지 보수 측면의 장점으로 인해 웹서버와 웹 애플리케이션 서버를 페어로 사용한다. 웹서버는 정적 자원 처리에 최적화가 되어 있고, 웹 애플리케이션 서버는 동적 자원 처리에 최적화가 되어 있기 때문이다.

웹서버와 웹애플리케이션서버

웹 프록시 서버

클라이언트와 서버 사이에서 중계 역할을 하는 서버. 클라이언트 측에서는 보안 검증 절차가 구현되어 있다고 하더라도 개발자 도구와 웹 프록시 도구를 통해 데이터의 값을 변조할 수 있기 때문에 서버 측 보안 검증 로직을 반드시 구현해야 한다.

추천 도서 목록

  • 그림으로 배우는 HTTP & Network basic
  • 성공과 실패를 결정하는 1% 네트워크 원리
728x90

'창고 3 > [Dev] My Readme' 카테고리의 다른 글

운영체제 기초 1  (0) 2021.12.24
하드웨어 기초 1  (0) 2021.12.23
웹 기초 2  (0) 2021.12.21
웹 기초 1  (0) 2021.12.20
디자인 패턴 기초 1  (0) 2021.12.17

댓글


loading