2009-06-07 4 views
1

첫 번째 질문에 stackoverflow. 나는 높은 트래픽 웹 사이트를 운영하는 이전의 경험이 없으며 초보자와 중급 프로그래머 사이의 어딘가에 있다고 생각합니다. 부드럽게하십시오 :)
소셜 웹 사이트를 만들려고합니다. 궁극적으로는 많은 트래픽과 사용자. 그러나 개념이 확장 될지, 확장 성 프로그래밍이 기능적으로 동일한 방식으로 작동하는 일부 부적절한 코드를 치는 것과 비교하면 많은 추가 작업이라는 것을 나는 모른다. 또한, 높은 확장성에 대한 프로그래밍에 대해 상대적으로 알지 못하기 때문에 나는 많은 연구를 통해 나를 감속시키고 있습니다 (highscalability.com은 놀랍습니다 ... 현재 오프라인 대기열을 파악하려고합니다)처음부터 최적의 성능과 확장 성을위한 프로그램?

내 질문은 내가한다이다 :
A)
1. 함께 트래픽
수집에 다소 엉성한 코드, 과도한 데이터베이스 쿼리, 아니 캐시 등)
2 일 (차선하지만 기능의 일부 코드를 넣어 3. 코드 재 작성 및 재구성

또는 B)
1. 완전히 확장 가능한 디자인을 연구하고 내가 수집 트래픽 어떤 조언을 감사

에 많은
2 일을 재구성 할 필요가 없습니다 처음부터 적용 감사합니다.

답변

4

웹 개발은 지속적인 프로세스입니다. 우리는 라고 생각합니다. 우리는 처음에는 무엇을 원하는지 알지만, 우리가 거기에 도착할 때 필연적으로 바뀔 것입니다.

나는 당신이 37 개 신호 승무원에 의해 책을 얻어서 시작하는 것이 좋습니다 - 실시간 방법 : http://gettingreal.37signals.com/

믹스 A와 B는 좋은 호스팅 상황을 가져보십시오.당신이 캐시 할 수있는 방법을으로 생각하십시오 (memcache - 쉽습니다). 명확한 코드를 작성하지만 너무 많은 시간을 소비하지 마십시오 ...

"Release Early, Release Often".

-

다음은 두 개의 프로젝트에 대한 이야기입니다.

  1. 동시에 개발 됨 - 해킹 됨 - 조기에 (자주) 출시 됨. 한 달에 15,000 명의 사용자와 6,000,000 명의 조회수로 증가했습니다 (5 개월 후).
  2. "do-it-all-just-right"정신으로 개발되었습니다. 4 개월, 10 명 이상, 수만 달러가 걸렸습니다. ~ 100 명의 사용자를 뽑았습니다.

지혜 가이드 당신은 ...

+0

책의 절반 (놀랍게도 무료입니다)을 읽은 후에 나는이 대답으로 가야 할 것입니다. 감사! – Glitz

3

나는 옵션 A로 갈 것이다. 성능을 향상시키는 것보다 웹 사이트 트래픽을 생성하는 것이 훨씬 어렵다. 아이디어가 독특하다면 시장 진입시기가 주요 목표가되어야합니다. http://highscalability.com/에는 다른 사람들이 확장 성 문제를 어떻게 해결했는지에 대한 좋은 기사가 수없이 많습니다.

1

당신이 A)와 같이 들리면 제대로 작동하지 않거나 잘못 작성된 코드가 발생하지만 확장이 잘 안되며 이미 사용자가 있고 합리적인 가동 시간을 제공해야한다면 거의 다시 작성해야합니다. . 이미 교통이 악몽처럼 들리면 우선적 인 문제를 해결하십시오.

나는 분명히 B)와 같이 갈 것이다. 최적화 또는 성능뿐만 아니라 합리적인 전체 디자인을 고려하여 응용 프로그램의 아키텍처를 연구하고 계획하는 것은 중요하지 않은 소프트웨어 응용 프로그램의 필수 요소입니다.

