2010-05-20 9 views
5

He estado diseñando un sitio en los últimos días y he estado investigando diferentes aspectos de escalar un sitio horizontalmente. Si las cosas van según lo planeado, en unos pocos meses (¿años?) Sé que tendría que preocuparme por escalar el sitio hacia arriba y hacia afuera, ya que los recursos que terminarían consumiendo serían enormes.¿Cuándo es un buen momento para empezar a pensar en escalar?

Entonces, esto me hizo pensar, ¿cuándo es el mejor momento para empezar a pensar y diseñar para la escalabilidad? Si comienzas demasiado pronto, podrías complicar demasiado tu diseño e imposibilitar su construcción. También podría quedar atrapado en los detalles, la arquitectura, lo que sea, y terminar sin hacer nada. Además, si lo haces funcionar, pero el sitio nunca despega, es posible que hayas desperdiciado una gran cantidad de esfuerzo extra.

Por otro lado, podría ahorrarse un montón de esfuerzo en el futuro. Diseñarlo desde la base para ser grande lo haría mucho más fácil más adelante para que crezca, con muy poca reescritura.

Sé por lo que estoy trabajando, he decidido tomar al menos algunas opciones ahora en el lado de la escala, pero no voy a hacer un cambio completo de pensamiento para hacerlo a escala completamente. Cabe destacar que he rediseñado mi base de datos desde un diseño relacional convencional a uno similar a lo sugerido en el sitio de Reddit vinculado a continuación, y voy a probar Memcache.

Entonces, la pregunta básica, ¿cuándo es un buen momento para empezar a pensar o preocuparse por la escala, y cuáles son algunos buenos diseños, consejos, etc. para hacerlo?

Un par de cosas que he estado leyendo, para aquellos que estén interesados:

http://www.codinghorror.com/blog/2009/06/scaling-up-vs-scaling-out-hidden-costs.html

http://highscalability.com/blog/2010/5/17/7-lessons-learned-while-building-reddit-to-270-million-page.html

http://developer.yahoo.com/performance/rules.html

Respuesta

1

Un bien aunque a cabo, la arquitectura sensata debería permitir usted escalará más adelante sin requerir demasiados recursos para implementar. Esto debe pensarse desde el comienzo del proyecto.

Hoy en día hay muy buenas arquitecturas y patrones de diseño empresarial de los que puede recurrir (Rails, MVC, Spring, etc.) que le permiten desarrollar software sobre una base bien establecida y bien entendida que proporciona los mecanismos necesarios para ampliar.

4

Bajo cierto punto de vista, las técnicas de escalado son bastante aceptadas y consolidadas. Entonces, en lugar de confiar en enlaces/artículos web, leí libros sobre el tema antes de comenzar el proyecto.

sugiero:

Cuestiones relacionadas