문제

그래서 저는 최신 Stackoverflow 팟캐스트(에피소드 19), Jeff와 Joel은 웹 사이트 성장에 따른 서버 하드웨어 확장에 대해 약간 이야기했습니다.Joel이 말한 바에 따르면 처음 몇 단계는 매우 표준적입니다.

  1. 웹 서버와 데이터베이스를 모두 실행하는 서버 1대(현재 Stackoverflow 설정)
  2. 하나의 웹 서버와 하나의 데이터베이스 서버
  3. 로드 밸런싱된 웹 서버 2개와 데이터베이스 서버 1개

하지만 그들은 다음에 일어날 일에 대해 많이 이야기하지 않았습니다.웹서버를 더 추가하시나요?다른 데이터베이스 서버?중복성을 위해 이 3개 시스템 클러스터를 다른 데이터 센터에 복제하시겠습니까?하드웨어 부서에서 웹 스타트업은 여기서 어디로 가는 걸까요?

도움이 되었습니까?

해결책

"평균" 웹 애플리케이션을 지원하는 합리적인 설정은 다음과 같이 발전할 수 있습니다.

  1. 단일 결합 애플리케이션/데이터베이스 서버
  2. 다른 머신에 있는 별도의 데이터베이스
  3. DNS 라운드 로빈(가난한 사람의 로드 밸런싱)을 사용하는 두 번째 애플리케이션 서버 또는 예: 펄발
  4. 둘째, 복제된 데이터베이스 서버(읽기 로드의 경우 일부 애플리케이션 로직 변경이 필요하므로 적격한 데이터베이스 읽기가 슬레이브로 이동됨)

이 시점에서 현재 상황을 평가하면 더 나은 확장 경로를 결정하는 데 도움이 됩니다.예를 들어 읽기 로드가 높고 콘텐츠가 너무 자주 변경되지 않는 경우 캐싱을 강조하고 전용 프런트엔드 캐시를 도입하는 것이 더 나을 수 있습니다. 오징어 불필요한 데이터베이스 읽기를 방지하려면 유지 관리 방법을 고려해야 합니다. 캐시 일관성, 일반적으로 애플리케이션에 있습니다.

반면에 콘텐츠가 상당히 자주 변경된다면 아마도 좀 더 광범위한 솔루션을 선호할 것입니다.영향을 완화하는 데 도움이 되는 몇 가지 애플리케이션 서버와 데이터베이스 슬레이브를 추가로 도입하고 다음과 같은 객체 캐싱을 사용합니다. 멤캐시드 덜 휘발성인 콘텐츠로 인해 데이터베이스에 타격을 가하는 것을 방지합니다.

대부분의 사이트에서는 이것으로 충분할 것입니다. 하지만 세계적인 현상이 된다면 지역 데이터 센터에 하드웨어를 두는 것을 고려하고 지리적 로드 밸런싱과 같은 기술을 사용하여 방문자를 가장 가까운 "클러스터"로 안내하는 것이 좋습니다. ".그 시점이 되면 여러분은 정말 세밀하게 조정할 수 있는 엔지니어를 고용할 수 있는 위치에 있게 될 것입니다.

아마도 제가 생각할 수 있는 가장 귀중한 스케일링 조언은 너무 빨리 걱정하지 말라는 것입니다.사람들이 사용하고 싶어하는 서비스를 개발하고 애플리케이션을 합리적으로 견고하게 만드는 데 집중하세요.몇 가지 쉬운 초기 최적화는 데이터베이스 디자인이 상당히 견고한지 확인하고 인덱스가 설정되어 고통스럽고 미친 짓을 하지 않도록 하는 것입니다.또한 애플리케이션이 데이터를 캐시하는 방법을 브라우저에 지시하는 캐시 제어 헤더를 내보내는지 확인하세요.이러한 종류의 작업을 설계 초기에 수행하면 나중에 이점을 얻을 수 있습니다. 특히 캐시 일관성 문제를 처리하기 위해 전체 작업을 재작업할 필요가 없을 때 더욱 그렇습니다.

제가 전하고 싶은 두 번째로 중요한 조언은 다른 웹사이트에 효과가 있는 것이 자신에게도 효과가 있을 것이라고 가정해서는 안 된다는 것입니다.로그를 확인하고, 트래픽에 대한 일부 분석을 실행하고, 애플리케이션을 프로파일링하세요. 병목 현상이 발생한 위치를 확인하고 해결하세요.

다른 팁

Joel은 동일한 설정으로 두 번째 데이터 센터를 추가한 다음 각 데이터 센터에 사용자를 무작위로 할당한다고 언급했습니다.데이터 변경 사항은 기록되어 한 위치에서 다른 위치로 전송되므로 두 위치 모두 모든 데이터가 포함됩니다.

Web 2.0 Expo에서 Cal Henderson(Yahoo)이 진행한 Scalable Web Architectures Common Patterns & Approaches라는 강연은 매우 흥미로웠습니다.영상이 있는 줄 알았는데 못찾았네요.하지만 슬라이드는 다음과 같습니다.

http://www.slideshare.net/techdude/scalable-web-architectures-common-patterns-and-approaches

다음 단계는 웹 서버 클러스터(웹 팜)와 데이터베이스 서버 클러스터 시스템(복제 또는 Oracle RAC 등)이 될 것입니다.등.)

.Net 캐싱 및 사용에 관심이 있다면 다음을 살펴보십시오. 애플리케이션 캐싱 블록 엔터프라이즈 라이브러리에서(물론 위의 다른 사항과 함께 이것을 사용하십시오).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top