그림으로 공부하는 IT인프라 구조 - 2

2021. 9. 28. 15:58이론 공부

이번에도 책 "그림으로 공부하는 IT 인프라 구조" 를 이어서 정리 해보겠습니다.

 

CPU ( Central Processing Unit ) 

- 서버 중심에 위치해서 연산 처리를 진행 한다. ( 연산은 1초에 10억회 이상 수행 )

- 명령을 받아서 연산을 실행하고 결과를 반환 한다.

- 명령과 데이터는 기억장치나 입출력 장치를 통해서 전달 된다.

 

메모리

- CPU 옆에 위치하며, CPU에 전달하는 내용이나 데이터를 저장하거나 처리결과를 받는 기억 영역

- 메모리에 저장되는 데이터는 영구성이 없다. ( 서버 재시작시 사라진다. )

- 액세스 속도가 캐시에 비해 느리지만, HDD 에 비해 빠르다.

- 메모리는 다단계 구조를 가지고 각각의 액세스 속도에 맞게 사용되기 때문에, CPU의 처리 속도를 줄일 수 있다.

 

I/O (Input Output) 장치

하드 디스크 드라이브(HDD)

- 서버에서 메모리에 비해 CPU에서 떨어진 곳에 배치된다.

- 메모리에 비해 비교적 액세스 속도가 느리지만, 전기가 끊겨도 데이터가 사라지지 않는다. ( 서버 재시작시 안사라짐 )

- HDD가 직접 데이터를 교환하는 것이 아니라, 캐시를 통해서 데이터를 교환 한다.

 

네트워크 인터페이스

- 서버와 외부 장치를 연결하기 위한 것으로 외부 접속용 인터페이스

 

 

버스

- 서버 내부에 있는 컴포넌트를 연결시켜 주는 회선 이다.

 

대역

- 원래는 주파수 대역을 의미하지만, 'IT 인프라' 에서는 데이터 전송 능력을 의미 한다.

- 한번에 보낼 수 있는 데이터의 폭(전송폭), 1초에 전송할 수 있는 횟수(전송 횟수) 로 결정 된다.

 

프로세스와 스레드

- 프로그램을 설치해서 실행하면 창이 열리고, 또 실행시키면 새로운 창이 열린다. ( 같은 프로그램 2개 실행 ) 이 것을 프로세스 또는 스레드 라고 부른다.

- 프로그램 실행 파일 그 자체가 아닌, OS 상에서 실행돼서 어느 정도 독립성을 가지고 동작한다.

- 프로세스 및 스레드가 활동하려면 메모리 공간이 필요하다. 이것은 커널에 의해 메모리 상에 확보 된다.

- 각 프로세스는 전용 메모리 공간을 이용해서 동작한다. ( 프로세스 간에 메모리 공간을 공유하지 않는다 )

- 스레드는 다른 스레드와 메모리 공간을 공유하고 있는 운명 공동체다.

 

장점

- 프로세스는 개별 처리 독립성이 높다

- 스레드는 생성 시 부하가 낮다

 

단점

- 프로세스는 생성 시 CPU 부하가 높다

- 스레드는 메모리 공간을 공유하기 때문에 의도치 않은 데이터 읽기/쓰기 가 발생할 수 있다.

 

- 단, 프로세스는 메모리 공간을 공유할 수 없는 것은 아니다.

ex) 오라클DB는 여러 프로세스가 '공유 메모리 공간'을 상호 이용할 수 있도록 되어 있다.

 

OS 커널

- OS에서 커널은 심장이자 뇌이며 척수이다.

- 커널 자체가 OS의 인프라 라고 생각해도 무방하다.

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

- 커널은 여섯 가지의 역할을 한다.

 

1. 시스템 콜 인터페이스

- 프로세스/스레드 에서 커널로 연결되는 인터페이스 이다.

- 애플리케이션이 OS를 통해서 어떤 처리를 하고 싶을 때 "시스템 콜" 이라는 명령을 이용해서 커널에 명령을 내린다.

 

2. 프로세스 관리

- 언제, 어떤 프로세스가 어느 정도의 CPU 코어를 사용할 수 있는지, 처리 우선순위를 결정한다.

 

3. 메모리 관리

- 프로세스가 이용하는 독립 메모리 공간을 확보하거나 상호 간의 참조 영역을 지키기 위해 독립성 관리하는 등의 역할을 한다.

 

4. 네트워크 스택

- 해당 부분은 추후에 자세하게 다룬다고 한다.

 

5. 파일시스템 관리

- OS 기능의 하나로써 물리 디스크에 제공된 데이터를 관리하는 기능이다.

