아키텍처 - 클라이언트 서버시스템
- 클라이언트와 서버간의 상호 통신
- Thin Client : 중요 데이터 처리는 서버에 맡기고 클라이언트는 단순한 역할만 수행
- Fat Client : 중요 데이터 처리는 클라이언트에서 담당하고, 서버는 단순히 데이터 취합 및 전달 역할 수행
예시1) 게임에서 방장 컴퓨터 사양이 낮으면 게임 전체가 느려짐
예시2) 주식 프로그램은 차트표기, 주가 흐름분석 등을 클라이언트에서, 필요한 주가 데이터는 서버에서 취득
아키텍처 - 3계층형 아키텍처
클라이언트 -> 웹서비스 -> 애플리케이션 -> 데이터베이스 순으로 이어짐
프레젠테이션 계층(Presentation)
- 사용자의 입력만 받음
- 웹브라우저 화면을 표시
- Apache, IIS 등
애플리케이션 계층(Application)
- 사용자 요청에 따른 업무(비즈니스 로직) 처리 실시
- ASP, PHP, JSP 등
데이터 계층(Data)
- 애플리케이션 계층의 요청에 따라 데이터 입출력
특징
- 각 계층이 분리되어 있어 효율적임(유지보수, 확장성 등)
- 서버 부하 집중 및 개선
- 클라이언트에서 업데이트가 불필요하며, 웹 브라우저만 있으면 됨
- 구조가 복잡하고, 장애 포인트가 늘어날 수 있음
3계층 네트워크 시스템의 동작(Client Web)
- 웹 브라우저가 http://www.naver.com 요청
- 해당 사이트가 어디에 있는지 이름해석(IP주소를 찾는 과정)
클라이언트는 IP주소 변환 테이블에 네이버가 있는지 확인하고, 없으면 DNS에 요청
DNS로부터 IP 주소를 획득
- 네이버의 웹 서버에 도착하면 웹 서버 데몬(httpd)프로세스가 요청을 접수함
- 정적 컨텐츠인지 동적 컨텐츠인지 판단
정적 컨텐츠면 웹 서버에서 직접 응답, 동적컨텐츠면 AP서버로 요청 전달
정적 컨텐츠 : 실시간으로 변경할 필요가 없는 고정된 데이터(회사 로고, 이미지 등)
동적 컨텐츠 : 사용자나 상황에 따라 변경되는 데이터(최신 날씨 정보, 장바구니 등)
3계층 네트워크 시스템의 동작(Web Was)
- 웹 서버로부터 요청이 도착
- 스레드가 요청을 받으면 자신이 계산할 수 있는지, DB 접속이 필요한지 판단
- DB 접속이 필요하면 커넥션 풀(connection pool)에 엑세스
Connection pool : 시간 및 자원 효율을 위해 DB 연결을 미리 여러 개 생성해 두고 필요할 때 사용
예시) 마치 키와 비슷하다 미리 만들어진 키를 바로 전달받아 사용하고 사용이 완료된 키는 Connection을 통해 반환하는 형태
3계층 네트워크 시스템의 동작(Was DB)
- AP 서버로부터 요청이 도착
- 프로세스가 요청을 접수하고 캐시가 존재하는지 확인
- 캣에 없으면 DBMS를 통해 디스크에 엑세스
DBMS : 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어(MySQL 등)
- 디스크가 데이터를 반환
- 데이터를 캐시 형태로 저장
다음번에 빠른 응답을 위해 캐시로 저장
- 결과를 AP서버로 반환
3계층 네트워크 시스템의 동작(DB → Client)
- AP 서버가 DB로부터 데이터 수신
- 스레드가 수신한 데이터로 결과 도출
- 해당 결과를 웹 서버로 반환
- 웹 서버의 프로세스는 해당 결과를 그대로 반환
- 결과가 클라이언트의 웹 브라우저로 반환되어 화면에 표시
프로그램 vs 프로세스 vs 스레드
- 프로그램
특정 작업을 수행하기 위해 작성된 명령어들의 집합
하드 디스크와 같은 저장장치에 저장된 상태(메모리에 올라가지 않은 상태)
- 프로세스(Process)
실행 중인 프로그램
독립된 메모리 공간(다른 프로세스와 독립적)
메모리에 적재된 후 CPU 자원을 할당받아 실행
멀티 프로세스 : 여러 개의 프로그램을 여러 개의 프로세스가 동시에 처리
예시) 한글,엑셀,PPT 등 동시에 동작
- 스레드(Thread)
프로세스 내에서 실행되는 작업의 최소의 단위
프로세스의 자원을 공유
병렬 처리 가능(multi-thread)
멀티 스레드 : 하나의 프로그램 내 여러 작업이 동시에 처리
예시) 한글 프로그램에서 문서작성, 오타검색이 동시에 동작
Process는 OS의 관리 대상이라는 점
OS는 프로세스 전체 목록을 가지고 있으며 이를 Process table이라고도 하는데 Unix 초창기에는 이를 array 형태로 구현이 되어있었다고 한다. 현재는 linked list 형태로 수정되었다.
프로세스를 관리한다는 것은 현재 CPU를 점유할 프로세스를 고르는 "스케줄링"에 관련된 정보와 "State", "메모리 정보", "File Descripter table", "Kernel Stack", "Process ID", "IPC" 등 모두 포함한다.
이 모든 정보를 프로세스 하나당 한개로 묶어서 관리하는 것을 PCB(Process Control Block)이라고 한다.
스탠바이형 아키텍처
- 동일한 작업을 수행하는 물리 서버를 최소 2대 설치하여 고가용성을 높이는 구조
고가용성(High Availability) : IT 시스템의 장애를 최소화해 100% 상시 접근이 가능한 상태로유지하는 능력
- 서버의 이중화 목적
부하분산 : 여러 자원이 나누어 처리하여 안정적인 서비스 제공
장애처리 : 하나의 서버가 장애가 생기더라도 다른 서버에서 서비스 제공
- Active-Active 구조
L4 스위치 등으로 부하분산하여, 1번서버 & 2번서버가 나누어 처리
- Active-Standby 구조 (Active-Passive)
1번 서버 동작(Active 상태), 2번 서버 대기(Stand by 상태)
1번 서버가 장애 발생시, 2번 서버가 즉시 Active 상태로 전환되어 서비스 제공
페일오버(Failover) : 장애 조치 기능으로 시스템 장애 발생시 다른 시스템으로 대체하여 운영
재해 대책형 아키텍처
- 화재, 지진 등의 재해로부터 대응하기 위한 구조
- 재해복구(Disaster Recovery, DR)
특정 데이터 센터에서 장애가 발생하면 지리적 위치가 다른 환경에서 업무재개
IT 인프라(HW) - 서버
- 일반 컴퓨터(PC)와 유사
전원이 이중화 되어 안정적인 전원공급
CPU, 메모리가 일반 컴퓨터보다 처리용량이 높음
타워형 서버, 랙마운트형 서버
- 각 컴포넌트는 버스(Bus)로 연결
버스(Bus) : 서버 내부의 컴포넌트들을 서로 연결하는 회선
예시) CPU와 메모리의 연결
- PClE(PCI Express)는 외부 장치와 연결되는 버스
- 가상서버(Virtual Machine, VM)
가상화(Virtualization) 기술을 통해 하드웨어 자원을 여러 개로 분할하여 각각을 개별 서버로 동작
하이퍼바이저(Hypevisor) : 가상머신 생성 및 삭제 S/W
예시) VMware, VirtualBox 등
IT 인프라(HW) - GPU서버
- GPU(Graphics Processing Unit) 서버는 일반 CPU 서버와 달리 강력한 그래픽 처리 장치를 답재한 서버
- 고성능 컴퓨팅 환경에 필수적으로 활용되고 있음
- 병렬 처리 능력
수천 개의 코어를 통한 동시 연산 처리
행렬 연산과 같은 대규모 병렬처리에 최적화
- 활용분야
인공지능 및 머신러닝
데이터 사이언스
3D 렌더링
IT 인프라(HW) - 서버랙
- 하드웨어 장비를 설치하는 장치
- 전면에는 전원버튼, HDD 등이 있음
손으로 쉽게 HDD 교체 원활
- 서버랙 규격
폭 : 19인치
1U : 4.5cm, 2U = 9cm
- 전원선 등 케이블은 랙 뒷면에서 연결
IT 인프라(HW) - 스토리지
- 컴퓨터에 데이터를 저장하는 저장소의 역할
RAID : 고가용성과 고성능, RAID 0(스트라이핑), RAID(미러링) 등
- 스토리지 종류
DAS(Direct Attached Storage)
저장 장치가 호스트에 직접 연결되어 사용 및 관리
예시) USB 사용 외장하드
NAS(Network ATTached Storage)
스토리지를 네트워크에 부착하여 사용(데이터 공유 방식)
확장성, 유연성이 뛰어남, 접속 증가시 성능저하
SAN(Storage Area Network)
스토리를 전용 네트워크로 구성하여 사용(고속, 고품질 환경)
광채널 스위치로 연결(SAN 전용 스위치 필요)
종류 : FC-SAN(광통신), IP-SAN(IP 통신)
IT 인프라(HW) - 스토리지(데이터 저장 방식)
- 블록(Block) 스토리지
데이터를 일정한 크기의 블록으로 나누어 저장
정형화된 데이터를 빠르게 처리하는 용도
SAN 또는 가상머신의 디스크로 사용
- 파일(File) 스토리지
파일과 폴더의 계층구조로 이루어진 방식
가장 일반적으로 익숙한 방식(윈도우 탐색기)
데이터가 많아지면 파일과 폴더를 찾는 리소스 소모 → 성능저하
- 오브젝트(Object) 스토리지
오브젝트(비디오, 오디오, 텍스트 등)라는 개별 데이터 단위로 저장
평면 구조로써 접근이 쉽고 확장성이 높음
IT 인프라(HW) - 운영체제
- 컴퓨터 하드웨어와 사용자 및 소프트웨어를 연결해주는 스프트웨어
컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공
최대 성능을 내며 컴퓨팅 리소스를 효율적으로 관리
- 응용 프로그램 : 웹 브라우저, 오피스, 한글, 웹 서버 등
- 유틸리티 : 컴퓨터를 분석, 구성, 최적화, 유지관리 하는 시스템 소프트웨어
- 커널 : 운영체제의 핵심
- 시스템 호출 : 프로세스가 커널에 처리를 요청하는 방법
프로세스 : 실행 중인 프로그램
- 드라이버 : 하드웨어 장치를 운영체제와 연결하는 소프트웨어
- 종류 : 유닉스, 리눅스, 윈도우
'클라우드 기초' 카테고리의 다른 글
| 클라우드 기초 15주차 (0) | 2024.12.12 |
|---|---|
| 클라우드 기초 2주차 (0) | 2024.09.12 |
| 클라우드 기초 1주차 (0) | 2024.09.05 |