IT 인프라 정리 - 3계층형 시스템

바퀴달린 개발자·2021년 12월 1일

IT 인프라 정리

목록 보기
3/3

3계층형

3계층형 시스템의 구성도

주요 구성 요소 : 웹 서버, AP 서버, DB 서버

  • 세 대의 서버는 스위치를 경유해서 연결돼 있다.
  • 각 서버에는 CPU, 메모리, 디스크 등과 같은 하드웨어 부품이 나열되어 있다.

주요 개념 설명

프로세스와 스레드

  • 프로세스와 스레드가 활동하려면 메모리 공간이 필요하다. 이것은 커널에 의해 메모리상에 확보된다.
  • 즉, 메모리 공간을 가지는 것이 프로세스/스레드이다.
  • 스레드는 프로세스의 메모리 공간을 점유한다.
  • 각 스레드는 메모리 공간을 공유하고 있다. 그래서 다른 스레드에 이상이 발생하면 영향을 받는다.

프로그래밍 팁

  • 프로세스는 독자 메모리 공간을 가지기 때문에 생성 시 CPU 부하가 스레드와 비교해 높아진다. 때문에 멀티 프로세스 애플리케이션에서는 프로세스 생성 부담을 낮추기 위해 미리 프로세스를 시작시켜 둔다. 이 실제 예가 연결 풀링이라 부르는 것이다.
  • 쓰레드는 생성시 부하가 낮지만 메모리 공간을 공유하기 때문에 의도하지 않는 데이터 읽기/쓰기가 발생할 수 있다.

OS 커널

  • 커널이 존재하기 때문에 개발자는 하드웨어나 다른 애플리케이션에 끼치는 영향을 의식하지 않고 애플리케이션을 만들 수 있다.

커널의 역할
1. 시스템 콜 인터페이스
ㄴ 프로세스나 스레드로부터 명령을 받는 인터페이스
ㄴ 키보드나 마우스 입력은 끼어들기로 처리된다.
2. 프로세스 관리
ㄴ 가동되고 있는 프로세스 관리와 CPU 이용 우선순위 등을 '스케줄'한다
3. 메모리 관리
ㄴ 서버상의 메모리를 단위 크기의 블록으로 분할해서 플세스에 할당한다
4. 네트워크 스택
ㄴ 네트워크를 관리한다
5. 파일 시스템 관리
ㄴ 파일 시스템을 관리한다
6. 장치 드라이버
ㄴ 디스크, NIC, HBA 등의 물리 장치와 작업

시스템 콜 인터페이스

  • 프로세스/스레드에서 커널로 연결되는 인터페이스다.
  • 시스템 콜이라는 명령을 이용해 커널에 명령을 내린다.

프로세스 관리

  • 언제 어떤, 프로세스가 어느 정도의 CPU 코어를 이용할 수 있는지, 처리 우선순위를 어떻게 결정할 것인지 등을 관리한다.

메모리 영역 관리

  • 물리 메모리 공간의 최대치를 고려한다.

네트워크 스택

파일시스템 관리

  • 물리 디스크에 제공된 데이터를 관리하는 기능이다.

장치 드라이버

웹 데이터 흐름

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

  1. 웹 브라우저가 요청 발생
  2. 해당 사이트가 어디에 있는지 이름을 해석한 후 결과를 가지고 해당하는 웹 서버에 요청을 보낸다
  3. 웹 서버의 httpd 프로세스가 요청을 접수한다.
  4. httpd가 받은 요청 내용을 분석해서 정적인 내용인지 동적인 내용인지 판단한다
  5. 정적인 정보는 디스크로부터 읽고 동적인 정보는 네트워크를 경유해서 다른 서버에 요청을 보낸다.
    ㄴ 동적 콘텐츠는 'AP 서버'가 HTML 파일을 동적으로 생성한다.

웹 서버부터 AP 서버까지

  1. AP서버에 웹 서버로부터 온 요청은 NIC를 경유해서 커널에 의해 인터럽트 처리된다.
  2. 스레드가 요청을 받으면 자신이 계산할 수 있는지, 아니면 DB 접속이 필요한지를 판단한다
  3. 동적 데이터를 가져오기 위해 연결 풀을 이용하여 db에 접속한다.
  4. db에 보내는 접속 요청도 물론 시스템 콜을 이용한다.
  5. 네트워크 경유로 db 서버에 대한 질의가 이루어진다.
  • 자바를 이용한 ap 서버에서는 JVM(Java Virtual Machine)이라고 불리는 가상 머신이 동작하고 있다.

DB 서버 이외의 옵션

  • 규모가 작고 갱신 빈도가 낮은 정보는 JVM 내주에 캐시로 저장해두었다가 반환하는 것이 좋다.
  • 반대로 규모가 큰 정적 데이터 전송 시에는 DB 서버 이외에 CDN이라 불리는 데이터 전송 전용 서버를 이용하는 경우도 있다.

AP 서버부터 DB 서버까지

  1. DB 프로세스가 요청을 접수한다.
  2. 이전에 사용한 정보는 캐시에 있기 때문에 이 정보를 찾기 위해 일단 공유메모리를 검색한다. (캐시 존재 여부 확인)
  3. 캐시에 없으면 시스템 콜을 경유해서 디스크에 요청을 던진다.
  4. 디스크의 데이터는 요청을 보낸 프로세스로 반환된다.
  5. 한 번 액세스한 데이터는 메모리에 캐시 형태로 저장되고 이후 액세스 시에 재사용된다.
  6. 요청을 보낸 AP 서버로 데이터를 반환한다.

가상화

가상화란?

  • 최근에는 온프레미스에서 가상화 기술을 사용하는 경우가 많다.
  • 대량의 컴퓨터를 다루는 클라우드 환경은 가상화 기술을 기반으로 구축된다.
  • 가상화란, 컴퓨터 시스템에서 물리 리소스를 추상화 하는 것

OS도 가상화 기술의 하나

가상 머신

  • 가상 머신 방식에는 호스트 OS 형과 하이퍼바이저형이 있다.
  • 호스트 OS형은 윈도우즈나 리눅스 등의 호스트 os상에 가상화 소프트웨어를 설치해서 이용하는 것으로 vmware server 등이 있다.
  • 성능면 제한으로 인해 등장한 것이 하이퍼바이저형
  • 하이퍼바이저형은 하드웨어상에서 직접 가상화 소프트웨어를 실행하고 그 위에 가상 머신을 동작시키는 기술

컨테이너의 역사

  • '리소스가 격리된 프로세스'
  • 하나의 OS 상에서 여러개를 동시에 가동할 수 있으며, 각각 독립된 루트 파일 시스템, CPU 메모리, 프로세스 공간등을 사용할 수 있다.

도커의 등장

  • 파일 시스템과 프로시스를 분리

참고 ㄲ
https://cultivo-hy.github.io/docker/image/usage/2019/03/14/Docker%EC%A0%95%EB%A6%AC/

클라우드와 가상화 기술

  • 하이퍼 바이저 및 컨테이너 등의 가상화 기술은 대규모 웹 서비스에서 사용되고 있다.

0개의 댓글