2024년 2학기/클라우드 기초

2학기 15주차 수업

윤지선 2024. 12. 11. 16:41

IT 인프라 관련 기술 – 직렬/병렬

CPU, HDD 등에서 직렬/병렬 처리

   • 서버 내외부 자원의 배치를 통한 직렬/병렬 처리

CPU, HDD 등에서의 처리

   • 직렬 처리로 속도를 높이는데 한계 발생

   • 병렬 처리로 속도가 빨라지는 것은 아니나(CPU 처리 능력 동일) 단위 시간당 처리량이 증가

   • 디스크의 읽기, 쓰기(I/O) 처리

서버 내부에서의 처리

   • 멀티 프로세스 : 다수의 웹서버 데몬(httpd)을 실행

   • 멀티 스레드 : 하나의 프로세스 안에 다수의 스레드를 이용해 병렬화

서버 외부에서의 처리

   • 부하분산을 위해 복수의 서버 배치 & 데이터 처리

 

IT 인프라 관련 기술 – 동기/비동기

동기처리

   • 서버가 일을 마칠때까지 기다림

   • 설계가 간단하고 직관적

   • 결과가 있을 때까지 아무것도 못하고 대기

   • ex) 웹페이지를 새로 고침

 

비동기 처리

   • 서버에게 일을 맡기고 다른 일을 하고 때가 되면 응답받음

   • 동기보다 복잡

   • 자원을 효율적으로 사용할 수 있음

   • ex) 웹페이지 새로고침하지 않고 데이터 로드(댓글 영역만 업데이트)

 

IT 인프라 관련 기술 – 큐(Queue)

하드웨어, OS, 데이터베이스, 애플리케이션 등 다양한 곳에서 사용

 

Queue(큐) : 대기 행렬로서 FIFO(First-In-Out) 구조를 가짐

 

사용 사례

   • CPU 처리를 기다리고 있는 프로세스나 스레드 행렬

   • 프린터 출력을 위한 대기열

   • 네트워크의 품질(QoS)을 높이기 위해 우선순위 큐 사용

 

cf) Stack(스택) : Last-In-First-Out 구조

 

IT 인프라 관련 기술 – 배열(Array), 연결리스트(Linked List)

배열

   • 같은 성질을 갖는 항목들을 순서대로 구성한 집합

   • 항목 사이에 빈틈이 없음

   • 메모리 낭비

   • 탐색이 빠르나 데이터 추가, 삭제가 느림

 

연결리스트

   • 크기가 가변적

   • 메모리 공간에 불연속적으로 데이터 저장

   • 다음 항모의 주소를 저장 & 선으로 연결한 구조

   • 탐색은 느리나 데이터 추가, 삭제가 빠름

 

IT 인프라 관련 기술 – 캐시(cache)

캐시 : 사용 빈도가 높은 데이터를 고속으로 접근할 수 있도록 조치하는 것

 

브라우저에서 요청한 페이지가 먼저 캐시에 저장되어있는지 확인

   • 캐시에 있으면 빠른 응답(cache hit)

   • 캐시에 없으면 메모리로부터 데이터를 가져오고 재사용을 위해 캐시에 저장(cache miss)

 

보통 CPU와 메모리 사이의 속도를 조절하기 위해 사용하지만, 웹서비스에서 브라우저와 웹서버 간의 속도를 조절할때도 사용.

 

IT 인프라 관련 기술 – 배타적 제어

병렬처리 환경에서 하나의 자원을 공유하는 상황에 발생

   • 공유자원(CPU, 메모리 등)에 동시 접근 시 장애 발생

   • 배타적 제어 처리 부분은 병목현상 발생

 

두 개 이상의 프로세스/스레드가 공유자원에 동시에 접근 불가

 

사례

   • DBMS에 사용되는 배타적 제어

  장점 단점
With 배타적 제어 공유 데이터를 일관성 있게 유지 병렬처리불가
W/O 배타적 제어 병렬처리로 빠르게 처리 데이터 불일치 발생
(공유데이터 동시접속)

 

