1 de febrero de 2008

Optimización de sistemas (I)

Voy a empezar una serie de artículos sobre como optimizar un sistema para obtener un alto rendimiento.

Uno de los mayores problemas a la hora de optimizar un sistema es que las mayores optimizaciones se hacen en el nivel de diseño, es decir, antes de tirar ninguna línea de código. El mejor consejo en este punto es "elige una arquitectura adecuada".

Puede parecer de perogrullo, pero he visto cosas bastante flagrantes, como realizar cálculos batch sobre bases de datos accediendo a ellas con JDBC, cuando unos pocos scripts de PL-SQL hubieran solucionado la papeleta y hubieran evitado el cuello de botella del transporte por red.

Quizá, los consejos más importantes que se pueden dar antes de empezar una aplicación para lograr un alto rendimiento son los siguientes:

  1. Elige las tecnología adecuadas para la naturaleza del proyecto.
  2. Minimiza la Entrada / Salida de la aplicación (en este punto puede entrar un buen diseño de mecanismos de caché)
  3. Identifica partes de la aplicación que se puedan ejecutar en segundo plano, y cuyo resultado no afecte al resultado de las operaciones, para ponerlas en una cola. Un ejemplo típico es el envío de emails.
  4. Identifica las partes de la aplicación que puedan ejecutarse en paralelo.
Como puedes ver, no he incluido ningún consejo sobre el estilo de programación. Cualquier decisión que se tome en ese sentido va a afectar muchísimo menos al rendimiento que cualquiera de estas cuatro.

¿Creeis que falta algún punto importante?

Profundizaré en todos ellos en artículos posteriores.

2 comentarios:

Tungusky dijo...

Hola!! Me daba penita no ver ningun comentario, asi que... Hola!!

Soy Gustavo. dijo...

Muchas gracias Tungus!!!! :)