11장. MySQL 확장하기
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
개인 프로젝트나 신생 회사에서 MySQL을 실행하는 것과 시장이 확립되어 있고 "하키 스틱 성장"을 하는 비즈니스에서 실행하는 것은 매우 다릅니다. 성장 속도가 빠른 비즈니스 환경에서는 트래픽이 해마다 엄청나게 증가하고 환경이 더욱 복잡해지며 그에 따른 데이터 요구도 빠르게 증가합니다. MySQL의 확장은 데이터의 상태 저장 특성으로 인해 다른 유형의 서버와는 매우 다릅니다. 일반적으로 로드 밸런서 뒤에 추가하는 모델이 널리 사용되는 웹 서버와 비교해 보세요.
이 장에서는 스케일링의 의미를 설명하고 스케일링이 필요할 수 있는 다양한 축에 대해 안내합니다. 읽기 확장이 필수적인 이유를 살펴보고, 쓰기 확장을 보다 예측 가능하게 만들기 위한 큐와 같은 전략을 통해 안전하게 확장하는 방법을 보여드립니다. 마지막으로, 데이터 세트를 샤딩하여 ProxySQL 및 Vitess와 같은 도구를 사용해 쓰기 규모를 확장하는 방법을 다룹니다. 이 장이 끝나면 시스템의 계절적 패턴, 읽기 확장 방법, 쓰기 확장 방법을 파악할 수 있을 것입니다.
스케일링이란 무엇인가요?
확장 ( )은 증가하는 트래픽을 지원할 수 있는 시스템의 능력입니다. 시스템이 잘 확장되는지 또는 제대로 확장되지 않는지에 대한 기준은 비용과 단순성으로 측정할 수 있습니다. 시스템의 확장 능력을 높이는 데 지나치게 비용이 많이 들거나 복잡하다면 한계에 부딪혀 이를 해결하는 데 훨씬 더 많은 노력을 기울여야 할 것입니다.
용량 은 이와 관련된 개념입니다. 시스템의 용량은 주어진 시간 동안 수행할 수 있는 작업의 양입니다.1 그러나 용량은 자격을 갖추어야 합니다. 시스템의 최대 처리량은 용량과 동일하지 않습니다. 대부분의 벤치마크는 시스템의 최대 처리량을 측정하지만 실제 시스템을 그렇게 무리하게 밀어붙일 수는 없습니다. 그렇게 하면 성능이 저하되고 응답 시간이 용납할 수 없을 정도로 커지고 변동성이 커집니다. 저희는 시스템의 실제 용량을 허용 가능한 성능을 제공하면서 달성할 수 있는 처리량으로 정의합니다.
용량과 확장성은 성능과는 별개입니다. 고속도로를 달리는 자동차에 비유할 수 있습니다:
-
시스템은 고속도로와 그 안의 모든 차선 및 차량입니다.
-
성능은 자동차가 얼마나 빠른지를 의미합니다.
-
수용 인원은 차선 수에 최대 안전 속도를 곱한 값입니다.
-
확장성은 트래픽을 늦추지 않고 더 많은 차량과 더 많은 차선을 추가할 수 있는 정도를 말합니다.
이 비유에서 확장성은 인터체인지가 얼마나 잘 설계되었는지, 얼마나 많은 자동차가 사고나 고장을 일으키는지, 자동차가 다른 속도로 주행하거나 차선을 많이 변경하는지 등의 요인에 따라 달라지지만 일반적으로 확장성은 자동차의 엔진이 얼마나 강력한지에 따라 달라지지 않습니다. 물론 성능이 중요하지 않다는 말은 아닙니다. 단지 고성능이 아니더라도 시스템을 확장할 수 있다는 점을 지적하는 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access