아리아 날다

3장. 3계층형 시스템을 살펴보자 본문

IT 인프라구조

3장. 3계층형 시스템을 살펴보자

Aria Park 2024. 5. 29. 08:31

프로세스와 스레드

  • 프로세스: 운영체제로부터 자원을 할당받은 작업의 단위
  • 스레드: 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
  • 프로세스와 스레드가 활동하려면 메모리 공간이 필요하고 이것은 커널에 의해 메모리상에 확보
  • 프로세스 시작 시에 어떤 일이 발생할까?
    1. OS상에서 프로세스가 시작돼서 사용자 요청을 받을 수 있게 됨
    2. 시작 의뢰가 있으면 커널이 프로세스를 작성
    3. 요청 분량만큼만 메모리 공간을 할당
    4. 프로그램은 서버 내부의 디스크 상에 설치
  • 프로세스와 스레드의 메모리 공간 차이
    • 메모리 공간을 가지는 것이 ‘프로세스’. JVM도 프로세스로 내부에서 수많은 스레드가 동작
    • 하나의 프로세스가 동작하고 있으면 내부에서는 메모리 공간을 점유하는 스레드 하나가 동작
    • 각 스레드는 메모리 공간을 공유
    → 스레스 시작 시에 신규 메모리 공간은 필요 없지만, 다른 스레드에 이상이 발생하면 영향을 받음
  • 프로세스는 전용 메모리 공간을 이용해서 동작, 스레드는 다른 스레드와 메모리 공간을 공유함

프로세스 스레드

장점 개별 처리 독립성이 높다 생성시 부하가 낮다
단점 생성 시 CPU 부하가 높다 메모리 공간을 공유하기 때문에 의도하지 않는 데이터 읽기/쓰기가 발생할 수 있다
  • 공유 메모리형 DBMS의 메모리 관리
  1. 오라클 DB에서는 각 프로세스별 메모리 공간(PGA)과 프로세스 전체가 공유하는 메모리 공간(SGA)이 나누어져 있다.
  2. 공유 메모리(SGA)에는 디스크상의 데이터 캐시나 실행 완료된 SQL 캐시, 테이블, 인덱스 등이 저장된다.
  3. 프로세스별 메모리(PGA)에는 해당 프로세스 SQL이 이용하는 소트 영역이나 테이블 결합에 사용하는 메모리 영역이 저장돼 있다. 이영역은 다른 프로세스가 접근할 수 없다. 이 메모리가 부족하면 공유 메모리를 아무리 크게 잡아도 효과를 볼 수 없다.

OS커널

  • 커널의 역할(OS 처리는 원칙적으로는 커널을 통해 이루어짐)
    1. 시스템 콜 인터페이스
      1. 프로세스나 스레드로부터 명령을 받는 인터페이스(연결되어 있음)
      2. 시스템 콜이라고 하는 명령이 인터페이스를 통해서 전달(은행이나 구청의 접수 창구와 같은 역할)
      3. 디스크상의 데이터를 읽고 싶거나 네트워크 통신을 하고 싶을 때, 새로운 프로세스를 생성하고 싶은 경우 호출
      *데이터 읽기/쓰기는 Input/Output 처리라고 하며, 디스크 I/O와 네트워크 I/O의 본질적인 차이는 없다. 디스크 읽기/쓰기나 네트워크를 통한 읽기/쓰기는 프로세스 관점에서는 동일한 시스템 콜이다.
    2. 프로세스 관리
      1. 가동되고 있는 프로세스 관리와 CPU 이용 우선순위 등을 스케줄링함
      2. 언제, 어떤 프로세스가 어느 정도의 CPU 코어를 이용할 수 있는지, 처리 우선순위를 어떻게 결정할 것인지 등을 관리
    3. 메모리 관리
      1. 서버상의 메모리를 단위크기의 블록으로 분할해서 프로세스에 할당(물리 메모리 공간의 최대치를 고려)
      2. 프로세스가 이용하는 독립 메모리 공간을 확보하거나 상호 간의 참조 영역을 지키기 위해 독립성을 관리
    4. 네트워크 스택
      1. 네트워크 관리
    5. 파일 시스템 관리
      1. 파일 시스템용 인터페이스 제공(물리 디스크에 제공된 데이터 관리)
      2. 주요 기능: 디렉터리(폴더) 구조 제공, 액세스 관리, 고속화, 안정성 향상 등
    6. 장치 드라이버
      1. 디스크, NIC, HBA 등의 물리 장치용 인터페이스 제공(각 장치 제조사가 OS에 대응하는 장치 드라이버를 제공해서 해당 OS의 표준 장치로서 커널을 경유해 이용할 수 있게 함)