조숙 한 최적화가 모든 악의 근원이라는 공통된 신화가 있습니다. 이것은 불필요한 최적화가 모든 악의 근원이라고 말하는 것이 더 정확할지라도 절대적으로 거짓입니다. 초보자가 실수하지 않는 부분을 최적화하지 말라. 코드가 엉망이 될 뿐이지 만 최적화가 중요한 부분을 찾는 데 시간을 할애해야한다.

트위터는 이미 트래픽이 발생했을 때 DB 디자인 선택을 잘못했다는 것을 깨닫고 거의 죽었습니다.

+0

트위터가 A와 연결되어 거의 죽였습니다. B가 경쟁을 죽였을 수도 있습니다. – Nosredna

+0

가능합니다. 캐치 종류 22 그러면 트래픽을 신속하게 처리하고 처리 할 수 ​​없으며 결과적으로 죽거나 시장에 진입하는 데 더 오래 걸릴 수 있으며 트래픽이 발생하기 전에 예산으로 타면서 죽을 수도 있습니다. 또는 트위터에 맞았다. 구글이 아키텍처와 확장성에 대해 오랫동안 열심히 생각했으며 장기적으로는 시장의 나머지 부분을 이겼다고 해두겠습니다. – thomasrutter

2

은 칼 헨더슨의 Building Scalable Web Sites이, 테오 슐로의 Scalable Internet Architectures은 물론 사이트가 이미 토드 호프의 highscalability.com 우수한 것으로 나타났습니다 공부 몇 주를 보내 보자. 최소한 (A)와 (B) 사이의 절충점을 이해하고 더 나은 결정을 내릴 수 있습니다.

Amazon Web Services 특히 EC2 (Elastic Cloud Computing) 및 S3 (Simple Storage System)을 보면서 시간을 보냅니다. 우리 회사의 그룹이 Amazon 인프라에 웹 응용 프로그램을 배포하기 만하면 실제 하드웨어에서 실행하는 것보다 훨씬 간단했습니다.

아직 초기 아이디어 단계에 있고 아이디어를 완성하고 작은 실험을 실행하려는 경우 (A) 잘 작동합니다. 그러나 전체 규모 제품으로 이어지는 소규모 시험판을 배포하려는 경우 (B) 반드시 따라야합니다.

(B) 모드로 전환하기 시작하면 AWS를 사용하여 인프라를 설정하는 데 필요한 모든 노력과 자본 지출을 절약하는 것이 좋습니다. AWS를 사용하여 저장 한 시간 중 일부를 사용하여 철저히 배우고 (B) 수업을 적용하십시오. 그런 다음 성공하면 확장 가능한 아키텍처를 통해 필요한만큼의 AWS 시스템 시간을 임대 할 수 있습니다. 성공하지 못한다면 다음 시작 아이디어 (또는 직업)에 적용 할 수있는 많은 유용한 것들을 배웠을 것입니다.

이것은 선택 사항이 아닙니다. 스케일링의 기본 원리를 이해하면 경로 (B)를 간단한 것으로 시작하면서 동시에 다음 단계로 진행하는 방법을 안다는 편안함을 얻을 수 있습니다. Danga는이 라인을 따라 매우 흥미로운 presentations을 가지고 있습니다. this one을 살펴보면 응용 프로그램 서버 시스템과 데이터베이스 시스템으로 이동 한 하나의 시스템으로 3 개의 응용 프로그램 서버와 데이터베이스 시스템으로 이동하는 방법을 알 수 있습니다.

+0

다르게 발견하지 못한 풍부한 정보 (특히 단파 프리젠 테이션)를 보내 주셔서 감사합니다. 사전에 모든 것을 읽지는 않겠지 만, 나는 확실히 돌아 다니는 훌륭한 자원입니다. – Glitz