[TIL] 3장 3.3 웹 데이터 흐름

ki hyun Lee·2022년 5월 24일
0

TIL

목록 보기
15/16

TIL (Today I Learned)

2022.05.24

오늘 읽은 범위

3장. 3계층형 시스템을 살펴보자: 3.3 웹 데이터 흐름

웹 데이터의 흐름

클라이언트 PC부터 웹 서버까지

1. 웹 브라우저가 요청을 한다

2. 이름 해석을 한다.

인터넷상의 주소는 IP라는 숫자로 표현되 있는데 이러한 숫자는 읽기도 기억하기도 매우 불편하다 따라서 읽기도 쉽고 기억하기도 편한 URL과 IP 주소를 매칭시켜서 사용하는데 이때 IP 주소를 찾아내는 과정이 이름 해석이다. 더 자세한 내용은 6장에서 다룬다고 한다.

3. 웹 서버가 요청을 받는다

❗️ 아파치에서는 기본적으로 부모 프로세스와 자식 프로세스로 나누어 처리를 분담하고 있다. 설정을 통해 다양한 처리 방식을 선정할 수 있지만, 기본적으로는 자식 프로세스가 HTTP 요청을 접수한다.

4. 웹 서버가 정적 콘텐츠인지 정적 콘텐츠인지 판단한다

정적 콘텐츠: 실시간으로 변경할 필요가 없는 데이터. (Ex: 회사 로고, 문서 등)
동적 콘텐츠: 높은 빈도로 변경되는 데이터. (Ex: 은행 잔고 정보, 날씨 정보 데이터 등)

5. 필요한 경로로 데이터에 엑세스한다.

웹 서버부터 AP 서버까지

❗️ AP 서버: 동적 콘텐츠에 대한 요청을 처리하는 서버

1. 웹 서버로부터 요청이 도착한다.

2. 스레드가 요청을 받으면 자신이 계산할 수 있는지, 아니면 DB 접속이 필요한지를 판단한다.

요청이 1 + 1의 계산 결과와 같이 단순한 요청은 담당 스레드가 계산한 후에 결과를 반환하지만 요청이 사용자의 잔금 정보와 같이 DB에 접근해야 하는 데이터에 경우에는 DB 서버에 요청을 보낸다.

3. DB 접속이 필요하면 연결 풀에 액세스한다.

저번 글에서 설명했던 커널의 역할 중 하나이다. 스레드가 커널을 통해 DB 서버에 요청을 보낸다.

4. DB 서버에 요청을 보낸다.

⛔️ DB 서버 이외의 옵션
데이터가 필요하면 DB 서버에 접속하는 것이 일반적이지만, 대한민국 행정 경계 정보와 같이 자주 바뀌지 않는 정보는 매번 DB에 접속하는 것이 비효율적이다. 이렇게 규모가 작고 갱신 빈도가 낮은 정보는 캐시로 저장해 두었다가 반환하는 것이 좋다. 반대로, 규모가 큰 정적 데이터 전송 시에는 DB 서버 이외의 CDN이라 불리는 데이터 전송 전용 서버를 이용하는 경우도 있다. 넷플릭스의 경우 영화를 전송하기 위해 CDN을 사용한다.

AP 서버부터 DB 서버까지

1. AP 서버로부터 요청이 도착한다.

2. 프로세스가 요청을 접수하고 캐시가 존재하는지 확인한다

❗️ 이 과정에서 캐시에 정보가 존재한다면 디스크에 접근하지 않고 캐시에 존재하는 데이터를 반환한다.

3. 캐시에 없으면 디스크에 액세스한다

4. 디스크가 데이터를 반환한다

5. 데이터를 캐시 형태로 저장한다

6. 결과를 AP 서버에 반환한다.

AP 서버부터 웹 서버까지

이번에는 같은 경로를 이용해서 데이터가 반환되는 과정을 살펴본다.

1. DB 서버로부터 데이터가 도착한다.

2. 스레드가 데이터를 가지고 계산 등을 한 후에 파일 데이터를 생성한다.

❗️ 이때 반환하는 데이터가 HTML, XML, 이미지 등의 파일이 될 수도 있지만 JSON 과 같은 텍스트를 반환할 수도 있다.

3. 결과를 웹 서버로 반환한다.

웹 서버부터 클라이언트 PC까지

1. AP 서버로부터 데이터가 도착한다.

2. 프로세스는 받은 데이터를 그대로 반환한다.

3. 결과가 웹 브라우저로 반환되고 화면에 표시된다.

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

오늘은 웹 데이터의 흐름에 대해 살펴보았다. 현재 내가 사용하고 있는 방식과 조금은 다르지만 기본적인 핵심은 같았다. 내가 사용하고 있는 시스템이다 보니 보다 더 쉽게 이해할 수 있었고 더 재밌게 읽을 수 있었던 것 같다. 가끔씩 조금씩 적는다고 했는데 이렇게 시간이 날 때마다 계속해서 적는게 좋을 것 같다

profile
Full Stack Developer at Team Verse

0개의 댓글