¿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 realmente bueno en todos los aspectos teóricos de CS, pero no soy bueno en programación. ¿Qué debo hacer?

¿Qué puedo esperar de una entrevista técnica de desarrollador web junior (sin pizarra o codificación)?

¿Puede un chico que no es CS (ingeniería química) aspirar a una carrera en la industria del software? Estoy realmente interesado en el desarrollo de software.

¿Cuál es la diferencia entre una biblioteca y un paquete?

¿Qué se espera de un ingeniero front-end en una empresa web de alta tecnología?

¿Contratar programadores promedio es peor que quedarse solo?

¿Cuál es la rutina diaria normal de un desarrollador de software promedio en Google?

Quiero crear o hacer un prototipo para un proyecto de software que sea muy similar al proyecto de presa para el seguimiento de computadoras portátiles. Cuales son los pasos?

¿Qué institución de capacitación específica capacitará sobre cómo obtener trabajo de software?

Cómo familiarizarme con Unix / Linux, especialmente el terminal, si planeo trabajar en la industria del software

¿Cuáles son algunas bibliotecas Java de código abierto para construir un software de captura de datos faciales de biometría y cámara web?

¿Cuáles son las similitudes y diferencias entre Bootstrap y Polymer?

¿Cómo debo ordenar un archivo que no cabe en la memoria?

¿No debería el liderazgo ágil recalibrar las pruebas como un pensamiento crítico sobre el software en lugar de la idea de que algo no funciona como se esperaba?

¿Son los ingenieros de software los trabajadores de cuello azul, frente a los gerentes de producto de cuello blanco?