3.1 3계층형 시스템의 구성도

  • 3계층 아키텍처의 주요 구성요소인 웹 서버, AP 서버, DB 서버

3.2 주요 개념

3.2.1 프로세스와 스레드

  • 프로세스 및 스레드는 프로그램 실행 파일 자체가 아니라 OS 상에서 실행돼서 어느 정도 독립성을 가지고 동작한다.
  • 프로세스 및 스레드가 활동하기 위해서는 메모리 공간이 필요하다.
    • 이것은 커널에 의해 메모리에 확보된다.
  • 프로세스
    • 장점 : 개별 처리 독립성이 높다
    • 단점 : 생성 시 CPU 부하가 높다.
  • 스레드
    • 장점 : 생성 시 부하가 낮다.
    • 단점 : 메모리 공간을 공유하기 때문에 의도하지 않는 데이터 읽기/쓰기가 발생할 수 있다.

3.2.2 OS 커널

  • OS에서 커널은 심장이자 뇌이며 척수이다.
  • 커널은 다양한 역할을 갖지만, 가장 중요한 것은 '뒤에서 무슨 일이 벌어지는지 은폐하면서도 편리한 인터페이스를 제공하는 것'이다.
  • OS 처리는 원칙적으로 커널을 통해 이루어진다.
  • 커널의 주요 역할
    • 시스템 콜 인터페이스
      • 프로세스/스레드에서 커널로 연결되는 인터페이스다.
      • APP이 OS를 통해서 어떤 처리를 하고 싶으면 시스템 콜이라고 하는 명령을 이용해서 커널에 명령을 내린다.
    • 프로세스 관리
      • OS 상에서는 수십,백,천 개의 프로세스를 가동 할 수 있지만 물리 서버의 CPU 코어 수는 많아봐야 수십개밖에 되지 않는다.
      • 언제 어떤 프로세스가 어느 정도의 CPU 코어를 이용할 수 있는지 결정하는 것이 이 기능이다.
    • 메모리 관리
      • 메모리 관리에서는 물리 메모리 공간의 최대치를 고려한다.
      • 프로세스가 이용하는 독립 메모리 공간을 확보하거나 상호 간의 참조 영역을 지키기 위해 독립성을 관리한다.
    • 네트워크 스택
    • 파일 시스템 관리
      • 파일 시스템은 OS 기능의 하나로서 물리 디슼에 제공된 데이터를 관리하는 기능이다.
    • 장치 드라이버
      • 디스크나 NIC 등의 물리 장치용 인터페이스를 제공한다.

3.3 웹 데이터 흐름

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

  • 흐름
    1. 웹 브라우저가 요청을 발행한다.
    2. 이름 해석을 한다. (URL 분석을 의미한다.)
    3. 웹 서버가 요청을 접수한다.
    4. 웹 서버가 정적 콘텐츠인지 동적 콘텐츠인지 판단한다.
    5. 필요한 경로로 데이터 액세스 한다.

3.3.2 웹 서버부터 AP 서버까지

  • 흐름
    1. 웹 서버로부터 요청이 도착한다.
    2. 스레드가 요청을 받으면 자신이 계산할 수 있는지, 아니면 DB 접속이 필요한지를 판단한다.
    3. DB 접속이 필요하면 연결 풀에 액세스 한다.
    4. DB 서버에 요청을 던진다.

3.3.3 AP 서버부터 DB 서버까지

  • 흐름
    • AP 서버로부터 요청이 도착한다.
    • 프로세스가 요청을 접수하고 캐시가 존재하는지 확인한다.
    • 캐시에 없으면 디스크에 액세스한다.
    • 디스크가 데이터를 반환한다.
    • 데이터를 캐시 형태로 저장한다.
    • 결과를 AP 서버에 반환한다.

3.3.4 AP 서버부터 웹 서버 까지

  • 흐름
    1. DB 서버로부터 데이터가 도착한다.
    2. 스레드가 데이터를 가지고 계산 등을 한 후에 파일 데이터를 생성한다.
    3. 결과를 웹 서버로 반환한다.

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

  • 흐름
    1. AP 서버로부터 데이터가 도착한다.
    2. 프로세스는 받은 데이터를 그대로 반환한다.
    3. 결과가 웹 브라우저로 반환되고 화면에 표시된다.

3.4 가상화

  • 가상화란, '컴퓨터 시스템에서 물리 리소스를 추상화하는 것'
    • 서버에서는 '한 대의 서버를 여러 대의 논리 리소스처럼 보이게 하는 기술'이다.
  • 가상 머신 방식에는 호스트 OS형과 하이퍼바이저형이 있다.
    • 호스트 OS형은 윈도우즈나 리눅스 등의 호스트 OS상에 가상화 소프트웨어를 설치해서 이용하는 것이다.
    • 하이퍼바이저형은 하드웨어상에서 직접 가상화 소프트웨어를 실행하고 가상 머신을 동작시키는 기술이다.
  • 도커의 등장 이후 컨테이너가 급속도로 유행하기 시작했다.
    • 컨테이너는 리소스가 격리된 프로세스이다.
    • 하나의 OS 상에서 여러 개를 동시에 가동할 수 있으며, 각각 독립된 루트 파일 시스템, CPU/메모리 프로세스 공간등을 사용할 수 있다.
  • 가상 머신과 비교해서 도커가 지니는 장점
    • 컨테이너는 호스트 OS와 OS 커널을 공유하므로 컨테이너 실행이나 정지 속도가 빠르다.
    • 호스트 OS의 커널을 공유하므로 VM만 사용하는 경우와 비교해 한 대의 호스트 머신상에서 훨씬 많은 컨테이너를 실행할 수 있다. 이를 통해 리소스를 쉽게 관리할 수 있다.
    • 도커는 라이브러리나 프레임워크 등을 도커 이미지로 묶어서 공유할 수 있는 것으로, 특정 환경에서는 재현되지만 자신의 개발 환경에서는 재현되지 않는 문제가 발생하기 어렵다.

+ Recent posts