본문 바로가기
Web Server

공부 정리

by Haengsin 2021. 12. 6.
RAID구성

(1) RAID 0 

- 스트라이핑(striping)

- 구성된 모든 디스크에 데이터를 똑같이 분할하여 저장하는 방식

- 2개의 Disk를 하나의 Disk 로 사용한다고 이해하면 쉽다.

- 용량 및 성능 2배

(2) RAID 1

- 미러링(Mirroring)

- 각각의 디스크에 데이터를 똑같이 복제하는 방식

- 용량은 2개를 사용할 경우 1/2 

- 읽기 작업을 할 때는 모든 디스크에서 읽어 들이기가 가능하므로 성능은 더 좋다.

- 디스크 복제가 되기 때문에 안정성이 매우 좋다.

- 즉, 1개의 Disk 가 Fail 되어도 교체만 해주면 정상 사용 가능.

(3) RAID 5

- 블록(Block) 단위로 스트라이핑(striping)

- 에러 체크 및 수정을 위한 패리티 정보를 매번 다른 디스크에 저장

- 용량 = n-1, 성능 = n-1

- 최소 3개 이상의 디스크가 필요하며 2개 이상의 디스크가 Fail되면 복구가 불가능.

 

 

On-Premise vs Cloud

(1) On-Premise

자체적으로 보유한 전산실 및 데이터센터에 네트워크 인프라 및 서버를 직접 설치하여 운영하는 방식

(2) Cloud

인터넷에 연결된 가상화 된 공간에서 네트워크 또는 컴퓨팅 자원을 즉시 필요한 만큼 사용할 수 있는 서비스 형태의 IT Infrastructure를 의미

 

 

Cloud의 장점

(1) 신속성

(2) 확장성

(3) On-Demand

: 사용자가 원하는 시점에 원하는 수요를 즉시 해결해주는 것. 서버가 필요할 때 즉시 필요한 만큼 가져다 쓸 수 있고 스케일 업과 스케일 아웃 하기도 매우 빠르고 용이하다

 

 

Public Cloud, Private Cloud, Hybrid Cloud

(1) Public Cloud

: 컴퓨팅 배포의 가장 일반적인 유형이다. 타사 클라우드 서비스 공급자가 소유하고 운영하며 인터넷을 통해 제공한다.

ex) Alibaba Cloud, AWS, Azure, GCP, IBM Cloud

(2) Private Cloud

: 조직 또는 그룹의 전용 클라우드 환경. 조직에서 독점적으로 사용되는 클라우드 컴퓨팅 리소스로 구성되고 프라이빗 클라우드는 실제로 조직의 현장 데이터 센터에 있거나 타사 서비스 공급자가 호스팅할 수 있다. 

ex) IBM, HP, VMWARE

(3) Hybrid Cloud 

: 온-프레미스 인프라(또는 프라이빗 클라우드)를 퍼블릭 클라우드와 결합하는 클라우드 컴퓨팅의 유형이다.

 

 

IaaS, PaaS, SaaS

(1) IaaS

서버(CPU, Mem 및 OS), 네트워크, 스토리지를 가상화하여 제공 받음. 즉, Network Infrastructure와 Server 리소스를 클라우드 공급자로 부터 제공 받아 직접 구성해야 함.

(2) PaaS

애플리케이션의 개발 및 실행을 위한 표준 플랫폼 환경을 서비스 형태로 제공 받음.

즉, 사용자는 Application과 Data만 올리면 된다. 예로는 ECS, EKS, RDS 등이 있다.

(3) SaaS

MS O365 같이 응용프로그램(Application)을 인터넷 및 웹 브라우저를 통해 제공 받음.

 

 

Server, VM, Docker Container

(1) Server

하나의 물리적인 서버. 하나의 OS.

(2) VM

하나의 물리적 자원(서버)을 여러 대의 논리적 시스템으로 활용하는 방안으로 하나의 하드웨어에 여러 대의 운영체제(OS)를 설치하여 자원(CPU/Memory/Disk)을 공유하는 소프트웨어 기술. 즉, 하나의 호스트 OS 위에 여러 개의 OS를 올려 사용하는 것.

ex) HyperV, VMware, VirtualBox

(3) Docker Container

VM과 유사하지만, OS를 설치하는 것이 아닌 프로세스와 자원을 격리하여 사용자 입장에서는 마치 하나의 OS 위에서 동작하듯이 Application 계층을 추상화하는 것이다. OS를 설치하고 올리는 것이 아니기에 훨씬 가볍다.

리눅스 커널의 아래 세 가지 기능을 기초로 개발되었다.

(1) chroot

root 디렉토리를 변경해준다.

(2) namespace

프로세스를 격리시킨다.

(3) cgroups

cpu, mem 등의 리소스를 격리시켜준다.

 

 

TCP, UDP

둘 모두 전송 계층에서 데이터를 보내기 위해 사용하는 프로토콜이다. 

