kakasoo

부하 대응 접근 방식 본문

프로그래밍/Backend

부하 대응 접근 방식

카카수(kakasoo) 2022. 9. 12. 20:03
반응형

수직확장과 수평확장

사람들은 확장성과 관련해 용량 확장(수직 확장), 규모 확장(수평 확장) 을 말한다.

수직 확장은 좀 더 강력한 장비로 이동하는 것이고, 수평 확장은 여러 기기들로 부하를 분산하는 것을 말한다.

서로 다른 기기로 부하를 나누기 때문에 수평 확장은 다시 비공유 아키텍처라고 부르기도 한다.

단일 장비에서 수행하는 시스템이 비교적 간단하기는 하지만, 고사양 장비는 매우 비싸 대개 규모 확장을 택한다.

적절한 장비 몇 대가 다량의 낮은 사양 가상 장비, 또는 몇 대의 높은 사양 가상 장비보다 저렴하고 효율적이다.

 

탄력적 (Elastic)

일부 시스템은 탄력적(elastic)이다.

즉, 부하 증가를 감지하면 컴퓨팅 자원을 자동으로 추가할 수 있다.

탄력적인 시스템은 부하를 예측할 수 없을 경우 무척이나 유용하지만 더 복잡한 아키텍처를 만들게 된다.

 

분산 데이터시스템

다수의 장비에 상태 비저장 서비스를 배포하는 일은 상당히 간단하다.

하지만 단일 노드에 상태 유지 데이터 시스템을 분산 설치하는 일은 많은 복잡도가 추가적으로 발생한다.

이런 이유로 확장 비용이나 데이터베이스를 분산으로 만들어야 하는 고가용성 요구가 있을 때까지 단일 노드에 데이터베이스를 유지하는 것이 최근까지의 통념이다.

하지만 분산 시스템을 위한 도구와 추상화가 좋아지면서 이 통념이 적어도 일부 애플리케이션에서는 바뀌었다.

추후 대용량 데이터와 트래픽을 다루지 않는 사용 사례에서도 분산 데이터 시스템이 기본 아키텍처로 자리 잡을지도 모른다.

 

대개 대규모로 동작하는 시스템의 아키텍처는 해당 애플리케이션에 특화되어 있다.

범용적이고 모든 상황에 맞는 (one-size-fits-all) 확장 아키텍처는 존재하지 않는다.

아키텍처를 결정하는 요소는 읽기의 양, 쓰기의 양, 저장할 데이터의 양, 데이터의 복잡도, 응답시간 요구사항, 접근 패턴 등이 있다.

혹은 이 요소 중 일부 조합에 더 많은 문제가 추가되기도 한다.

예를 들어 각 크기가 1kB인 초당 100,000건의 요청을 처리하도록 설계한 시스템과 각 크기가 2GB인 분당 3건의 요청을 처리하기 위해 설계한 시스템은 서로 같은 데이터 처리량이라 해도 매우 다르다.

 

 

특정 애플리케이션에 적합한 확장성을 갖춘 아키텍처는, 주요 동작이 무엇이고 잘 하지 않는 동작이 무엇인지를 무엇인지에 대한 가정을 바탕으로 설계된다.

반응형