#45. OS동작과 3계층형 시스템

박현재·2022년 2월 26일
0

3계층형 시스템에서의 데이터 흐름을 살펴보기 전에 OS(Operating System: 운영체제)의 이해가 필요하다. 클라이언트 PC, 웹 서버, AP 서버, DB 서버 모두 각각의 운영체제를 가지기 때문이다. 특히, AP서버에서는 하나의 운영체제인 가상머신(VM)이 탑재되어 작동하는데 JAVA에서는 JVM, 블록체인 이더리움에서는 EVM이라고 불린다.
따라서 오늘 알아볼 내용은
1. OS와 OS 내부의 일꾼들이 일하는 방식
2. 3계층형 시스템에서의 데이터 흐름 (클라이언트와 외부 저장장치를 포함하면 5계층)
3. 가상화 기술

1. OS의 주요개념

1-1. 프로세스와 스레드

인터넷에서 어떤 프로그램을 다운로드받아 PC에 설치했을 때를 생각해보자.
프로그램 설치 후 아이콘을 더블클릭하면 실행되면서 창이 열린다. 더블클릭을 한 번 더하면 별도의 창이 또 열린다. 이것이 프로세스나 스레드라고 불리는 것이다. 프로그램 실행 파일 자체가 아니라 OS상에서 실행돼서 어느 정도 독립성을 가지고 동작한다. 우리가 프로그램을 실행하면 프로세스나 스레드가 일꾼 역할이 되어 대신 일해준다.
프로세스 및 스레드는 활동을 위한 메모리 공간이 필요한데, OS커널에 의해서 메모리상에 확보된다. 프로세스는 메모리 공간을 할당받고 하나의 스레드를 가진다. 스레드는 메모리 공간을 공유하는 형태다.

1-2. OS 커널


1-2-1. 시스템 콜 인터페이스

데이터 읽기/쓰기 및 네트워크 통신 등의 요청을 받는 가게의 점원의 역할과 같다.

1-2-2. 프로세스 관리

OS상에서는 수십, 수백, 수천 개의 프로세스를 가동할 수 있다. 반면, 물리 서버의 CPU 코어 수는 많아야 수십 개 정도이다. 언제, 어떤 프로세스가 어느 정도의 CPU 코어를 이용할 수 있는지, 그리고 요청에 대한 우선순위 결정 등을 관리하는 인솔자 역할을 한다.

1-2-3. 메모리 관리

프로세스 관리는 CPU 코어를 고려했지만, 메모리 관리에서는 물리 메모리 공간의 최대치를 고려한다. 프로세스가 이용하는 독립 메모리 공간을 확보하고 독립성을 관리한다. 이 기능이 없으면 각 프로세스는 자신 이외의 프로세스가 사용하고 있는 메모리 영역 범위를 파악해야 하므로 에플리케이션 개발이 매우 어려워진다.

1-2-4. 네트워크 스택

네트워크를 관리한다. (6장에서 자세히)

1-2-5. 파일 시스템 관리

물리 디스크에 기록된 데이터는 '0101110...'과 같은 숫자의 집합이다. 숫자의 집합을 '파일'이라는 단위로 데이터를 작성하거나 삭제할 수 있도록 해주는 것이 파일 시스템 관리 기능이다. 흔히 '문서 파일'이나 '엑셀 파일'이 파일에 해당한다. 주요 관리 기능은 폴더 구조 제공, 액세스 관리, 고속화, 안정성 향상 등이다.

1-2-6. 장치 드라이버

디스크나 NIC 등의 물리 장치용 인터페이스를 제공한다. NIC나 디스크는 다수의 제조사가 독자 제품을 제공하는데 각각에 맞는 애플리케이션을 개발하는 것은 비현실적이기 때문에 각 제품은 OS와 호환가능한 장치 드라이버를 제공한다. 따라서 해당 OS의 표준 장치로서 커널을 경유해 장치들을 이용할 수 있다.

2. 3계층형 시스템의 웹 데이터 흐름

클라이언트 PC부터 웹서버, AP서버, DB서버를 경유해서 다시 역순으로 데이터를 가져오기까지의 과정을 보여준다.

2-1. 클라이언트 PC부터 웹 서버까지

클라이언트 PC에서 웹 브라우저를 실행하면 웹 브라우저가 사용자의 동작에 맞춰 요청을 발행한다. 브라우저에서 주소를 해석하고 웹 서버가 요청을 접수한다. 웹 서버가 정적 콘텐츠인지 동적 콘텐츠인지 판단해서 필요한 경로(서버 등)로 데이터에 액세스한다.

2-2. 웹 서버부터 AP 서버까지

웹 서버로부터 요청이 도착하면 스레드가 요청을 받는다. 스레드는 자신이 계산할지, DB 접속이 필요한지 판단한다. DB 접속시 필요하면 연결 풀에 액세스하고 DB 서버에 요청한다.

2-3. AP 서버부터 DB 서버, 다시 AP 서버까지

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

2-4. DB 서버의 작업분담과 외부 저장 장치에 액세스 및 요청

2-5. AP 서버부터 웹 서버까지

DB 서버로부터 받은 데이터를 AP 서버의 스레드가 계산 등을 한 후에 파일 데이터를 생성한다. 그 결과를 웹 서버로 반환한다.

2-6. 웹 서버부터 클라이언트 PC까지

AP 서버로부터 데이터가 도착한다. 프로세스는 받은 데이터를 그대로 웹 브라우저로 반환하면 화면에 표시된다.

웹 데이터의 흐름을 정리하면 다음과 같다.

  1. 프로세스나 스레드가 요청을 받는다.
  2. 도착한 요청을 파악해서 필요에 따라 별도 서버로 요청을 보낸다.
  3. 도착한 요청에 대해 응답한다.

성능문제 이슈 원인

기본적으로 각 서버는 '문을 열고 기다리고 있는 상태'이다. 따라서 어느 정도의 요청이 올지는 실제 요청이 오기 전까지는 알 수 없다. 그렇기 때문에 성능문제 이슈가 발생하는 것이다.

가상화는 블록체인에서도 자주 접할 수 있다. 또한 OS도 가상화 기술의 하나이다. 가상화 기술은 내용이 길어질 것 같아서 다음 #46 챕터에서 다뤄보겠습니다.

profile
바로 하자, Right Now!

0개의 댓글