IT 인프라 관련 기술 – 인터럽트(Interrupt)

프로세스 실행 중 예상하지 못한 상황이 발생했을 때, 그 일을 먼저 처리 후 원래 작업으로 복귀

 

외부 인터럽트

   • 입출력 장치 : 키보드, 마우스와 같은 입출력 장치의 입력 처리

   • 타이머 : 일정 시간 간격으로 CPU에 인터럽트 요청

 

내부 인터럽트

   • 하드웨어의 고장

   • 실행할 수 없는 명령어

   • 명령어 실행 오류

   • 사용 권한 위배

 

폴링(Polling)

- 일정한 주기로 서버와 응답을 주고받는 방식

- HTTP는 지속적 연결(Persistent Connection)이 불가능, 주기적으로 서버에 요청을 보내 업데이트

- 폴링의 주기가 짧으면 서버에 오버헤드(부담) 증가, 주기가 길면 실시간성이 떨어짐

- cf) 웹훅 : 서버에서 어떠한 작업이 수행되었을 때 해당 작업이 발생했다고 HTTP POST 방식으로 알림

 

IT 인프라 - 가용성 향상(이중화)

이중화란?

   • 시스템의 장애를 대비하는 등 안정성을 강화하기 위해 같은 시스템을 두개 이상 설치하고, 시스템 장애 시

     정상 시스템으로 전환하도록 만든 구조

 

안전성

   • 시스템이 일정한 시간동안 오류 없이 동작하는 능력 = 고가용성(High Availability)

 

이중화 대상

전원, 장치 등의 이중화

   • 독립적으로 운영되는 복수의 전원 탭 연결, UPS(정전 시에 애용하는 대규모 충전지) 활용

 

(WEB/WAS)서버 이중화

   • 물리적 서버나 가상 서버를 복수로 구성하여 한 서버가 장애가 발생하더라도 다른 서버가 서비스 제공

 

네트워크 이중화

   • 네트워크 인터페이스 카드(NIC)를 이중화하여 카드 장애 및 포트장애에 대응

   • 네트워크 장비의 장애를 대비한 이중화 ex) 같은 일을 하는 L2 혹은 L3 스위치 2개 연결

 

저장소 이중화

   • HDD 이중화 혹은 RAID 구성을 통해 디스크 이중화

 

데이터 센터 이중화

   • 자연재해를 대비해 데이터 센터 자체를 이중화

 

이중화 구현 기술

로드 밸런싱

   • L4 스위치 등을 이용해 트래픽을 여러 서버에 분산

 

클러스터링

   • 여러 서버를 하나의 시스템처럼 동작하게 만드는 기술

 

데이터 복제

   • Active 서버와 Standby 서버 간의 데이터 동기화

 

하트비트(Hearbeat) 모니터링

   • 시스템이 살아있는지 확인

   • 서버들 간에 주기적으로 상태를 확인하여 장애 감지

   • ex) 에이전트가 60초 간격으로 하트비트 메시지 전송, 정해진 시간에 하트비트 메시지가 오지 않으면 경고 및 추가조치

 

IT 인프라 - 성능향상

성능 문제의 원인 : 응답속도, 처리량

 

응답 속도(Response) : 서비스 요청에 대한 응답속도 ex) 버퍼링

   • 응답 지연이 발생 지점을 확인

   • 네트워크 성능 확인

 

처리량(Throughput) : 단위 시간 당 처리된 데이터의 양 ex) bps, Mbps

   • 컴퓨팅 리소스(CPU, 메모리 등)의 처리 능력 확인

   • 네트워크 대역폭 확인

 

병목현상(bottleneck) : 병의 목이 좁아 흐르는 수량이 제한되는 성질

   • 해결 : 원인을 파악해 시스템 성능을 높이거나(Scale UP) 병렬처리할 수 있도록 수를 늘림(Scale Out)

 

위치별 병목현상

