본문 바로가기
TIL (Today I Learned)/컴퓨터 시스템(CS)

[CS] 네트워크 기초, HTTP #7

by 둥굴프 2022. 12. 11.
이 문서는 유튜브 '널널한 개발자 TV'님의 강의를 토대로 작성되었습니다.

 

#1 웹 서비스 구조

 

Web 탄생 배경

 

Web 탄생 이전 인터넷 상 데이터 = 문자 ~ TEXT파일

 

티모시 버너스 리

 

HTML = Text + Link

HTTP = HTML + 인터넷

Web = HTML + HTTP

 

문서를 다루는 모든 프로그램은 Data + 제어 + 인터페이스 3요소로 구성되어 있다.

 

 

#2 웹 서비스 3대 요소

 

3대 요소 : 자료구조(데이터) + UI + 제어체계

유지보수 편의성을 극대화 하기 위해서 위 요소를 모듈화한다.

 

 

Web Client (Browser) - internet - Web Server

초창기 웹서버 HTTP는 TCP/IP 통신을 전제로 했다.

 

HTTP의 중요한 특징 : Stateless

인터넷 '연결'에 가장 중요한 것은 '상태'

HTTP는 상태개념이 없다.

훗날 큰 문제를 야기한다.

 

초기 브라우저에 Client가 URL을 입력한 상황 :

0. URL은 DNS에서 IP를 탐색하여 해당 주소로 전송된다.

1. Client의 URL을 근거로 http.request를 요청한다.

http.request.method == GET / GET이라는 방법론으로 리소스 요청

웹 클라이언트 입장에서 GET은 정보를 읽는 Read이다.

2. 그에 따른 http.response를 응답받는다.

HTML 문서를 받는다. HTML은 태그로 구성되어 있다.

3. 브라우저가 HTML을 받으면 하는 일

(1) 구문분석 (Parsing) : 자료구조(비선형 트리)를 생성한다. DOM

(2) 렌더링 : 렌더링 엔진이 태그를 화면에 표현한다.

" 초기의 브라우저란? 원격지 문서뷰어 "

 

 

자료구조 : HTML

UI : CSS, 사진

오늘날의 브라우저 response는 HTML문서만 받는 것이 아니다.

HTML > CSS > 사진>JS 순으로 데이터를 받는다.

 

HTML, CSS, 사진은 서버 저장장치에 '저장'되어있다.

이를 '정적' 이라고 표현한다.

 

로그인을 할 때 :

1. 로그인 클릭 - http.request.method == POST 요청

입력한 로그인 데이터가 같이 전송된다.

2. 웹 서버는 송수신 담당이다.

해당 데이터에대한 연산은 처리주체(연산)가 한다.

웹 서버는 POST데이터를 처리주체에게 넘긴다.

이전에 GET 메소드는 단방향 작용

POST 메소드는 양방향 상호 작용

양방향 상호작용에서는 '문맥'이 나온다.

문맥은 상태를 말하고, 상태는 전이된다.

Stateless한 HTTP는 상태 전이를 기억(기록)할 방법이 없다.

기억(기록)을 구현하기 위해서 서버는 Database(자료구조)를 사용한다.

처리주체는 Database를 SQL를 사용하여 통제한다.

3. 웹 서버의 처리주체가 Database에 필요한 데이터를 요청한다.

해당 로그인 데이터를 받았으면, 혹은 받지 못했다면 ~

이에 해당하는 HTML을 생성하여 응답한다.

이를 '동적'이라고 표현한다.

 

 

오늘날의 브라우저가 HTML을 받으면 하는 일

(1) 구문분석 (Parsing) : 자료구조(비선형 트리)를 생성한다. DOM

(2) 렌더링 : 렌더링 엔진이 태그를 화면에 표현한다.

(3) 연산(S/W) : 연산을 위한 엔진을 브라우저에 넣는다.

