donaricano-btn

OSI 7계층(OSI 참조모델)


1. OSI 7계층(OSI 참조모델)?

- OSI(Open Systems Interconnection)

- 통신 규격을 만들 때 고안 되었으며 OSI 통신 기능 7개의 계층으로 나눈 것이다

- OSI 자체는 현재 사용되지 않지만, 이 계층 구조 개념은 다양한 분야에서 공통적으로 참조할 수 있는 참조 모델로 사용된다


블로그 이미지

리딩리드

,
donaricano-btn

직렬/병렬


1. 직렬/병렬이란?    

1) 직렬

- 1차선 도로라고 생각하면됨

2) 병렬

- 다차선 도로

- 다수의 CPU

(발열 문제와 소비전력문제를 해결하기 위해 제조사가 CPU 클럭 속도를 올리는 대신 코어수를 늘림)

- 다수의 서버

2. CPU

1) 병렬화

- 분담할수 있는 처리 CPU 코어를 늘리면 빨라진다

- 처리시간을 1/N 으로 감소할 수있다

2) 직렬화

- 분담할 수 없는 처리는 CPU 코어를 늘려도 빨라지지 않는다

- 하나의 CPU만 사용하므로 처리시간 변화 없다

- CPU클럭 주파수를 올리면 처리 속도 향상

3. Point

1) 직렬 처리로 속도를 올리는 데는 한계가 있다(하드웨어적 한계)

2) 병렬화를 통해 속도는 빨라지지 않지만 단위 시간당 처리량을 늘릴수 있다

- 병렬 처리에서 합류점, 직렬화 구간, 분기점이 병목 지이 됨

- 일을 분담후 다시 집약할 때 오버헤드발생, 오버헤드를 감안해서 효과가 있을 때 병렬화 한다


4. 서버에서 사용

1) 웹 서버

- 다수의 이용자가 접속 하기 때문에 복수의 프로세스가 분담해서 병렬처리

- 1프로세스 1스레도

2) AP 서버

- JVM 프로세스는 하나이지만 복수의 스레드가 병렬로 처리

- 1프로세스 4스레드

3) DB 서버

- 오라클 DB에서 클라이언트 요청을 접수하는 서버 프로세스가 클라이언트 접속 수만큼 생성

- 데이터 파일 생성시에 병목 현상이 발생, 메모리에 캐시된 갱신완료 데이터를 HDD에 기록하는 DBWR 프로세스 수를 늘려서 병렬화가능

4) CPU와 스레드

- CPU 코어를 동시에 사용하는 것은 1스레드 뿐

- 하나의 CPU 코어 밖에 없는데 아파치(웹서버) 프로세스를 아무리 늘려도 동시에 실행 되는 건 1프로세스 뿐이다

- 편의점 계산대는 하나, 직원이 여러명이여도 소용없다

블로그 이미지

리딩리드

,
donaricano-btn

From APserver to DB Server(AP서버 에서 DB서버)

1. 전체적 흐름

1) DB 서버에서는 DB프로세스가 요청을 접수

2) 이전에 사용한 정보캐시에 있다. 정보를 검색하기 위해 일단 공유 메모리 검색

3) 공유메모리에 없다면 디스크에서 읽는다, 

- 시스템 콜을 경유하여 디스크에 요청

4) 디스크의 데이터는 요청을 보낸 프로세스로 반환

5) 한번 액세스한 데이터는 메모리에 캐시 형태로 저장

- 이후 액세스 시에 재사용

6) 요청을 보낸 AP 서버로 데이터를 반환

2. DB서버

- DB 서버도 다양한 소프트 웨어가 존재한다

1) 소프트웨어 종류

a. 웹 계열

- MySQL, PostgreSQL..

b. 기업용

- 오라클 데이터베이스, SQL Server

c. RDBMS

- Key-Value Store(KVS)

2) 데이터 엑세스의 중요성

- 대부분 서버 메모리 캐시가 있는지 먼저확인

- 없으면 디스크에 엑세스해서 가져온다

3) DB 프로세스

- 웹 서버에서는 프로세스가 독립적이지만 DB 서버에서는 프로세스가 역할을 분할한다

- 예 ) 요청 받는 프로세스, 해석 엑세스 프로세스 등

- 분업화를 통해 처리를 병렬화 해서 처리량 향상

4) DB 서버의 디스크

- 실제로 DB서버 내부의 디스크는 이중화 관점에서 뒤떨어진다

- 대부분 별도의 저장장치(외부)를 따로 둔다

A. 저장장치(외부)

- 다수의 디스크가 설치

- 지금 까지의 구조와 동일하다

- 대용량 데이터에 고속 엑세스 하기위한 전용 서버와 같다


블로그 이미지

리딩리드

,
donaricano-btn

From webServer to AP Server(웹서버에서 AP서버)

- 동적 콘텐츠를 처리하는 곳이 AP서버다

1. 전체적 흐름

1) 웹 서버에서 온 요청은 NIC를 경유 해서 커널에 의해 끼어들기 처리됨

2) 스레드가 요청을 접수, 자신이 계산하면 그대로 돌려보내고 DB질의가 필요하면 여기서 대기

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

- DB접속은 드라이버를 통해서 연결 풀로 관리된다

- JVM 전체가 리소스를 관리, DB와의 접속성도 유지한다

- 사각형 하나가 하나의 접속이다

4) DB접속OS의 시스템 콜로 실행

- NIC에 대한 네트워크 통신이 이루어 진다

5) 네트워크 경유 DB 질의


2. AP서버

- 다양한 AP 서버 소프트웨어 존재기업형 시스템에서는 자바가 일반적이다

1) JVM

- 자바를 이용한 AP서버에는 JVM이 동작한다

- 하나의 거대한 프로세스 이며 스레드가 요청을 접수하는것이다


3. 데이터 접근

- 규모가 작은 데이터JVM의 내부 캐시에 저장하였다가 반환함

- 정적이고 큰 데이터만 DB서버에 질의


4. CDN

- Content Delivery Network

- 데이터 전송 전용 서버로 규모가 큰 정적 데이터 전송 시 사용

- 대부분의 웹 시스템에 사용된다

a. 하나의 시스템을 수많은 사용자가 사용

b. 대량의 데이터를 참조하는 업무가 많다

- 대량 데이터 전송에 특화되었으며 전 세계에 있는 데이터 복사본(캐시)을 배치하는 기술과 병렬 기술을 활용한것임

- 기업형 시스템은 CDN과 같은 구조가 사용되지않음

a. 하나의 시스템에 대한 사용자 수가 제한돼 있다

b. 데이터 갱신 업무가 많다



블로그 이미지

리딩리드

,