CPU 병목현상

   • CPU를 이용하기 위해 대기 행렬이 발생(큐에 데이터가 쌓임)

   • CPU 응답이 느림

  ※ CPU 사용률이 100%라고 해서 병목현상이 발생한다는 것은 아님

 

메모리 병목현상

   • 메모리 영역 고갈

   • 동일 영역의 결합(공유 메모리에 다수가 접근)

 

디스크 I/O 병목현상

   • HDD에 읽기/쓰기 과정에서의 병목

 

네트워크 I/O 병목현상

   • 모든 트래픽을 한 개의 게이트 웨이에서 처리하면서 병목

 

애플리케이션 병목현상

   • 알고리즘의 문제로 처리량 혹은 응답속도가 낮음

   • 비효율적인 데이터베이스 접근

 

클라우드 컴퓨팅의 탄생

물리 서버를 사용하면서 비효율 탄생으로 가상화 기술 탄생

- 자원(비용)의 비효율

   • 하나의 서버에서는 하나의 운영체제와 애플리케이션을 설치/운용

   • 하드웨어는 급속히 발전함에 따라 소프트웨어 요구사항을 상회

   • 물리 서버 자원을 효율적으로 활용하기 위한 요구 등장

     ex) 자원 활용도가 너무 낮더라도 별도의 서버 구축 -> 가상화를 통해 자원분배

 

- 확장성

   • 비정기적인 트래픽(수강신청 등)에 대비하기 위해 충분한 서버 구축 필요

    -> 서버의 확장 및 축소에 리소스가 많이 투입됨 ex) 서버구입, 환경구성(인터넷 연결, OS/app 설치 등)

 

- 유지보수

   • 서버 장애시 서버 교체를 위해 서버를 OFF하고 교체하면 서비스 중단 발생

 

가상화 기술의 등장으로 자원을 효율적으로 사용할 수 있게 됨

 

가상화 기술

가상화(Virtualization)

   • 하드웨어 리소스(CPU, 메모리, 스토리지)를 논리적으로 다루는 기술

   • 서버 가상화, 네트워크 가상화, 스토리지 가상화

 

서버 가상화 장점

   • 물리 서버 하나의 리소스를 여러 개의 서버 환경으로 할당 -> 각각 OS 및 app 실행

   • 물리 서버 수를 줄여 공간 절약 및 비용 절감

   • 가상 서버 중 하나가 장애(바이러스 등)가 발생하더라도 다른 가상 서버에 영향 X

 

서버 가상화 기술

 

컨테이너 기술

컨테이너

   • 애플리케이션과 그 실행에 필요한 모든 종속성(라이브러리, 바이너리 등)을 하나로 패키징한 기술

   • cf) 서버 가상화는 하드웨어 환경을 통째로 가상화

 

등장 배경

   • 환경의 일관성 : 내 컴퓨터에서는 잘 작동했었는데..~

   • 클라우드 컴퓨팅 확산 : 신속한 배포와 확장성

   • 마이크로 서비스 아키텍쳐(MSA) : 작은 단위의 서비스들을 독립적으로 배포/관리

 

특징

   • 가상 서버보다 가상화 오버헤드가 적어 빠르게 기동/정지 가능

   • 하드웨어 리소스 사용이 적어 1대의 물리 서버에 많은 컨테이너 동작 가능

   • 컨테이너 단위로 패키징되어 클라우드 간 복제 및 이식성 우수

 

대표 컨테이너 타입 가상화 소프트웨어 = Docker

컨테이너 타입 가상화 소프트웨어 운영 관리 도구 = Kubernetes(K8S)

 

 

하이퍼바이저형 VS 컨테이너 형

 

클라우드 컴퓨팅이란?

공유 구성이 가능한 컴퓨팅 리소스(네트워크, 서버, 스토리지, 애플리케이션 서비스)의 통합을 통해 어디서나 간편하게, 요청에 따라 네트워크를 통해 접근하는 것을 가능하게 하는 모델이다. 이는 최소한의 이용절차 또는 서비스 공급자의 상호 작용을 통해, 신속히 할당되어 제공한다