2022.05.24
3장. 3계층형 시스템을 살펴보자: 3.3 웹 데이터 흐름
인터넷상의 주소는 IP라는 숫자로 표현되 있는데 이러한 숫자는 읽기도 기억하기도 매우 불편하다 따라서 읽기도 쉽고 기억하기도 편한 URL과 IP 주소를 매칭시켜서 사용하는데 이때 IP 주소를 찾아내는 과정이 이름 해석이다. 더 자세한 내용은 6장에서 다룬다고 한다.
❗️ 아파치에서는 기본적으로 부모 프로세스와 자식 프로세스로 나누어 처리를 분담하고 있다. 설정을 통해 다양한 처리 방식을 선정할 수 있지만, 기본적으로는 자식 프로세스가 HTTP 요청을 접수한다.
정적 콘텐츠: 실시간으로 변경할 필요가 없는 데이터. (Ex: 회사 로고, 문서 등)
동적 콘텐츠: 높은 빈도로 변경되는 데이터. (Ex: 은행 잔고 정보, 날씨 정보 데이터 등)
❗️ AP 서버: 동적 콘텐츠에 대한 요청을 처리하는 서버
요청이 1 + 1의 계산 결과와 같이 단순한 요청은 담당 스레드가 계산한 후에 결과를 반환하지만 요청이 사용자의 잔금 정보와 같이 DB에 접근해야 하는 데이터에 경우에는 DB 서버에 요청을 보낸다.
저번 글에서 설명했던 커널의 역할 중 하나이다. 스레드가 커널을 통해 DB 서버에 요청을 보낸다.
⛔️ DB 서버 이외의 옵션
데이터가 필요하면 DB 서버에 접속하는 것이 일반적이지만, 대한민국 행정 경계 정보와 같이 자주 바뀌지 않는 정보는 매번 DB에 접속하는 것이 비효율적이다. 이렇게 규모가 작고 갱신 빈도가 낮은 정보는 캐시로 저장해 두었다가 반환하는 것이 좋다. 반대로, 규모가 큰 정적 데이터 전송 시에는 DB 서버 이외의 CDN이라 불리는 데이터 전송 전용 서버를 이용하는 경우도 있다. 넷플릭스의 경우 영화를 전송하기 위해 CDN을 사용한다.
❗️ 이 과정에서 캐시에 정보가 존재한다면 디스크에 접근하지 않고 캐시에 존재하는 데이터를 반환한다.
이번에는 같은 경로를 이용해서 데이터가 반환되는 과정을 살펴본다.
❗️ 이때 반환하는 데이터가 HTML, XML, 이미지 등의 파일이 될 수도 있지만 JSON 과 같은 텍스트를 반환할 수도 있다.
오늘은 웹 데이터의 흐름에 대해 살펴보았다. 현재 내가 사용하고 있는 방식과 조금은 다르지만 기본적인 핵심은 같았다. 내가 사용하고 있는 시스템이다 보니 보다 더 쉽게 이해할 수 있었고 더 재밌게 읽을 수 있었던 것 같다. 가끔씩 조금씩 적는다고 했는데 이렇게 시간이 날 때마다 계속해서 적는게 좋을 것 같다