3.3 웹데이터 흐름

  • 클라이언트 PC로부터 웹 서버까지의 데이터 흐름
    1. 웹 브라우저가 특정 인터넷 사이트에 요청을 보낸다.
    2. 해당 사이트가 어디에 있는지 이름을 해석한 후 이 결과를 가지고 해당하는 웹 서버에 요청을 보낸다
    3. 웹 서버의 httpd 프로세스가 요청을 접수한다
    4. httpd가 받은 요청 내용을 분석해서 정적인 내용인지 동적인 내용인지를 판단한다
    5. 필요한 경로로 데이터에 액세스한다
      1. 동적인 정보는 네트워크를 경유해서 다른 서버에 요청을 보낸다
      2. 정적인 정보는 디스크로부터 읽는다
  • 클라이언트 PC에서 웹 브라우저 실행
    1. PC 내부도 서버와 거의 같은 구조
    2. 웹 브라우저도 OS의 프로세스로 실행
    3. 프로그램은 원래 디즈스크에 저장돼 있다. 이것을 읽어서 메모리에 상주시키고 실행하는 것은 OS다
    4. 웹 브라우저 화면에서 링크를 컬릭하면 웹 서버로 요청을 보낸다
    5. 이것도 OS의 시스템콜로 실행되고, 커널을 통해 NIC에 네트워크 통신이 요청된다
    6. 네트워크 경유로 웹 서버에 질의한다
  • 웹 서버부터 AP 서버까지(동적 콘텐츠에 대한 요청 처리-AP서버)
    1. 웹 서버로부터 요청은 NIC를 경유해서 커널에 의해 끼어들기 처리한다
    2. 스레드가 요청을 받으면 자신이 계산할 수 있는지, 아니면 DB 접속이 필요한지를 판단한다
    3. 동적 데이터를 가져오기 위해 연결 풀을 이용하여 DB에 접속한다
    4. DB에 보내는 접속 요청도 물론 시스템 콜을 이용한다
    5. 네트워크 경유로 DB서버에 대한 질의가 이루어진다
    *AP서버의 스레드는 DB서버에 질의하고, 그 결과를 HTML 등으로 정리해서 반환

 

  • DB 서버 이외의 옵션
    • 규모가 작고 갱신 빈도가 낮은 정보는 JVM 내부에 캐시로 저장해 두었다가 반환하는 것이 효과적(고속 처리 가능)
    • 규모가 큰 정적 데이터 전송 시에는 CDN(Content Delivery Network)이라 불리는 데이터 전송 전용 서버를 이용
      • CDN은 대량의 데이터 전송에 특화된 것으로, 전 세계에 있는 데이터 복사본(캐시)을 배치하는 기술과 병렬 기술을 활용해서 처리를 효율화 함
      • 참조뿐만 아니라 데이터 갱신하는 업무가 많고, 하나의 시스템에 대한 사용자 수가 제한되어 있는 기업형 시스템에서는 잘 사용하지 않음
  • AP 서버부터 DB 서버까지
    1. DB서버에서는 DB 프로세스가 요청을 접수한다
    2. 이전에 사용한 정보는 캐시에 있기 때문에 이 정보를 찾기 위해 일단 공유 메모리를 검색한다
    3. 공유 메모리에 데이터가 존재하지 않기 때문에 디스크에서 읽는다. 이때는 이전과 동일한 방식으로 시스템 콜을 경유해서 디스크에 요청을 던진다
    4. 디스크의 데이터는 요청을 보낸 프로세스로 반환한다
    5. 한번 액세스한 데이터는 메모리에 캐시 형태로 저장되고 이후 액세스 시에 재사용된다
    6. 요청을 보낸 AP 서버로 데이터를 반환한다
  • AP 서버부터 웹 서버까지
    1. DB 서버에서 돌아온 데이터는 NIC 경유로 원래 스레드에 반환한다
    2. DB 데이터, JVM의 캐시 데이터 등을 이용해서 계산 처리, 집계 처리 등이 이루어지고 특정 형태의 파일이 생성된다
    3. 웹 서버로부터 데이터를 반환한다
  • 웹 서버부터 클라이언트 PC까지
    1. AP 서버에서 돌아온 데이터는 NIC 경유로 원래 스레드에 반환된다
    2. 필요한 데이터 가공은 모두 AP서버에서 이루어지기 때문에 그대로 웹 브라우저에 데이터를 반환한다
    3. 요청한 데이터를 웹 브라우저로 반환한다
  • 웹 데이터의 흐름 정리
    • 프로세스나 스레드가 요청을 받는다
    • 도착한 요청을 파악해서 필요에 따라 별도 서버로 요청을 보낸다
    • 도착한 요청에 대해 응답한다

*3계층 시스템에서는 사용자 요청이 시발점이 돼서 해당 요청이 다양한 서버로 전달된다. 요청 기반 아키텍처이기 때문에 기다리는 상태이고 이는 성능 문제를 야기하는 요인이 된다

3.4 가상화

→ 컴퓨터 시스템에서 물리 리소스를 추상화하는 것

→ 하드웨어를 의식하지 않고 애플리케이션을 실행할 수 있는 운영체제(Operating System, OS)도 가상화 기술 중 하나

  • 가상머신
    • 호스트 OS형
      • 윈도우즈나 리눅스 등의 호스트 OS 상에 가상화 소프트웨어를 설치해서 이용하는 것
      • 소프트웨어를 에뮬레이터 하는 것으로 성능면에서 제한이 있음
      • VMware Server, Microsoft Virtual Server
    • 하이퍼바이저형
      • 직접 가상화 소프트웨어를 실행하고 그 위에 가상 머신을 동작하는 방식(호스트 OS형의 단점을 보완함)
      • 호스트 OS를 거치지 않으므로 호스트형보다 성능이 우수해서 서버 가상화의 대표 기술로 자리잡음
      • VMware vSphere, Hyper-V, Xen, KVM
  • 컨테이너의 역사
  • 도커의 등장
  • 클라우드 가상화 기술

'IT 인프라구조' 카테고리의 다른 글

1,2장. 인프라 아키텍처, 서버  (0) 2024.05.29
7장. 무정지를 위한 인프라 구조  (0) 2024.05.29
Comments