No existe una regla mágica o un algoritmo simple que le permita elegir exactamente la infraestructura adecuada para todas sus necesidades de hardware / software (este no es un problema exclusivo de AWS). La estrategia habitual es usar algo como el siguiente árbol de decisión:
1) ¿Tiene suficiente experiencia para conocer las características exactas necesarias para el estado deseado? En caso afirmativo, impleméntelos y vaya al paso (3). Si no, vaya al paso (2).
2) Realice algunos cálculos al final del sobre para satisfacer sus requisitos de hardware. Esto significa mirar las tasas de solicitud, los patrones de tráfico, la utilización esperada de recursos por solicitud y luego extrapolar. Elija hardware basado en estas estimaciones. Ve a (3).
- ¿Qué es mejor para el lado del cliente de una red social, solo JavaScript o con Backbone.js, y por qué?
- ¿Hay alguna alternativa más fácil a CodeWars que sea compatible con Ruby?
- ¿Qué es resolver en AngularJS?
- Cómo cambiar de carrera y convertirse en desarrollador Front End
- ¿Cuál es la forma más económica de ir a un sitio web?
3) Monitoree su aplicación y determine cómo está funcionando. Esto le permitirá ajustar las “cosas” necesarias. Por lo tanto, si observa que el uso de la memoria está aumentando, puede optar por obtener cuadros con más memoria o volver a diseñar partes de su aplicación. Siga haciendo esto (es decir, vaya a (3)) mientras su aplicación está en estado estable. Si algo cambia drásticamente (aparece en Wired, desea agregar muchas más funciones), vaya al paso (1).
Algunas cosas que puedo decirte para tu caso de uso exacto:
- 2k visitantes únicos por día son pequeños . Aquí no estás pisando exactamente un territorio nuevo, por lo que no hay razón para que no puedas tener una aplicación sólida como una roca si planeas con anticipación e inviertes tiempo en la infraestructura.
- La mitad del tiempo probablemente tenga un cuello de botella en E / S y acceso a la base de datos de todos modos. Por lo tanto, sus núcleos, ram, etc. en su instancia EC2 no son realmente relevantes.
- El mejor consejo de optimización que puedo darle para EC2 es que si nota que su CPU se está disparando de manera extraña o está obteniendo un comportamiento inesperado, y este es un gran problema para usted, lo más probable es que su VM esté colocada en una caja con otra VM, y el hipervisor Xen les está dando más prioridad periódicamente. Esta es una realidad para casi todos los hosts compartidos, virtuales o no. La mejor manera de evitar esto en EC2 es obtener las instancias más gordas posibles (instancias extragrandes) para que no haya una ubicación conjunta. EC2 siempre mantendrá solo una instancia Extra-Large en un host en particular: es * efectivamente * una caja dedicada.
- Pero tenga en cuenta que todavía está virtualizado, por lo que aún incurrirá en los gastos generales asociados con el hipervisor al ejecutar su aplicación.
- Evitar EBS. Solo … evítalo. (A menos que * realmente * lo necesite). Ha sido una gran fuente de consternación para mucha gente. Use almacenamiento efímero, S3 y CDN (CloudFront) cuando sea posible.
- Tu tiempo es valioso. El hardware es barato en comparación (hasta cierto punto), por lo que a veces arrojar máquinas a un problema * es * la mejor manera de hacer las cosas.