사이트가 소셜 북마킹/공유 사이트에 들어갈 때 시스템/네트워크 관리자가 걱정해야 하는 기술적인 고려 사항은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/62403

  •  09-06-2019
  •  | 
  •  

문제

내가 묻는 이유는 Stack Overflow가 슬래시 도트, 그리고 레딧됨.

첫째, 이것이 웹사이트를 구동하는 서버에 어떤 영향을 미치나요?둘째, 사이트가 가능한 한 최상의 상태로 유지되도록 시스템 관리자가 수행할 수 있는 작업은 무엇입니까?

도움이 되었습니까?

해결책

불행하게도 이러한 일이 발생하기 전에 이에 대한 계획을 세우지 않았다면 아마도 너무 늦었을 것이며 사용자는 좋지 않은 경험을 하게 될 것입니다.

확장성은 가장 먼저 즉각적인 관심사입니다.한 달에 받은 것보다 초당 더 많은 조회수를 받기 시작할 수 있습니다.첫 번째 방어선은 좋은 프로그래밍과 디자인입니다.데이터를 캐시하는 대신 요청당 데이터베이스에서 여러 번 다시 로드하는 것과 같은 어리석은 일을 하지 않도록 하세요.급증이 발생하기 전에 상당히 현실적인 부하 테스트를 수행하여 병목 현상이 있는 위치를 확인해야 합니다.

터무니없이 높은 트래픽의 경우 일부 동적 페이지를 정적 페이지로 전환하는 기능을 고려해보세요.

확장 가능한 서버 아키텍처를 갖는 것도 도움이 됩니다.공유 호스트는 일반적으로 확장되지 않습니다.단일 전용 머신은 일반적으로 확장되지 않습니다.Amazon의 EC2와 같은 것을 호스팅에 사용하면 특히 처음부터 서버 클러스터를 계획하는 경우(클러스터가 단일 컴퓨터인 경우에도) 도움이 될 수 있습니다.

다음 주요 관심사는 보안입니다.당신은 갑자기 악당들의 더 큰 표적이 되었습니다.좋은 보안 계획이 마련되어 있는지 확인하세요.이는 항상 가지고 있어야 하는 것이지만 사용량이 많을수록 더욱 중요해집니다.

다른 팁

먼저, 일어나지도 않을 일을 계획하는 데 정말로 몇 주와 수천 달러를 지출하고 싶은지 물어보세요. 만약 그런 일이 일어난다면 약 5시간 동안 지속됩니다.

가장 쉬운 해결책은 단순히 가입을 허용하는 페이지로 전환하는 좋은 방법을 갖는 것입니다.사람들이 가입하고 폭풍이 지나가면 이메일을 보낼 수 있습니다.

보다 정교한 솔루션은 신속한 확장이 가능해야 합니다.그것은 첫째로 소프트웨어 문제입니다(다른 서버의 DB에 연결할 수 있습니까, 로드 밸런싱을 할 수 있습니까).둘째, 호스팅 솔루션은 빠른 확장을 지원해야 합니다.Amazon EC2 또는 Slicehost가 떠오릅니다.두 서비스를 모두 사용하면 쉽게 새 인스턴스를 시작하고("데이터베이스를 다른 서버로 이동하자") 인스턴스를 확장할 수 있습니다("db 서버를 4GB RAM으로 업그레이드하자").

모든 데이터(세션 포함)를 db에 보관하면 여러 개의 프런트 엔드 서버를 쉽게 가질 수 있습니다.데이터베이스의 경우 일반적으로 사용 가능한 리소스가 가장 많은 단일 서버를 시도했지만 db 복제 작업을 해본 적이 없고 적어도 mysql을 사용하는 경우 꽤 어려웠기 때문입니다.상황이 개선되었을 수도 있습니다.

앱 디자이너는 확장(더 많은 코어와 더 높은 성능을 갖춘 더 큰 시스템) 및/또는 확장(여러 시스템에 워크로드 분산)에 대해 생각해야 합니다.IT 담당자는 이를 가장 효과적으로 지원하는 방법을 찾아야 합니다.네트워크는 분명히 모든 것이 그 위에 있기 때문에 가장 먼저 보는 것입니다.경계에서 시작하는 것은 일반적으로 여러 공급자가 네트워크 로드 밸런서와 중복 라우터를 제공하는 것을 의미합니다.또한 캐시플라이(cachefly)와 같은 지리적 캐싱 서비스 및 앱을 살펴볼 수도 있습니다.

병목 현상을 최대한 줄이고 싶습니다.또한 많은 작업 없이 필요에 따라 확장할 수 있도록 환경을 설계하려고 합니다.디자인 작업을 미리 수행하면 작업을 수행할 때 두통이 줄어듭니다.

몇 가지 아이디어(과거 및 현재 프로젝트에서 사용한 아이디어):성능 향상을 위해(필요한 경우) 서버 앞에 역프록시 캐싱 오징어를 배치할 수 있습니다.물론 이는 세션 키가 없고 페이지가 다소 정적인 경우에만 작동합니다(의미:한 시간에 한 번만 변경되며 개인화되지 않습니다.오징어를 사용하면 typo3과 같은 비대하고 느린 CMS를 향상할 수 있으므로 CMS의 편안함과 함께 정적 웹 사이트의 성능을 얻을 수 있습니다.

대용량 파일을 Amazon S3와 같은 외부 서비스에 아웃소싱하여 서버 대역폭을 절약할 수 있습니다.

그리고 한 달에 몇 자릿수 정도의 비용을 지출할 수 있다면 콘텐츠 전달 네트워크(Content Delivery Network)를 사용할 수도 있습니다.이를 통해 사용자를 위한 확장성, 고가용성 및 짧은 대기 시간이 자동으로 제공됩니다.물론, 귀하의 페이지는 캐시 가능해야 하므로 세션 키와 개인화된 페이지는 절대 금물입니다.신중하게 설계하고 CDN을 염두에 둔다면 최소한 사진, 비디오 및 정적 콘텐츠와 같은 일부 콘텐츠를 캐시할 수 있습니다.

다른 답변에서 언급했듯이 부하가 증가합니다.

또한 기물 파손에만 관심이 있는 지루한 사람들로부터 새로운 사용자/블로그 댓글/투표가 유입될 것입니다.이것은 완전히 익명의 댓글을 허용하는 블로그에서 대부분 문제가 되며, 여기에는 몇 가지 무서운 내용이 입력됩니다.블로그 플랫폼에는 차단하기에 충분한 스팸 필터가 있을 수 있지만 남아 있는 잔소리를 정리하려면 수동 개입이 필요한 경우가 많습니다.

확인이 이루어지지 않더라도 사용자 이름이나 이메일 주소를 요구하는 등 약간의 진입 장벽만으로도 기물 파손의 규모가 크게 줄어들 것입니다.

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