- 주요 관리기능 으로는 디렉터리(폴더) 구조 제공, 액세스 관리, 고속화, 안정성 향상 등이 있다.

 

6. 장치 드라이버

- 디스크나 NIC 등의 물리 장치용 인터페이스를 제공 한다.

- 각 장치 제조사가 OS에 대응하는 장치 드라이버를 제공해서 해당 OS의 표준 장치로서 커널을 경유해 이용할 수 있게 한다.

 

웹 데이터의 흐름

PC -> 웹 서버 -> AP 서버 -> DB 서버 -> AP 서버 -> 웹 서버 -> PC

의 순으로 데이터는 흘러 간다.

 

PC -> 웹 서버

1. 웹 브라우저가 요청을 발행한다.

2. 이름 해석을 한다.

3. 웹 서버가 요청을 접수한다.

4. 웹 서버가 정적 콘텐츠인지 동적 콘텐츠인지 판단 한다.

5. 필요한 경로로 데이터에 액세스 한다.

 

이름 해석

- 웹 브라우저는 요청한 서버가 어디에 있는지 모르기 때문에 요청한 URL 을 기반으로 DNS 서버에 해당 서버를 요청하게 된다.

 

정적 콘텐츠 / 동적 콘텐츠

- 정적 콘텐츠 : 실시간으로 변경할 필요가 없는 데이터를 가리킨다.

ex) 회사 로고 이미지 등

- 동적 콘텐츠 : 높은 빈도로 변경되는 데이터를 가리킨다.

ex) 은행 잔고, 최신 날씨 정보 등

 

웹 서버는 동적 콘텐츠에 대한 요청을 AP 서버에게 던지고 결과를 기다린다.

 

웹 서버 -> AP 서버

- AP서버는 '동적 콘텐츠'에 대한 요청을 처리한다.

 

1. 웹 서버로부터 요청이 도착한다.

2. 스레드가 요청을 받으면 자신이 계산할 수 있는지, 아니면 DB 접속이 필요한지를 판단한다.

3. DB 접속이 필요하면 연결 풀에 액세스한다.

4. DB 서버에 요청을 던진다.

※ 데이터가 필요하면 DB 서버에 접속하는게 일반적 이지만, 이것이 항상 효율적이지는 않다.

 ex) 갱신 빈도가 낮고 규모가 작은 데이터의 경우 매번 접속할 필요 없이 캐시에 저장해두고 사용하는게 좋다. 이 경우 데이터가 갱신 되었을 시만 DB 서버에 접속해서 데이터를 업데이트 하면 된다.  

 

AP 서버 -> DB 서버 -> AP 서버

- DB 서버로의 요청은 SQL 이라는 언어 형태로 이루어 진다. 이 SQL 을 해석해서 데이터 액세스 방식을 결정하고, 디스크나 메모리에서 필요한 데이터만 수집해 오는 것이 데이터베이스의 주요 역할 이다.

 

1. AP 서버로부터 요청이 도착한다

2. 프로세스가 요청을 접수하고 캐시가 존재하는지 확인한다

3. 캐시에 없으면 디스크에 액세스 한다

4. 디스크가 데이터를 반환한다

5. 데이터를 캐시 형태로 저장한다

6. 결과를 AP 서버에 반환한다

 

AP 서버 -> 웹 서버

- DB 서버에서 데이터가 돌아왔기 때문에 AP 서버의 요청 스레드로 경과가 반환된다.

 

1. DB 서버로부터 데이터가 도착한다.

2. 스레드가 데이터를 가지고 계산 등을 한 후에 파일 데이터를 생성한다.

3. 결과를 웹 서버로 반환한다.

 

웹 서버 -> PC

- AP 서버에서 돌아온 데이터를 받아서 웹 서버의 httpd 프로세스가 PC의 웹 브라우저로 반환한다.

 

1. AP 서버로부터 데이터가 도착한다

2. 프로세스는 받ㄴ은 데이터를 그대로 반환한다

3. 결과가 웹 브라우저로 반환되고 화면에 표시된다.

 

※ 구체적으로는 하나의 요청에 하나의 데이터가 반환된다.

 

데이터 흐름 정리

- 프로세스나 스레드가 요청을 받는다

- 도착한 요청을 파악해서 필요에 따라 별도 서버로 요청을 보낸다

- 도착한 요청에 대해 응답한다

 

※ 웹 데이터 흐름의 본질은 '요청 기반으로 어떠한 처리를 하고 필요에 따라 해당 요청을 삼자에게 할당하는 것'