(1) TCP

인터넷 상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜

IP가 데이터의 배달을 처리한다면, TCP는 패킷을 추적 및 관리한다.

- 연결형 서비스로 가상 회선 방식을 제공.

- 3 way handshake 과정을 통해 연결을 설정하고 4 way handshake를 통해 해제.

- 높은 신뢰성을 보장

- UDP 에 비해 속도가 느리다.

 

(2) UDP

인터넷 상에서 데이터를 데이터그램 단위로 처리하는 프로토콜

- 비연결형 프로토콜로 데이터그램 방식을 제공. 

- UDP 헤더의 Checksum 필드를 통해 최소한의 오류만을 검출

- 신뢰성은 낮지만 연속성이 높다

- 실시간 서비스(streaming) 서비스에 자주 사용됨.

 

 

3Way Handshake, 4Way Handshake

3 Way Handshake는 TCP/IP 프로토콜을 이용하여 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 세션을 수립하는 절차.

4 Way Handshake는 세션을 종료하기 위한 절차.

TIME-WAIT

B Server에서 FIN을 전송하기 전에 전송한 패킷이 Routing 지연이나 패킷 유실로 인한 재전송 등으로 FIN 패킷보다 늦게 도착하는 상황 등이 발생할 수 있다. A Client 는 이러한 현상에 대비하여 B Server로부터 FIN을 수신하더라도 일정 시간(Default 240초) 동안 세션을 남겨놓고 잉여 패킷을 기다리는 데 이 과정을 "TIME-WAIT" 상태라고 한다. 일정 시간이 지나면, 세션을 만료하고 연결을 종료시키며 "CLOSE"상태가 된다.

 

SYN-Flooding

3way handshaking 과정중 서버는 2단계 에서 (클라이언트로 부터 요청을받고 응답을 하고난후 다시 클라이언트의 응답을 기다리는 상태)  이 연결을 메모리 공간인 백로그큐(Backlog  Queue) 에 저장을 하고 클라이언트의 응답 즉 3단계를 기다리게 되고 일정 시간 (default 로 UNIX/LINUX : 60초 , Windows : 256초 , Apache : 300 초이며 수정 가능) 동안 응답이 안오면 연결을 초기화한다.

 

바로 이 점을 이용한 공격법이다.

악의적인 공격자가 실제로 존재하지 않는 클라이언트IP로 응답이 없는 연결을 초기화 하기전에 또 새로운 연결 즉 1단계 요청만 무수히 많이 보내어 백로그 큐를 포화 상태로 만들어 다른 사용자로 부터 더이상에 연결 요청을 못 받게 하는 공격 방법이다.

대응책으로는 연결 타이머 시간을 짧게 하거나 백로그 큐 사이즈를 늘리는법, 정해진 시간동안 들어오는 연결 요구의 수를 제한하는법, 쿠키(cookie)라는 것을 이용해서 전체 연결이 설정되기 전까지는 자원의 할당을 연기하는 법이 있다.

 

HTTP1.0, HTTP1.1, HTTP2.0

(1) HTTP(HyperText Transfer Protocol)

Web 상에서 정보를 주고 받을 수 있는 프로토콜. 주로 HTML 문서를 주고 받는 데 쓰인다.

- HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜이다.

- 80번 Port를 사용

- 사람이 읽을 수 있는 문자열이 그대로 전송.

 

(2) HTTP 1.0 와 HTTP 1.1 차이

- 커넥션 유지(Persistent Connection)와 파이프 라이닝(Pipeling)

: Keep-Alive가 Default로 들어가 있어 3Way Handshake를 통해 세션을 맺으면 계속 맺고 끊음을 반복할 필요 없이 세션을 종료할 때까지 요청과 응답을 주고 받을 수 있음.

: 파이프라이닝은 요청과 응답을 순차적으로 하는 것이 아니라 응답 받는 것을 뒤로 미루는 것. 

- 호스트 헤더

: 하나의 IP에 여러 개의 도메인을 운영 가능.

- 프록시 인증 가능

: Client와 Server 사이에 프록시가 사용자의 인증을 요구 가능 (HTTP 헤더, proxy-authentication과 proxy-authorization)

 

(3) HTTP 2.0

기존 HTTP는 Body가 문자열로 이루어져 있지만, HTTP 2.0 부터는 Binary framing layer 라고 하는 공간에 이진 데이터로 전송된다.

 

 

SSL, TLS

컴퓨터 네트워크에 통신 보안을 제공하기 위해 설계된 암호 규약.

TCP/IP 네트워크를 사용하는 통신 과정에서 전송 계층 종단간 보안을 확보

(1) SSL

- Netscape 사에서 개발

- SSL 3.0 까지 업데이트

- 4계층(Transport)과 7계층(Application) 사이에서 동작하는 전송 계층 보안 프로토콜

 

(2) TLS

TLS는 클라이언트/서버 응용 프로그램이 네트워크로 통신을 하는 과정에서 도청,간섭,위조를 방지하기 위해 설계되었다.

