¿Qué tecnologías se necesitan para desarrollar una aplicación escalable?

Bueno, no hay una respuesta directa aquí. Elija el idioma que desee y ejecútelo. Si comienzas a profundizar en las aplicaciones más grandes, encontrarás que son una combinación de un montón de lenguajes como Java, C ++, C #, Ruby, Python, JavaScript (y todos sus muchos sabores), etc.

Así que supongo que la verdadera pregunta que quiere que se responda es: una vez que escribo mi aplicación / sitio web, ¿cómo puedo ampliarla?

Comience preguntándose qué determina la escala de una aplicación que aloja localmente en su computadora. Su computadora solo puede manejarlo ejecutando la aplicación. Eso significa que es su computadora la que está limitando su escala. Bien, entonces compras una segunda computadora que puede servir a múltiples usuarios a la vez. Genial, ahora tienes un servidor.

Pero ahora su aplicación ha crecido más allá de sus amigos, por lo que compra más computadoras para alojar su aplicación. Pero es realmente molesto tener que copiar nuevas versiones de su aplicación a cada computadora cada vez que hay una actualización. Entonces configura su computadora de desarrollo dedicada para enviar actualizaciones a cada una. Ahora tienes una granja de servidores.

Pero ahora tiene un problema, a veces una de sus computadoras falla, por lo que algunos de sus usuarios no pueden acceder a su aplicación hasta que la arregle. Para evitar esto, obtiene otra computadora, redirige todas las solicitudes de aplicaciones a ella y luego selecciona qué computadora manejará esa solicitud en función de la cantidad de recursos gratuitos que tienen disponibles sus computadoras. Ahora tienes un equilibrador de carga.

Pero espere, si alguien estuvo en una computadora un día, y luego se trasladó a otra, sus datos no están allí, todavía están en el disco de la computadora anterior. Entonces, ahora tiene que comprar algunas computadoras más con un montón de almacenamiento para alojar centralmente todos los datos. Ahora tienes una base de datos.

Oh, dispara, has crecido tanto que todas tus computadoras no pueden comunicarse entre sí a través de una red. Así que ahora tiene que comprar aún más computadoras con el único propósito de crear redes virtuales y dirigir el tráfico de red entre computadoras. Ahora tienes controladores de red.

¡Pero sigues creciendo! Y ahora ha aprendido la peor parte sobre el escalado: el hardware se rompe TODO EL TIEMPO. Las computadoras fallan, las unidades fallan, las fuentes de alimentación fallan, los interruptores de red fallan, etc. Así que ahora debe tomar todo lo que ha hecho y volver a hacerlo varias veces para crear redundancia local. También necesitará comprar más computadoras para manejar esta redundancia. Pero, ¿qué sucede si se produce un terremoto o se corta la electricidad en su ciudad? Tendrá que elegir un nuevo lugar, lejos, y volver a hacer todo esto. Ahora tienes redundancia geográfica.

Uf, está bien, creo que ahora podemos decir con seguridad que su aplicación puede manejar 100 millones de usuarios diarios. Enhorabuena, usted, señor, tiene una nube.

Su arquitecto de software (o más probablemente su equipo de arquitectos de software en este punto) tiene que descubrir cómo todas estas computadoras cumplen su función y comunicarse entre sí sin parecer. Honestamente, no importa qué idioma elijan, porque fundamentalmente, todo este sistema que ha construido no es más que computadoras individuales que ejecutan una sola copia de su aplicación. La escala proviene de la infraestructura física que construye alrededor de su aplicación y no de cómo escribe su aplicación.

Si todo esto parece increíblemente intimidante, tienes razón. El juego en la nube tiene una barrera de entrada asombrosa, y solo quedan unos pocos jugadores. Pero tiene suerte, porque estas empresas se encargarán de esta escala automáticamente. Amazon Web Services, Microsoft Azure, Google Cloud y algunos otros como IBM y Oracle tienen ofertas para encargarse de todo lo que describí anteriormente para usted.

Espero que ayude.

More Interesting

Quiero desarrollar un sistema de navegación interior que incluya la creación, edición, renderizado en teléfonos inteligentes y navegación interior de mapas interiores basados ​​en vectores. ¿Existe algún proyecto de código abierto adecuado para este propósito? ¿Cuáles son las herramientas adecuadas para comenzar?

¿Es el accidente aéreo de Egipto un ejemplo más de por qué las nuevas tecnologías no siempre son mejores?

¿Blade Runner 2049 abordará si Deckard es o no un replicante?

En nuestra era actual de tecnología, ¿es descabellado creer que la población pueda votar proyectos de ley y leyes en lugar del Congreso / Senado?

¿Qué pasa si la civilización inca no colapsó y aún existió? ¿Qué avances sociales y tecnológicos habrían logrado?

¿Hay avances recientes en la industria alimentaria?

¿Por qué debería usar proxys de Internet?

Si hiciera un hoverboard verdadero, ¿cómo lo haría subir y bajar?

¿Cuántos kilómetros por carga recorre tu aerotabla y en qué condiciones?

¿Qué no se puede fabricar en la tierra debido a la gravedad que hace que solo se pueda fabricar en el espacio?

¿Cómo tendrán los bufetes de abogados un enfoque más tecnológico para su futuro?

¿Cómo puedo encontrar una empresa que pueda fabricar un producto de tecnología portátil que se comunique con una aplicación móvil?

¿Cuándo habrá suficiente avance tecnológico para tener aviones eléctricos?

¿Qué tecnología se usa en los autos voladores? ¿Siguen la tecnología y los conceptos que se usan en los aviones y drones? ¿Los autos voladores tienen alas?

¿Qué es la interrupción financiera?