Mocha > Live > JAVA Script js는 클라이언트 브라우저에서 실행된다.

 

위에서 서버는 기억을 Database로 구현했다.

클라이언트는 어떻게 구현했을까?

Cookie로 구현된다.

 

#3 WAS, JVM 그리고 RESTful API

 

1. WAS와 JVM

WAS : Web server의 처리(연산)주체

WAS는 리소스를 송수신하는 웹서버와 자료구조인 Databse와 연결되어 있다.

웹서버는 정적 데이터(눈에 보이는 데이터)를 다룬다 View

Database는 자료구조를 다룬다 Model

WAS는 Logic을 다룬다 Service

Client가 URL을 통해서 WAS에 Logic을 요청한다 Control

위 요소를 가지고 비지니스 모델을 구성한 것이 MVC 모델이다.

 

WAS는 그러면 무엇인가?

JAVA를 예로 들어보자.

JAVA는 플랫폼 의존적이다.

플랫폼이라 하는 것은 운영체제와 CPU를 의미한다.

플랫폼에 상관없이 작동하기 위해서 User Application 수준에서 가상 CPU를 구현한 것이 JVM(Java Virtual Machine)이다.

JVM이 작동하기 위한 기계어 : Java byte code

소프트웨어(JSP,PHP,ASP ...)를 위한 소프트웨어(JVM이 작동하기 위한 모듈 집합)를 미들웨어Middleware라고 한다.

이러한 미들웨어의 하나로 WAS가 있다.

Framework에 의해서 미들웨어가 개발되도록 강제한다. Spring boot

왜? 초보자 실수를 줄이고, 효율적으로 운영되도록 한다.

 

이를 통해서  Framework를 통해서 JAVA언어 뿐만 아니라 Script언어로 백엔드 개발을 할 수 있다.

 

Web Server - WAS - Database : 3-Tier Web Solution(Service)

웹 서비스의 성능은 DB응답속도, WAS처리 연산속도에 영향받는다.

이 두가지를 모니터링 하는 시스템이 APM(Scouter APM, 제니퍼 ...)이다.

클라이언트 - 서버 통신에서의 성능은 응답속도(Network 속도)가 성능과 관련된다.

DB 성능을 높이기 위해서는 퍼포먼스 튜닝을 한다.

 

Web server는 Client와 처음 만나기 때문에 Front-end Server라고 한다.

Database는 가장 내부에 위치하기 때문에 Back-end Server라고 한다.

 

 

2. RESTful API

요즘의 브라우저 요청, 응답은 초기의 메소드와 달라졌다.

1. 요즘의 reponse는 HTML을 받는것이 아니라 DATA만 받는다.

해당 데이터는 JSON 형태이다.

오늘날의 UI는 매우 다양해졌다.

애플 - 안드로이드 - 테블릿 - PC등등

HTML은 환경의 특수성에 굉장히 영향을 많이 받는다.

2. 클라이언트 PC가 데이터만 받고 스스로 HTML을 생성한다.

이 때 사용되는 언어가 JS이며, JS를 위한 프레임워크가 존재한다.

이 프레임워크가 React.js , Vue.js ...

 

서버 입장에서의 request는 Data를 Create, Read, Update, Delete 해달라고 하는 것.

어떤 웹 시스템을 하나의 기능요소로 보고 CRUD의 기능을 제공한다.

 

클라이언트 입장에서는 JS에서 해당 기능을 단지 Call하면 된다.

이 때 CRUD를 호출하는 RESTful API가 탄생한다.

 

3. 보안

웹 서버와 인터넷 망이 연결될 때 웹 서버 앞에 3개의 요소가 필요하다.

1. IPS 침입 방지 시스템

2. SSL 암호화 처리 요소

3. WAF web application firewall

 

 

출처 : 널널한 개발자TV

 

 

 

 

 

 

긴 글 읽어주셔서 감사드립니다.

22.12.11

댓글