반응형
1. 프로세스와 스레드
- 프로세스 및 스레드는 프로그램 실행 파일 자체가 아니라 OS상에서 실행돼서 어느 정도 독립성을 가지고 동작하는 것.
- 프로세스 및 스레드가 활동하려면 메모리 공간이 필요한데, 이것은 커널에 의해 메모리상에 확보된다.
프로세스 vs 스레드
- 프로세스는 전용 메모리 공간을 이용해서 동작하는 반면, 스레드는 다른 스레드와 메모리 공간을 공유하고 있는 운명 공동체이다.
- 프로세스는 개별 처리 독립성이 높은 반면, 독자 메모리 공간을 가지기 때문에 생성 시 CPU 부하가 스레드와 비교해서 높아진다.
2. OS 커널
- OS에서 커널은 심장이자 뇌이며 척수이다.
- 커널은 다양한 역할을 갖지만, 가장 중요한 것은 뒤에서 무슨 일이 벌어지는지 은폐하면서도 편리한 인터페이스를 제공하는 것이다. (이러한 이유로 커널이 존재하기 때문에 개발자는 하드웨어나 다른 애플리케이션에 끼치는 영향을 의식하지 않고 애플리케이션을 만들 수 있는 것이다.)
2-1. 시스템 콜 인터페이스
- 프로세스/스레드에서 커널로 연결되는 인터페이스.
- 애플리케이션이 OS를 통해서 어떤 처리를 하고 싶으면 시스템 콜이라고 하는 명령을 이용해서 커널에 명령을 내린다. 이때 명령이 인터페이스를 통해 전달된다.
- 시스템 콜을 호출해서 뒤에서 구체적으로 어떤 처리를 하고 있는지 프로세스가 의식할 필요 없이 기능을 이용할 수 있다.
2-2. 프로세스 관리
- OS상에서는 수백, 수천 개의 프로세스를 가동할 수 있다. 이에 비해 물리 서버의 CPU 코어 수는 많아야 수십 개 정도밖에 되지 않는다.
- 언제 어떤 프로세스가 어느 정도의 CPU 코어를 이용할 수 있는지, 처리 우선순위를 어떻게 결정할 것인지 등을 관리.
2-3. 메모리 관리
- 물리 메모리 공간의 최대치를 고려한다.
- 프로세스가 이용하는 독립 메모리 공간을 확보하거나 상호 간의 참조 영역을 지키기 위해 독립성을 관리하는 등의 메모리 관리 역할을 수행.
2-4. 네트워크 스택
- 차후 6장에서 설명
2-5. 파일 시스템 관리
- 물리 디스크에 제공되는 데이터를 관리하는 기능
- 물리 디스크에 기록된 데이터는 0101과 같은 이진수 집합에 불과하다. 구분 표시도 없을뿐더러 그대로 사용하기는 매우 어려운 형태이다.
- 파일 시스템 덕분에 애플리케이션은 파일이라는 단위로 데이터를 작성하거나 삭제할 수 있다.
2-6. 장치 드라이버
NIC나 디스크는 다수의 제조사가 독자 제품을 제공하고 있다. 각각에 대응하는 애플리케이션을 개발하는 것은 현실적이지 못하기 때문에 커널은 장치 드라이버를 이용해서 그 아래에 있는 물리 장치를 은폐한다.
각 장치 제조사가 OS에 대응하는 장치 드라이버를 제공해서 해당 OS의 표준 장치로서 커널을 경유해 이용할 수 있게 하는 것이다.
커널 설계 및 구현 방식
모놀리식 방식
- OS의 주요 구성 요소를 모두 하나의 메모리 공간을 통해 제공
마이크로 커널
- 최소한의 기능만 커널이 제공하고 그 외 기능은 커널 밖에서 제공.
3. 웹 데이터 흐름
3계층형 시스템에서의 흐름
3-1. 클라이언트 PC ~ 웹 서버
- 웹 브라우저가 요청을 발행한다.
- DNS를 통해 이름 해석을 한다.
- 웹 서버가 요청을 접수한다.
- 웹 서버가 정적 콘텐츠인지 동적 콘텐츠인지 판단한다.
- 필요한 경로로 데이터를 액세스 한다.
3-2. 웹 서버 ~ 웹 애플리케이션 서버
동적 콘텐츠에 대한 요청을 처리하는 것이 AP서버이다.
- 웹 서버로부터 요청이 도착한다.
- 스레드가 요청을 받으면 자신이 계산할 수 있는지, 아니면 DB 접속이 필요한지를 판단.
- DB 접속이 필요하면 연결 풀에 액세스 후, DB 서버에 요청을 던진다.
3-3. 웹 애플리케이션 서버 ~ DB 서버
- AP 서버로부터 요청이 도착한다.
- 프로세스가 요청을 접수하고 캐시가 존재하는지 확인 후, 캐시에 없으면 디스크에 액세스 한다.
- 디스크가 데이터를 반환하면, 데이터를 캐시 형태로 저장한다.
- 결과를 AP 서버에 반환.
- 서버 메모리에 캐시가 있는지 먼저 확인하고 없으면 디스크에 액세스 해서 필요한 데이터를 가지고 온다.
- 참고로 인메모리 DB 등 에서는 디스크 자체를 사용하지 않고 모든 처리를 메모리 내에서 완료하는 구조라서 고속화를 실현할 수 있다.
3-4. AP 서버 ~ 웹 서버
- DB 서버로부터 데이터가 도착.
- 스레드가 데이터를 가지고 계산 등을 한 후에 파일 데이터를 생성.
- 결과를 웹 서버로 반환.
3-5. 웹 서버 ~ 클라이언트
- AP 서버로부터 데이터가 도착한다.
- 프로세스는 받은 데이터를 그대로 반환.
- 결과가 웹 브라우저로 반환되고 화면에 표시
공통점
각 서버의 동작은 다르지만 다음과 같은 공통점이 있다.
- 프로세스나 스레드가 요청을 받는다.
- 도착한 요청을 파악해서 필요에 따라 별도 서버로 요청을 보냄.
- 도착한 요청에 대해 응답.
4. 가상화
가상화란, 컴퓨터 시스템에서 물리 리소스를 추상화하는 것.
물리 리소스에는 서버, 네트워크, 저장소 등이 있지만 이 책에서는 서버 가상화에 대해 알아본다.
4-1. OS도 가상화 기술의 하나
하드웨어를 의식하지 않고 애플리케이션을 실행할 수 있는 운영체제는 가상화 기술 중 하나라고 볼 수 있다.
OS 등장 이전에는 하드웨어를 의식한 프로그래밍이 필요했고 매우 복잡한 작업이었다. OS의 커널에 의해 하드웨어가 추상화되면서, 컴퓨터에 연결된 기억 장치나 네트워크를 통한 데이터 교환이 하드웨어를 의식하지 않고 이루어지고 있다.
4-2. 가상 머신
가상 머신 방식에는 호스트 OS형과 하이퍼바이저형이 있다.
호스트 OS형
- 윈도우나 리눅스 등의 호스트 OS상에 가상화 소프트웨어를 설치해서 이용하는 것.
- 소프트웨어를 에뮬레이터 하는 것으로 성능면에서 제한이 있다.
하이퍼바이저형
- 하드웨어상에서 직접 가상화 소프트웨어를 실행하고 그 위에 가상 머신을 동작시키는 기술.
- 호스트 OS를 거치지 않으므로 호스트형보다 성능이 우수해서 서버 가상화의 대표 기술로 자리 잡음.
하이퍼바이저형 가상화 구조에는 완전 가상화와 준가상화가 있다.
완전 가상화
- 물리 머신상에서 동작하는 OS나 드라이버를 그대로 게스트로 이용할 수 있는 장점.
- 소프트웨어로 에뮬레이션 하기 때문에 성능이 저하된다는 문제
준가상화
- 실존하는 하드웨어를 에뮬레이션 하는 것이 아니라, 가상 환경용 가상 하드웨어를 소프트웨어적으로 에뮬레이션 한다.
4-3. 컨테이너
도커 등장 이후 컨테이너가 급속도로 유행하기 시작.
컨테이너
- 리소스가 격리된 프로세스.
- 하나의 OS상에서 여러 개를 동시에 기동 할 수 있음.
- 각각 독립된 루트 파일 시스템, CPU/메모리, 프로세스 공간 등을 사용할 수 있음.
chroot
- 프로세스가 OS의 루트 디렉터리 아래에 있는 특정 계층에 접근하지 못하도록 하는 기능.
4-4. 도커의 등장
가상 머신과 비교해서 도커가 지니는 장점
- 컨테이너는 호스트 OS와 OS 커널을 공유하므로 컨테이너 실행이나 정지 속도가 빠름.
- 호스트 OS의 커널을 공유하므로 VM만 사용하는 경우와 비교해 한 대의 호스트 머신상에서 훨씬 많은 컨테이너를 실행할 수 있다. 이를 통해 리소스를 한 곳에서 쉽게 관리할 수 있음
4-5. 클라우드와 가상화 기술
- 하이퍼바이저 및 컨테이너 등의 가상화 기술은 구글이나 페이스북, 아마존 등에 대규모 웹 서비스에서 사용되고 있음.
- AWS, GCP, Azure 등의 클라우드 서비스에서는 가상 머신 서비스, 컨테이너 서비스, Function as a Service 서비스나 다른 기타 서비스를 지탱하는 기술로 이용되고 있다.
반응형
'공통 > 인프라 & 시스템 설계' 카테고리의 다른 글
[그림으로 공부하는 IT인프라 구조] 7장 정리 (0) | 2021.05.20 |
---|---|
[그림으로 공부하는 IT인프라 구조] 6장 정리 (0) | 2021.05.18 |
[그림으로 공부하는 IT인프라 구조] 5장 정리 (0) | 2021.05.17 |
[그림으로 공부하는 IT인프라 구조] 4장 정리 (0) | 2021.05.16 |
[그림으로 공부하는 IT인프라 구조] 1장, 2장 정리 (0) | 2021.05.14 |