3.3.
Buena práctica número 7. Integre con frecuencia
El proceso de construcción es una parte integral del desarrollo
de aplicaciones. Es la primera oportunidad para tratar los errores de integración.
Por su importancia, los procesos de construcción deberían
tener lugar tan frecuentemente como sea posible, una vez se haya profundizado
lo suficiente en el proceso de desarrollo para tener código de integración.
La integración continua puede requerir una construcción diaria
en las aplicaciones de mayor tamaño o incluso construcciones que
tengan lugar cada vez que se registra un código en la herramienta
de control de versiones.
El motivo de todo ello es evidente. La integración empeora con
el tiempo. Cuanto más tiempo exista entre integraciones, mayor será el
esfuerzo necesario para la integración. Mediante una integración
constante, se pueden identificar errores y depurarlos el mismo día
en que se añaden al sistema. Además, esta buena práctica
fomenta entre los programadores una cultura de respeto mutuo y responsabilidad.
3.4. Buena práctica número 8. Optimice los costos
de comunicación
La comunicación distribuida puede ser bastante eficiente. Sin embargo,
cuando tiene lugar dentro de bucles y sobre una costosa infraestructura
de comunicación, los costes de comunicación pueden crecer
descontroladamente. Este apartado incluye un número de sugerencias
para mejorar el rendimiento en la comunicación.
Utilice llamadas locales en vez de remotas.
Con la aparición de EJB, la programación distribuida se
ha hecho más sencilla. Debido a ello, se ha extendido el uso de
EJB y, con él, el mal uso del mismo.
Para evitar añadir sobrecarga inútil a la aplicación,
se debería determinar para cada llamada a método si necesita
ser distribuida. Si un objeto Java local puede encargarse de la llamada
y ningún requerimiento de negocio impone una llamada remota, la
llamada debe ser local. Si el objeto que recibe la llamada no necesita
usar la seguridad del contenedor, el fondo común de instancias,
las transacciones gestionadas por el contenedor y el objeto no necesita
ser distribuido, entonces no utilice un EJB.
Cuando realmente necesite un EJB, haga uso de las interfaces locales cuando
sea posible. Las interfaces locales permiten pasar eficientemente parámetros
por referencia y reducen la sobrecarga. Si el cliente que hace la llamada
se encuentra en el mismo contenedor que el que la sirve puede hacer una
llamada local con un rendimiento mucho mayor.
Combine los datos.
Para mejorar el rendimiento, es una buena práctica combinar los
datos de una llamada a un método, tanto los parámetros como
el resultado. Para ello, puede utilizar objetos. En vez de llamar a un
método que tiene como parámetros una dirección y un
número de teléfono, programe un método que tenga un
objeto “Persona” como parámetro. Esta opción
requiere un único objeto y mejora el rendimiento de las llamadas
locales y distribuidas. En lo que respecta al resultado, como una llamada
a método sólo puede devolver un único resultado, combinando
los datos en un solo objeto puede devolver una mayor cantidad de datos
en una llamada sencilla. Por lo tanto, se necesitan menos llamadas a métodos
y se mejora el rendimiento.
Agrupe las solicitudes en lotes
Puede llevar todavía más lejos los beneficios de la combinación
de datos, enviando varias solicitudes de datos similares en una única
llamada. Realizando estas solicitudes de forma conjunta, sólo se
necesita una única conexión al recurso. En el caso de una
base de datos, se requiere una única conexión de base de
datos y el SQL que se ejecuta necesita compilarse sólo una vez,
ahorrando un número considerable de ciclos de cómputo. JDBC
permite fácilmente agrupar las solicitudes en lotes, aumentando
el rendimiento.
Ponga los datos en una caché
Otro factor importante para implementar un esquema eficiente de invocación
de métodos es identificar datos que son costosos de obtener y que
cambian con poca frecuencia. Usando una caché, un gran número
de llamadas costosas y que consumen tiempo pueden sustituirse
por rápidas
lecturas de valores de la caché. Puede leer más sobre cachés
en el apartado “Buenas prácticas de Diseño” en
este mismo documento.
|