안정성을 위한 기술
안정성이란 ‘특정 기능을 언제든 균일한 성능으로 수행할 수 있는 특성’을 의미한다. 이를 수치화하는 방법으로는 가용성이 있다.
가용성
안정성의 정도를 나타내는 용어로는 가용성(availability), 고가용성(High Availability)이 있다.
- 가용성 : 컴퓨터 시스템이 특정 기능을 실제로 수행할 수 있는 시간의 비율
- 고가용성 : 가용성이 높음을 이야기한다. 모든 웹서비스 업체들의 중요한 목표이다.
가용성은 정상적인 사용 시간을 의미하는 ‘업타임’과 정상적인 사용이 불가능한 시간인 ‘다운타임’을 통해 계산할 수 있다.
가용성을 백분율로 표기했을 때 99.999% 이상이 ‘안정적’이라고 평가받는 시스템이다. 이 수치를 달성하면 다운타임이 1년에 5.26분, 1개월에 26.3초이다.
가용성을 높이려면 다운타임을 낮춰야 한다. 서비스가 다운되는 원인은 과도한 트래픽, 소프트웨어상의 오류, 하드웨어 장애 등 다양한 것들이 원인이 될 수 있다. 즉 모든 원인을 원천적으로 차단하기란 현실적으로 어렵다.
핵심은 문제가 발생하지 않도록 막는 것이 아닌, 문제가 발생하더라도 계속 기능할 수 있도록 설계하는 것이 중요하다. 이처럼 문제가 발생하더라도 기능할 수 있는 능력을 결함 감내라고 한다.
이중화
이중화는 ‘무언가를 이중으로 두는 기술’을 의미한다. 이는 결함 감내로 가용성을 높이기 위한 기본적이고 대표적인 기술이다.
이중화할 수 있는 대상은 서버, 네트워크 인터페이스, 스위치와 같은 물리적 장비뿐 아니라, 데이터 베이스, 웹 서버 프로그램 등 다양한 요소를 이중화할 수 있다.
이중화할 수 있는 대상은 ‘문제가 발생할 경우 시스템 전체가 중단될 수 있는 대상’이라는 공통점이 있는데, 이런 문제를 단일 장애점이라고 한다.
이중화 구성은 크게 두 가지로 나눌 수 있다.
- 액티브/스탠바이
- 한 시스템은 가동하고, 다른 시스템은 백업 용도로 대기 상태로(스탠바이) 두는 방식
- 안전하지만, 성능상의 큰 변화를 기대하기 어렵다.
- 액티브/액티브
- 두 시스템 모두를 가동 상태로 두는 방식
- 부하를 분산시켜 성능상의 이점을 볼 수 있지만, 문제가 발생하면 순간적으로 다른 시스템에 부하가 급증할 수 있어서 추가적인 문제를 발생할 수 있다.
이중화 기술은 확장될 수 있다. 바로 이중으로 두는 것이 아닌 ‘무언가를 여러 개 두는 기술’을 사용하는 것이다. 이 것을 다중화 라고 한다.
이중화/다중화의 사례로 티밍과 본딩이 있다. 이는 여러 개의 네트워크 인터페이스를 이중화/다중화하여 더 뛰어나도 안정적인 성능을 보유한 하나의 인터페이스처럼 보이게 하는 기술이다.
로드 밸런싱
서버를 다중화하였어도 해결해야 하는 문제가 있는데, 바로 트래픽 분배이다. 트래픽은 일반적으로 ‘주어진 시점에 특정 노드를 경유한 패킷의 양’을 말한다. 서버에 과도한 트래픽이 몰리면 많은 문제가 발생하며, 서버의 가용성의 떨어뜨린다. 이는 다중화를 해도 특정 서버에만 트래픽이 몰리게 되면 소용이 없어진다.
이때 트래픽을 고르게 분배하는 기술을 로드 밸런싱이라고 한다. 로드 밸런싱은 로드 밸런서에 의해 수행된다. 로드 밸런서는 L4 스위치, L7스위치라고 불리는 네트워크 장비로도 수행할 수 있고, 소프트웨어를 통해서도 로드 밸런싱을 수행할 수 있다.
로드 밸런서는 일반적으로 이중화/다중화된 서버와 클라이언트 사이에 위치한다. 클라이언트는 로드밸런서에 요청을 보내고, 로드 밸런서는 해당 요청을 각 서버에 균일하게 분배한다.
💡 헬스 체크 다중화된 서버환경에서 문제를 빠르게 감지하는 기술로, 현재 요청에 대해 올바른 응답을 할 수 있는지 주기적으로 검사하는 기술이 있다. 이 것이 헬스 체크이다. 주로 로드밸런서에 의해 이루어진다.
로드 밸런서가 서버에게 고르게 부하를 분배하는 알고리즘을 ‘로드 밸런싱 알고리즘’이라고 한다.
- 라운드 로빈 알고리즘 : 서버를 돌아가며 부하를 전달
- 최소 연결 알고리즘 : 연결이 적은 서버부터 우선적으로 전달
- 가중치 로빈 알고리즘, 가중치 최소 연결 알고리즘 : 기존 알고리즘에서 가중치를 부여하여 동작하는 알고리즘
포워드 프록시와 리버스 프록시
클라이언트와 서버 사이엔 수많은 서버들이 존재할 수 있다. 이때 클라이언트가 최종적으로 메시지를 주고받는 대상을 오리진 서버라고 한다. 클라이언트와 오리진 서버 사이에는 많은 중간 서버가 있을 수 있다.
이때 인바운드 메시지는 오리진 서버를 향한 메시지이고, 아웃 바운드 메시지는 클라이언트를 향한 메시지를 의미한다.
대표적인 HTTP 중간 서버의 유형으로 프록시와 게이트웨이가 있다. 프록시는 포워드 프록시, 게이트웨이를 리버스 프록시라고도 부른다.
프록시는 ‘클라이언트가 선택한 메시지 전달 대리자’이다. 프록시는 오리진 서버보다는 클라이언트와 더 가까이 위치하며, 캐시 저장, 클라이언트 암호화 및 접근 제한 등의 기능을 제공한다.
게이트웨이는 ‘아웃바운드 연결에 대해 오리진 서버 역할을 하지만, 수신된 요청을 변환하여 다른 인바운드 서버로 전달하는 중개자 역할’을 한다. 따라서 일반적으로 게이트웨이는 오리진 서버에 더 가까이 위치하며, 캐시를 저장할 수 있고, 로드 밸런서로 동작할 수 있다.
'도서 정리 > 혼자 공부하는 네트워크' 카테고리의 다른 글
[혼자 공부하는 네트워크] Chapter 7 - 3 무선 네트워크 (0) | 2024.08.20 |
---|---|
[혼자 공부하는 네트워크] Chapter 7 - 2 안전성을 위한 기술 (0) | 2024.08.20 |
[혼자 공부하는 네트워크] Chapter 6 실습으로 복습하는 네트워크 (0) | 2024.08.20 |
[혼자 공부하는 네트워크] Chapter 5 - 3 HTTP 헤더와 HTTP 기반 기술 (0) | 2024.08.15 |
[혼자 공부하는 네트워크] Chapter 5 - 2 HTTP (0) | 2024.08.15 |