제3장 3계층형 시스템을 살펴보자
3.1 3계층형 시스템의 구성도
1장에서 소개한 3개층 아키텍처에 대해 먼저 주요 구성 요소인 웹 서버, AP 서버, DB 서버를 정리해서
하나의 그림으로 그려보았다.(그림3.1)
3.2 주요 개념 설명
3.2.1 프로세스와 스레드
그림 3.2를 보자.
프로세스 및 스레드는 프로그램 실행 파일 자체가 아니라 OS상에서 실행돼서 어느 정도 독립성을 가지고 동작하는 것이다. 대부분의 책이 '사람 모양'으로 표현하고 있듯이, 프로세스나 스레드가 시작되는 것은 마치 사람이 숨을 쉬기 시작라면서 활동하는 것과 같은 의미다. 이 책을 다 읽을 때 쯤이면 프로그램을 실행할 때마다 막대 인간이 머릿속에 떠오를 것이다.
프로세스 및 스레드가 활동하려면 메모리공간이 필요하다.
이것은 커널에 의해 메모리상에 확보된다. 이 메모리 공간은 막대 인간이 자신을 위해 소유하는 공간으로, 개인 공간이라 할 수 있다. 다양한 처리를 하면서 데이터를 주고받기 위해 이 공간을 사용한다. 그림 3.3에 있는 것처럼 프로세스 시작 시에 이 공간이 확보된다.
여러 개를 동시에 실행할 때의 프로세스와 스레드의 장단점을 간단히 정리해 보았다.
프로세스의 장점
- 개별 처리, 독립성이 높다.
프로세스의 단점
- 생성 시 CPU 부하가 높다.
스레드의 장점
- 생성 시 부하가 낮다.
스레드의 단점
- 메모리 공간을 공유하기 때문에 의도하지 않는 데이터 읽기/쓰기가 발생할 수 있다.
단, 프로세스가 메모이 공간을 공유할 수 없는 것은 아니다. 예를 들어, 오라클 DB에서는 그림3.4와 같이
여러 프로세스가 '공유 메모리 공간'을 상호 이용할 수 있게 되어 있다.
3.2.2 OS 커널
OS 처리는 원칙적으로는 커널을 통해 이루어진다. 커널의 역할에는 여러 가지가 있지만,
그림3.5와 같이 여섯 가지로 정리할 수 있다.
- 시스템 콜 인터페이스
프로세스/스레드에서 커널로 연결되는 인터페이스다.
2. 프로세스 관리: 프로세스를 관리한다.
3. 메모리관리: 메모리 영역을 관리한다.
4. 네트워크 스택
5. 파일 시스템 관리: 이것은 파일 시스템용 인터페이스를 제공한다.
파일 시스템은 OS 기능의 하나로서 물리 디스크에 제공된 데이터를 관리하는 기능이다.
6. 장치 드라이버: 디스크나 NIC 등의 물리 장치용 인터페이스를 제공한다.
3.3 웹 데이터 흐름
여러분이 가장 익숙하다고 느낄 분야인 3계층형 시스템의 웹 데이터를 그림 3.8의 흐름을 따라 설명하겠다.
3.3.1 클라이언트 PC부터 웹 서버까지
그림 3.9에는 클라이언트 PC에서 웹 브라우저를 실행해서 웹 서버에 요청을 보내고 AP서버에 질의하기까지의 흐름을 보여주고 있다.
전체 흐름은 다음과 같다.
- 웹 브라우저가 요청을 발행한다.
- 이름 해석을 한다.
- 웹서버가 요청을 접수한다.
- 웹 서버가 정적 콘텐츠인지 동적 콘텐츠인지 판단한다.
- 필요한 경로로 데이터에 엑세스한다.
그림 3.10은 서버가 아닌 PC에서의 처리 흐름이다. 디스크에서 프로그램을 읽어서 프로세스를 시작하고, 메모리 공간을확보한다.
웹 브라우저는 접속하는 서버가 어디에 있는지 모르기 때문에 그림 3.11에 있는 것처럼 조사를 하기 시작한다.
3.3.2 웹 서버부터 AP서버까지
'동적 콘텐츠'에 대한 요청을 처리하는 것이 AP 서버다,
그림 3.12를 통해 구체적인 처리내용을 살펴보자.
- 웹 서버로부터 요청이 도착한다
- 스레드가 요청을 받으면 자신이 계산할 수 있는지, 아니면 DB 접속이 필요한지를 판단한다.
- DB접속이 필요하면 연결 풀에 엑세스한다.
- ~ 5 DB 서버에 요청을 던진다.
규모가 작고 갱신 빈도가 낮은 정보는 그림 3.13에 있는 것처럼 JVM내부에 캐시로 저장해두었다가 반환하는 것이 좋다.
3.3.3 AP서버부터 DB서버까지
그림 3.14의 DB 서버에서는 오라클 DB인 경우 서버가 요청을 접수한다.
요청은 SQL이라는 언어 형태로 이루어진다.
전체적인 흐름은 다음과 같다.
- AP 서버로부터 요청이 도착한다.
- 프로세스가 요청을 접수하고 캐시가 존재하는지 확인한다.
- 캐시에 없으면 디스크에 액세스한다.
- 디스크가 데이터를 반환한다.
- 데이터를 캐시 형태로 저장한다.
- 결과를 AP서버에 반환한다.
오라클 DB에서는 그림3.15와 같이 작업 분담을 하고 있다.
DB서버 내부의 디스크는 이중화 관점에서 뒤떨어지기 때문에 직접 사용하는 경우는 드물다.
대부분은 그림 3.16에 있는 것처럼 별도 저장 장치를 이용한다.
3.3.4 AP서버부터 웹서버까지
데이터를 집계하는 등 요청 내용을 바탕으로 가공한 후에 웹 서버로 데이터를 반환한다(그림3.17)
전체 흐름은 다음과 같다.
- DB서버로부터 데이터가 도착한다.
- 스레드가 데이터를 가지고 계산 등을 한 후에 파일 데이터를 생성한다.
- 결과를 웹 서버로 반환한다.
3.3.5 웹서버부터 클라이언트 PC까지
AP 서버에서 돌아온 데이터를 받아서 웹 서버의 httpd 프로세스가 pc의 웹 브라우저로 반환한다.(그림3.18)
전체적인 흐름은 다음과 같다.
- AP서버로부터 데이터가 도착한다.
- 프로세스는 받은 데이터를 그대로 반환한다.
- 결과가 웹 브라우저로 반환되고 화면에 표시된다.
3.3.6 웹 데이터의 흐름 정리
각 서버의 동작은 다르지만 다음과 같은 공통점이 있다.
- 프로세스나 스레드가 요청을 받는다.
- 도착한 요청을 파악해서 필요에 따라 별도 서버로 요청을 보낸다.
- 도착한 요청에 대해 응답한다.
3.4 가상화
3.4.1 가상화란?
가상화란 한마디로 정의하면 '컴퓨터 시스템에서 물리 리소스를 추상화하는 것이다.
3.4.2 OS도 가상화 기술의 하나
하드웨어를 의식하지 않고 애플리케이션을 실행할 수 있는 운영체제는 가상화 기술 중 하나라고 볼 수 있다.
3.4.3 가상 머신
가상 머신 방식에는 호스트 OS형과 하이퍼바이저형이 있다.
하이퍼바이저형 가상화 구조에는 완전 가상화와 준가상화가 있다.
3.4.4 컨테이너의 역사
컨테이너는 '그릇', '용기' 등의 의미로 한 마디로 정의하면 '리소스가 격리된 프로세스'이다.
하나의 OS상에서 여러 개를 동시에 가동할 수 있으며, 각각 독립된 루트 파일 시스템, CPU/메모리, 프로세스 공간 등을
사용할 수 있다는 점이 하드웨어 가상화인 가상머신과의 차이다.
3.4.5 도커의 등장
2013년에 파일 시스템과 프로세스를 분리하는 기능이 추가됐다.
이를 통해 시스템 이미지의 패키징과 버저닝이 가능해졌고 컨테이너 이미지를 공유할 수 있는 도커가 등장함으로써 컨테이너 기술이 주목을 받기 시작했다.
3.4.6 클라우드와 가상화 기술
하이퍼바이저 및 컨테이너 등의 가상화 기술은 구글이나 페이스북, 아마존 등의 대규모 웹 서비스에서 사용되고 있다.
AWS, GCP, Azure 등의 클라우드 서비스에서는 가상 머신 서비스, 컨테이너 서비스, Function as a Service 서비스나 다른 기타 서비스를 지탱하는 기술로 이용되고 있다.
'IT인프라구조' 카테고리의 다른 글
제4장 인프라를 지탱하는 기본 이론 (0) | 2024.07.21 |
---|---|
제2장 서버를 열어 보자 (0) | 2024.07.21 |
이미지2 (0) | 2024.07.18 |
이미지1 (0) | 2024.07.18 |
제1장 인프라 아키텍처를 살펴보자 1 (0) | 2024.07.17 |