
En lo que va de este año, ya van por lo menos dos clientes en los que observo una especie de "obsesión" con la utilización de Web Services, indicando que las aplicaciones a construir deben estar basadas en SOA y, por lo tanto, deben consumir servicios internos mediante SOAP. WTF?
Para tener una arquitectura basada en u orientada a servicios, no se requieren Web Services! Es más, si las aplicaciones consumidoras y proveedoras de servicios están escritas en el mismo lenguaje de programación, se vuelve una pésima opción, por cuestiones de rendimiento y complejidad innecesaria en el diseño. Recordar los principios KISS y YAGNI!
Acerca del tema de la distribución innecesaria de los objetos se ha dicho bastante. Es más, es una de las razones por las que surgió Spring como respuesta al status quo impuesto por el estándar EJB 1.x/2.x. Esto lo explican bastante bien Rod Johnson y Juergen Hoeller en su libro J2EE Development without EJB.
Por poner otro ejempo, y citando a Martin Fowler:
Rule # 1 of Distributed Computing - Don't distribute your objects!
Finalmente, todos deberían conocer las 8 falacias de la computación distribuida:
- La red es confiable.
- La latencia es cero.
- El ancho de banda es infinito.
- La red es segura.
- La topología no cambia.
- Existe un único administrador.
- El costo del transporte es cero.
- La red es homogénea.