¿Cuáles son los principales problemas de escala relevantes para la ingeniería de software?

Un par de publicaciones relevantes e interesantes están a continuación:

De 0 a $ 100 mil millones: infraestructura de escala y flujo de trabajo en Adyen

Aprenda a dejar de usar cosas nuevas y brillantes y ame MySQL

En esencia, ambos argumentan (entre otras cosas) que un problema con el que se encuentran muchas empresas ambiciosas es estar demasiado ansiosos por adoptar las últimas soluciones, incluso cuando no son necesarias. Desde el primer post:

Muchos equipos de desarrollo están ansiosos por adoptar el software más reciente y brillante. Pero cuando la adopción de soluciones complejas se ejecuta sin control, las cosas tienden a romperse. Y si su pila se basa en esta filosofía, las posibilidades de que todo se incendie simultáneamente aumenta dramáticamente. No seas ese tipo a las 3 de la mañana mirando un mensaje de error misterioso mientras los clientes descontentos abarrotan tu bandeja de entrada.

En cambio, aconsejan adoptar soluciones que tengan la combinación correcta de madurez y complejidad, como se ve en el gráfico a continuación, donde la zona verde se considera “segura”.

Divulgación: trabajo para Adyen.

  1. Escalabilidad del rendimiento hay varios tipos y cada uno requiere un tipo diferente de arquitectura del sistema.
    a) Escalado en un sistema simplemente agregando más memoria, CPU más rápida, disco más rápido, etc. (escalabilidad muy limitada)
    b) Escalado mediante la adición de múltiples CPU o núcleos (requiere una aplicación multiproceso)
    c) Escalar agregando más máquinas en una red posiblemente en un equilibrador de carga (esto es escalabilidad infinita)
  2. Escalabilidad funcional, este tipo de escalabilidad le permite agregar más capacidades fácilmente.
    a) escalado funcional debido a la ocultación de información (requiere diseño orientado a objetos)
    b) escalar a través de meta programación, (requiere un esquema altamente normalizado y / o metacódigo que se pueda configurar de diferentes maneras)
  3. Escalabilidad de la implementación No olvides esto especialmente si estás en 1.c arriba, esto requiere un diseño de implementación bien diseñado
  4. Escalabilidad de programación Esto permite que un gran número de programadores trabajen juntos en una sola aplicación. Esto requiere buenas prácticas de ingeniería de software y una buena gestión de ingeniería.

More Interesting

Soy un programador profesional. ¿Debo volver y terminar la universidad?

¿Cuál es la diferencia entre los servicios de prueba de software y los servicios de prueba de rendimiento?

¿Es cierto que cada ingeniero de software gana más de un lakh en India?

¿Puedes aprender programación / ingeniería de software gratis en casa y aún así conseguir un trabajo en una empresa líder en Silicon Valley (por ejemplo, Google) sin un título universitario?

Si solo puedo hacer un curso, ¿debo hacer el proyecto de ingeniería de software o los sistemas de bases de datos?

¿Qué es una carrera en pruebas de software?

¿Cómo se hace el software del mundo real como Adobe Photoshop, MS Office, etc.?

¿Cómo haría para crear un nuevo software empresarial para un sistema escolar (calificar, asignar HW, etc., todo en línea)?

¿Existe algún software de reserva múltiple disponible que pueda integrarse en un sitio web y una aplicación? ¿Piensa en opciones como la reserva de evento a lugar / servicio?

¿Qué tipo de hardware pueden solicitar los ingenieros de software de Microsoft para usar en el trabajo?

¿Cómo se organizan las bases de código en GitHub?

Cómo construir un software de alquiler de autos para una compañía de agregación de taxis

¿Es posible dirigir una empresa de software solo?

¿Cuál es el mejor libro para explicar conceptos de diferentes marcos como Spring, Angular, Ruby on Rails, etc.?

¿Qué es la refactorización de código y para qué se utiliza?