본문 바로가기

카테고리 없음

[TIL] 난이도 급상승

반응형

오늘은 저번 팀프로젝트를 마치고 이제 심화에서 또 플러스가 된 난이도를 경험중이다.. 강의를 1차로 한번 가볍게 들었는데 도대체 

 

무슨 내용인지 감이 잘 잡히지 않는다.. 이론으로는 알아도 실습에서 이해하는 것은 또 다른 부분이라는걸 또 깨닫는다.

 


 

오늘 학습한 내용

 

기획이든 개발이든 총체적으로 어떠한 서비스나, 게임 등등을 만들었을때 1차 목표는 많은 사용자를 확보하는 것이다. 풀이 늘어야 돈이 되니까. 굉장히 직관적이다.

 

그런데 이때 서버의 크기는 한정적인데 사람이 엄청나게 몰리게 되면 어떻게 될까? 당연히 펑 하고 터질 것이다. 가끔 볼 수 있는 서버가 다운되는 현상이 여기에 속한다고 볼 수 있다.

 

그래서 서버 개발자는 안정적인 서버를 구축해놔야하고 안정성을 높이기 위한 방법으로 물리적 장비나 프로그램 등을 여러 개 두는 기술은 이중화와 다중화, 트래픽을 고르게 분산하는 기술인 로드 밸런싱을 사용하기도 한다.

 

서버의 안정성을 어떤 자료를 토대로 알 수 있을까?

 

서버의 안정성을 수치화해서 나타낸 것이 바로 가용성이라는 지표이다. 가용성이란 컴퓨터 시스템이 특정 기능을 실제로 수행할 수 있는 시간의 비율을 의미한다. 다시 말해 서버든 네트워크든 정상적으로 돌아가는 시간을 말하는 것이다.

 

즉, 우리는 가용성이 높은 상태, 고가용성을 확보해야한다.

 

 

1. 이중화

이중화란 대상을 말 그대로 2개로 둔다고 이해하면 편하다. 

이중화 할 수 있는 대상은 대부분 문제가 발생할 경우 시스템 전체가 중단될 수 있는 대상이라는 공통점이 있다. 이를 단일 장애점(Single Point Of Failure, 이하 SPOF)이라 부른다. SPOF는 최대한 없애는 것이 좋으며 가용성을 높이기 위해서는 SPOF를 이중화하는 것이 좋다.

하지만 2개를 두는 것 자체가 운영 상 부담이 될 수 있기에 트레이드 오프를 고려하여 선택해야한다.

 

이중화의 구성방식에는 2가지가 있는데 액티브/스탠바이, 액티브/액티브가 있다.

 

액티브/스탠바이: 한 시스템은 가동하고, 다른 시스템은 백업 용도로 대기 상태로 두는 방식

  - 안전한 방식이지만 하나의 장비 사용 시 큰 변화 기대x

  - 예비된 스탠바이 시스템으로 자동전환되는 페일오버 기능

 

액티브/액티브: 두 시스템 모두를 가동 상태로 두는 구성 방식을 의미

  - 부하 분산 가능, 성능상으로 이점 발생

  - 한 시스템에 문제가 발생 시 다른 시스템에도 부하가 급증할 위험이 있음

 

 

2. 로드밸런싱

서버를 다중화했더라도 아직 해결해야 할 문제가 있는데 바로 트래픽 분배이다. 트래픽은 서버의 가용성에 큰 영향을 끼치는 요소로, 트래픽의 사전적 정의는 주어진 시점에 네트워크를 경유한 데이터의 양이지만, 일반적으로 트래픽 측정은 노드에서 이루어지므로 주어진 시점에 특정 노드를 경유한 패킷의 양을 트래픽이라고 볼 수 있다.

 

즉, 트래픽을 고르게 분배하기 위해 로드 밸런싱이라는 기술이 필요하다. 로드 밸런싱은 부하를 의미하는 단어인 로드와 균형 유지를 나타내는 단어인 밸런생이 합쳐진 단어로 로드 밸런서에 의해 이루어진다.

로드 밸런서는 L4 스위치, L7 스위치라 불리는 네트워크 장비로도 수행할 수 있지만, 로드 밸런싱 기능을 제공하는 소프트웨어를 설치하면 일반 호스트도 로드 밸런서로 사용할 수 있게 된다.

 

로드 밸런서는 일반적으로 이중화나 다중화된 서버와 클라이언트 사이에 위치하며, 클라이언트들은 로드 밸런서에 요청을 보내고, 로드 밸런서는 해당 요청을 각 서버에 균등하게 분배한다.

 

다중화된 서버 환경에서 문제가 발생할 경우 빠르게 체크를 하는 것도 중요한데 이를 헬스체크라고 이며 이도 로드 밸런서에 의해 이루어지는 경우가 많다. 

추가로 로드 밸런서가 요청을 전달할 수 있는 서버가 여러 개 있을 경우, 어떤 서버에 요청을 해야 적절할지에 대한 알고리즘을 로드 밸런싱 알고리즘이라 부르며, 부하분산이 균등하게 이루어지도록 해준다.

단순히 서버를 돌아가며 선택하거나, 연결이 적은 서버부터 우선적으로 선택하거나, 단순히 무작위로 선택하거나, 해시라는 자료 구조를 이용하여 선택하거나, 응답 시간이 가장 짧은 서버를 선택하기도 한다.

반응형