더북(TheBook)

6.2.3 L4 스위치 vs ADC

L4 스위치는 4계층에서 동작하면서 TCP, UDP 정보를 기반으로 부하를 분산합니다. 부하 분산뿐만 아니라 TCP 계층에서의 최적화와 보안 기능도 함께 제공할 수 있습니다. TCP 레벨의 간단한 DoS(Denial of Service) 공격을 방어하거나 서버 부하를 줄이기 위해 TCP 세션 재사용과 같이 보안과 성능을 높여주는 기능도 함께 제공할 수 있습니다.

▲ 그림 6-3 L4 스위치의 서버 성능 향상 기법. TCP Reuse, Connection Pooling

ADC는 애플리케이션 프로토콜을 이해하고 애플리케이션 내용에 대한 분산, 리다이렉션, 최적화를 제공해 L4 스위치보다 더 다양한 기능을 사용할 수 있습니다.

ADC는 성능 최적화를 위해 서버에서 수행하는 작업 중 부하가 많이 걸리는 작업을 별도로 수행합니다. 그 중 하나가 이미지나 정적 콘텐츠 캐싱(Caching) 기능입니다.

▲ 그림 6-4 ADC의 성능 최적화: 캐싱 기능

웹 서버에는 콘텐츠 압축 기능이 있지만 ADC에서 이 역할을 수행해 웹 서버의 부하를 줄일 수 있습니다. ADC는 하드웨어 가속이나 소프트웨어 최적화를 통해 이런 부하가 걸리는 작업을 최적화하는 기능이 있습니다.

▲ 그림 6-5 ADC의 성능 최적화: 압축 기능

최근 SSL 프로토콜을 사용하는 비중이 늘면서 웹 서버에 SSL 암복호화 부하가 늘고 있습니다. 개인정보 보호를 위해 개인정보가 전달되는 일부 페이지에서만 SSL을 사용해왔지만 보안 강화를 위해 웹사이트 전체를 SSL로 처리하는 추세입니다. ADC에서는 SSL의 엔드 포인트로 동작해 클라이언트에서 ADC까지의 구간을 SSL로 처리해주고 ADC와 웹 서버 사이를 일반 HTTP를 이용해 통신합니다. 대부분 이런 기능을 사용할 때는 웹 서버 여러 대의 SSL 통신을 하나의 ADC에서 수용하기 위해 ADC에 전용 SSL 가속 카드를 내장합니다.

▲ 그림 6-6 ADC의 성능 최적화: SSL 오프로딩(SSL Offloading)

참고

시스템 확장 방법: 스케일 업과 스케일 아웃

서비스를 운영하다보면 시스템 하나로 모든 서비스를 감당할 수 없을 만큼 성장하는 경우가 생깁니다. 데이터 양이 늘거나 CPU나 메모리 사용량이 늘어 서버 하나로 서비스가 불가능해지면 시스템을 확장해야 합니다. 이때 시스템을 가장 쉽게 확장해 서비스 용량을 키우는 방법은 스케일 업입니다. 스케일 업은 기존 시스템에 CPU, 메모리, 디스크와 같은 내부 컴포넌트 용량을 키우거나 이것이 불가능할 경우, 새로 더 큰 용량의 시스템을 구매해 서비스를 옮기는 방법입니다. 하지만 스케일 업이 가능한 요소나 서비스가 있고 그렇지 않은 경우가 있습니다. 파일 저장소인 디스크는 어느 정도까지는 쉽게 확장할 수 있지만 CPU, 메모리를 확장하기는 쉽지 않습니다. 애초에 스케일 업을 고려해 CPU 여러 개를 꽂을 수 있고 메모리 뱅크를 많이 가진 보드를 구매해야 하는 데 이 경우, 초기 투자비용이 커집니다.

▲ 그림 6-7 스케일 업 비용과 성능곡선

스케일 업은 확장을 미리 고려해 시스템을 구축하면 초기 비용이 커지고 서비스에 적합한 시스템을 구매하면 확장이 필요할 때 기존 시스템을 버리고 더 큰 시스템을 새로 구매하므로 기존 시스템 비용이 낭비되는 문제가 있습니다.

그 외에도 스케일 업은 필요한 용량만큼 시스템을 늘리는 데 비용이 기하급수적으로 증가하는 문제가 있습니다. 저가형 CPU보다 성능이 2배 우수한 CPU는 저가형 CPU 2개 비용이 아니라 4배 또는 많으면 10배 이상의 비용이 필요합니다.

이런 문제들 때문에 가능하면 스케일 아웃을 이용해 시스템 용량을 높입니다.

▲ 그림 6-8 시스템 확장 방법: 스케일 업, 스케일 아웃

스케일 업은 시스템 하나의 용량 자체를 키우지만 스케일 아웃은 같은 용량의 시스템을 여러 대 배치합니다. 사용자 천 명의 요청을 처리하는 시스템이 한 대 구동된다면 5천 명을 위해서는 5대의 시스템을 병렬로 운영하는 방법입니다. 물론 스케일 아웃을 위해 새로 시스템 설계를 하거나 분산을 위한 별도의 프로세스를 운영하거나 로드 밸런서와 같이 부하를 분산해주는 별도의 외부 시스템이 필요합니다.

확장과 반대로 잘 운영되던 서비스에 사용자가 줄면 시스템을 축소시켜야 하는데 이 경우에도 두 가지 방법이 있습니다.

▲ 그림 6-9 시스템 축소 방법 - 스케일 다운과 스케일 인

스케일 다운은 기존 시스템보다 작은 용량의 시스템으로 서비스를 옮기는 방법이고 이는 스케일 업의 반대 개념입니다. 스케일 아웃의 반대 개념은 스케일 인으로 여러 개의 서비스를 합쳐 하나의 시스템에서 운영하는 방법입니다. 기존에 웹 프런트엔드 서버, API 서버, 백엔드 API 서버, 데이터베이스로 4개 시스템이 운영되던 것을 프런트엔드, API 서버를 통합하고 백엔드 API 서버와 데이터베이스를 통합해 2대의 시스템으로 축소할 수 있습니다. 이것을 스케일 인이라고 합니다.

시스템 확장 방법인 스케일 업과 스케일 아웃의 장.단점을 비교하면 다음과 같습니다.

▼ 표 6-1 시스템 확장 방법인 스케일 업과 스케일 아웃의 장.단점 비교

 

스케일 업(Scale-Up)

스케일 아웃(Scale-Out)

설명

하드웨어 성능 자체를 업그레이드하거나 더 높은 성능의 시스템으로 마이그레이션하는 방법

여러 대의 서버로 로드를 분산하는 방법. 서비스 자체를 구분해 나누거나 같은 서비스를 분산해 처리하는 방법이 있다.

장점

부품을 쉽게 추가할 수 있으면 시스템 설계 변경 없이 서비스 사용량을 쉽게 늘릴 수 있다(주로 기존 대형 유닉스 시스템에서 사용함)

스케일 업 방식보다 더 적은 비용으로 시스템 확장이 가능하다.

여러 대의 시스템에 로드를 적절히 분산해 하나의 시스템에 장애가 발생하더라도 서비스에 미치는 영향이 없도록 결함허용(Fault Tolerance)을 구현할 수 있다.

단점

부품 추가가 어렵다(최근 x86), 시스템이 커질수록 비용이 기하급수적으로 증가한다.

스케일 아웃을 위해 별도의 복잡한 아키텍처를 이해하고 운영해야만 할 수 있다. 프로세스나 네트워크 장비가 추가로 필요할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.