- IETF(국제 인터넷 표준화 기구)에서 SSL 3.0을 업데이트

- TLS 1.0은 SSL 3.1이라고 불리기도 했다.

- 2020년 대부분의 웹 브라우저에서 TLS 1.1 중단 (POODLE, BEAST 공격 때문)

- 현재는 TLS 1.3까지 업데이트 되었으며, 대부분 TLS 1.2 사용 중인 것으로 이해하고 있다.

 

 

IPSecVPN vs SSL VPN

VPN(Virtual Private Network)

: VPN은 두 개 이상의 물리적 네트워크(또는 장치) 사이의 인터넷/공용 네트워크를 통해 생성된 가상 네트워크

 

(1) IPSec VPN (Site-to-Site VPN)

: VPN Gateway(방화벽) 장비 2개를 서로 연결함으로써 Network 와 Network를 연결하는 VPN

 

(2) SSL VPN (Site-to-Client VPN)

: VPN Gateway(방화벽) 장비 1개와 VPN Client를 인터넷 웹브라우저를 통해 연결하는 VPN

 

 

Proxy(Forward Porxy , Reverse Proxy)

Server와 Client 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 '프록시',

그 중계 기능을 하는 것을 '프록시 서버'

- Client는 프록시 서버를 Server로 인식하고, Server는 프록시 서버를 Client로 인식

 

(1) Forward Proxy

- 일반적으로 프록시라고 말하면 포워드 프록시를 의미

- 클라이언트에서 서버로 요청하면 프록시를 거쳐서 요청된다.

- 캐시 : 첫 요청 이후부터는 동일한 요청이 들어올 경우 프록시 서버에 캐싱된 내용을 전달

- IP 우회 : 서버 측에 클라이언트의 정보를 숨길 수 있다.

 

(2) Reverse Proxy

- 실제 Server로의 직접적인 접근 차단. 외부에 노출되는 IP는 Proxy Server의 Public IP. 

- Client는 Server의 IP를 알 수 없음.

 

DDL,DML,DCL

(1) DDL

- CREATE

- RENAME

- ALTER

- DROP

- TRUNCATE

(2) DML

- SELECT

- UPDATE

- DELETE

- INSERT

(3) DCL

- GRANT

- REVOKE

(4) TCL

- COMMIT

- REVOKE

- SAVEPOINT

- SET TRANSACTION

RDB vs NoSQL

 

 

ELB(Elastic LoadBalancer) 종류

로드밸런싱은 Auto scaling의 scale out에 필수.

 

(1) ALB (Application Load Balancer)

- Layer 7 부하 분산 지원

- HTTP/HTTPS 트래픽을 처리하는 로드밸런싱에 최적화.

- HTTP 헤더 정보를 이용해 부하 분산 가능

- PATH 기반 라우팅 (URL 이나 HOSTNAME을 통해서 분배가 가능) -> Micro services, container-based application에 적합하다.

(2) NLB (Network Load Balancer)

- Layer 4 부하 분산 지원

- TCP/UDP 트래픽을 로드밸런싱 

- 패킷 단위의 로드밸런싱이기 때문에 빠르다.

(3) GWLB (Gateway Load Balancer)

게이트웨이 로드 밸런서는 3계층(Network계층, IP 기반)에서 동작.

기존의 3rd-party를 이용하여 방화벽 등을 구축하는 경우에 설계에 고려해야 하는 사항이 많은 것은 물론, 운영에 대한 복잡도 증가 및 제약 사항이 있었으나 이러한 부분들을 해소하기 위해 나온 로드밸런서,,

 

 

RDB(Relational Database) 와 NoSQL(Not Only Database)

(1) RDB

- 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스 

- 테이블 간에 외래키(FK)를 사용하여 테이블 간 JOIN을 하여 서로 관계를 맺을 수 있도록 설계한 데이터 모델

 

(2) NoSQL

- 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미.

- RDB와 달리 테이블 간 관계를 정의하지 않는다. (JOIN 불가능)

NoSQL은 점점 빅데이터의 등장으로 인해 데이터와 트래픽이 기하급수적으로 증가함에 따라 RDBMS의 단점인 성능을 향상시키기 위해 Scale-Up을 해야하는 특징이 비용을 증가시키기 때문에 데이터 일관성을 포기하되 비용을 고려하여 여러 대의 데이터에 분산하여 저장하는 Scale-Out을 목표로 등장.

'Web Server' 카테고리의 다른 글

[WEB] NginX - Tomcat 연동  (1) 2022.08.12
[WEB] HTTP 1.0 과 HTTP 1.1 그리고 HTTP 2.0  (0) 2021.12.03
[WEB] Proxy - Forward Proxy & Reverse Proxy  (0) 2021.12.02
[WEB] DNS  (0) 2021.12.01
[WEB] SSL / TLS  (0) 2021.11.27