Martes, 26 de Septiembre de 2006

Vida de Programador III: Client/Server

En las categorías: Puke

Cuando salí de la universidad hace unos 10 años ya, la boga en esos días eran salir del clásico sistema monousuario todo en 1 y pasar a ambientes clientes-servidor. Bien, no era algo novedoso y ya existían  en el mercado productos que te prometían hacer esto de forma simple. Ha pasado el tiempo y todavía me da risa(de pensar que felices son como estan) cuando escucho que una organización es moderna porque esta en ambiente cliente/servidor cuando esta tendencia muto hacia otras cosas en el transcurso de estos años, no se realmente si para mal o para bien. Analicemos lo que ha ocurrido en estos 10 últimos años, o por lo menos lo que yo he vivido, me recuerdo que en esa epoca lo primero que se pensaba era en hacer una aplicación:

  • Que separara por lo menos la Vista de los Datos…
  • Luego separar la lógica del negocio de la capa de datos y colocarla en una capa intermedia…
  • Ya esa lógica de negocios debía estar en un manejador de transacciones que nos garantizara esquemas ACID(COM+, EJB, etc).
  • Me aburrí de lidiar con problemas de Interface de objetos en la red, y de tener que mantener aplicaciones visuales por todo el mundo y sus consecuente proceso de actualización y pensé en aplicaciones Web-Enabled…
  • Ya no tenia problemas de mantenimiento de mis aplicaciones cliente ya que todo estaba en el servidor a nivel de algún lenguaje de scripting, pero el tener la mezcla de código script y de negocio me obliga a seguir pensando en mi bussiness components en una capa por separado con lo cual agregue una nueva capa a mi esquema(Client WEB, Server Web, Application Server, DB Server).
  • Mis clientes se quejan que no pueden hacer lo mismo que antes en sus aplicaciones web recién instaladas y comienzo a desarrollar Activex o Applet, agrego una nueva capa a mi sistema (Client Web, Applet/Activex, Server Web, Application Server, DB Server).
  • Mis clientes quedan satisfecho por un tiempo hasta que se quejan y empiezan a decirme que tarda mucho en descargar y funcionar en sus equipos los componentes  cliente (Activex/Applet) o por algún esquema de seguridad falla en instalarse.
  • Comienzo a usar la próxima solución a mis problemas, JavaScript, y el cliente ahora era recargado de data pseudo-estatica que tal vez interaccione con estos componentes clientes y señores, he conseguido agregar otra capa mas a mi arquitectura inicial (Cliente Web, JS, Activex/Applet, Server Web, Application Server, DB Server). Clientes satisfechos hasta que me dicen que refrescar la pantalla cada vez que necesitan consultar sus datos no le funciona a su oficina de otro lado del país ya que la conexión hacia los servidores locales es reducida debido al ancho de banda que tienen.
  • Luego de buscar un poco, encuentro que AJAX será mi solución, y defino mi nueva arquitectura, pero sabiendo que AJAX negociara en SOAP debo tener una capa que me sea bridge entre el modulo de la lógica de negocios y la capa de visualización, así que mas queda que empezar a usar Webservices(y así también resuelvo mis problemas de interoperatibilidad con esa aplicación Legacy que debía comunicarse y enviarme datos.) Nuevo esquema : Cliente Web, AJAX, Servidor Web, WebServices, Application Server, DB Server.

Pase los 10 últimos años haciendo aplicaciones que solo querían lo basico, grabar un dato a la DB y ver luego un reporte de esto; y que realice en el medio, una estratificación de capas tan complejas que el mantenimiento de la misma no es lo mas simple del mundo, tal vez olvide el principio fundamental del KISS y fui complaciendo a clientes o moviéndome de tecnologías  tal como el mercado me hacía ir o el cliente me exigía, pero en base a lograr arquitecturas que fuesen escalable fui creando tantas capas de desarrollo que mas que una solución simple parece la descripción geológica del planeta Tierra. Adicional ni siquiera describí las capas que encontramos normalmente en un Application Server(Messaging, DAO, Bussiness Components, etc.) sino nunca terminaría de describir esto.
Pudiéramos decir que esa empresa que dice que es moderna por usar una arquitectura cliente/servidor, hasta contento pudiésemos estar que se queden así y evitar a que vayan complicando su esquema de soluciones, se que muchos pensaran que en la simplicidad no esta la respuesta pero también hay que saber cuando dejar que las cosas funcionen de forma natural. Se que es inmantenible la lógica de negocios en un DB Server y que con esto estaríamos casando la aplicación con un manejador de DB en particular que de ser sustituido la migración de T-SQL seria un trabajo doloroso, pero cuantas veces suceden las migraciones de esta magnitud, cada 5 o 10 años?? Hasta que punto el ego, ya que es ego al fin por el nuevo reto, del Arquitecto, Coder o lider del proyecto hace que no simplifiquemos las cosas sino que busquemos complicarla cada día más.
El mundo Client/Server cada día cambia, ya no tenemos que la View sera un GUI-Client o GUI Web-Enabled sino un dispositivo mobil o un cualquier otra cosa que se nos ocurra(Google Maps por ejemplo que a pesar de se web enabled no es una aplicación de formas clasica), ya no manejamos una DB como nuestro repositorio ya que tal vez dialoguemos contra un Legacy, un ERP o un mismo dispositivo electrónico donde no tendremos capacidad de agregar logica de negocio en T-SQL pero estos casos no son la regla hoy por hoy  de el clasico 80-20 pero en un futuro cercano tal vez lo sean, el estar preparado para esto no esta mal, pero también se debe tratar de hacer las cosas simples en la medida de lo posible. Hace una semana y algo conversaba con un padawan sobre esto mismo, si tu aplicación es para un desktop de trabajo unitario, porque complicar la arquitectura de la misma a 8 capas?? Por que un paper de best practices asi lo indica?? O es porque tu ego lleva a esto? No esta mal acostumbrarse a trabajar bien pero hay que saber demarcar esa delgada línea entre satisfacer a nosotros mismos o hacer una solución simple pero que cumpla con los requisitos y sea fácilmente escalable en el tiempo. Tarea sencilla no es esto último pero en mi cabeza solo suena una canción…

Sonado en player Perenne:KISS-Rock and roll all nite

 

C-5





Del.icio.us  |   Cosmos  |   Digg  |   Slashdot |   ”submitMeneame |   Guardar en Favoriting Favoriting

Escritos Relacionados:


EL URI para seguir esta entrada es: http://zeitan.blogsome.com/2006/09/26/vida-de-programador-iii-clientserver/trackback/

7 Comentarios »

    meneame.net
  1. Vida de Programador III: Client/Server

    Analisis de la evolución del desarrollo cliente servidor durante los ultimos 10 años

    September 26, 2006 @ 6:00 pm

    • • •
     
  2. Aníbal Rojas
  3. No, no “complicar la arquitectura de la misma a 8 capas” no es porque lo diga un paper, generalmente es porque pasó un vendedor de Oracle por ahí y habló con el Gerente de Sistemas ;-)

    September 26, 2006 @ 6:50 pm

    • • •
     
  4. PERCY REYES
  5. me sorprende la manera que sabes escalar aplicaciones de acuerdo a los requerimientos de tus clientes.

    Saludos.

    September 26, 2006 @ 7:17 pm

    • • •
     
  6. Manuel
  7. Que gran verdad…

    auténticas burradas he visto para desarrollar una aplicación en entorno cliente-servidor, a utilizar dentro de una pequeña red local, con arquitecturas vanguardistas… clientes mega-complejos orientados a objetos…

    Siempre he creido que desde hace un tiempo hay un gran afán en complicar las cosas en pro de la reusabilidad y la escalabilidad… cosas que en ocasiones sí suceden… pero en la mayoría nunca llegan a manifestarse…

    September 27, 2006 @ 11:10 am

    • • •
     
  8. info@delimce.com
  9. Creo que el TAO de la programacion enseña mucho como manejar un problema de esta indole, aunque lo mas comodo y menos riesgoso es seguir el principio KISS, como dices llega el momento en que tu cliente te pide algo mas alla, ahora todos tenemos egos que satisfacer y ganas de plantear nuestros conocimientos cuando se nos da la oportunidad en un proyecto con buen nivel. pero es importante tratar de medir bien nuestro alcance deacuerdo a los requirimientos y no permitir que la cosa se nos salga de control, que es la tendencia dependiendo de cuanta gente este involucrada en el proyecto.
    mi opinion personal, nunca he sido muy buen amigo de los componentes construidos por casas de software y para plataformas particulares me parece, que la mayoria falla y reduce un mundo de posibilidades que pueden haber en el codigo a bajo nivel, ya me paso en una oportunidad, donde tuve que desarrollar un control en c++ para manejo de sockets, hay muchos controles propietarios para esto, solo q compatibles con las plataformas que ellos, y con las politicas de los diseñadores, si se nos ocurre desviarnos un poco, quizas lo paguemos caro.

    Conclusion: a veces hay que volver a lo basico y simple para resolver problemas complejos.

    September 27, 2006 @ 11:45 am

    • • •
     
  10. PERCY REYES
  11. el tao es lo mejor que pude leer!...

    September 28, 2006 @ 1:37 pm

    • • •
     
  12. rainer
  13. envialo

    July 10, 2007 @ 7:59 pm

    • • •
     

RSS feed para comentarios en el post.

Deje un comentario.

Entrelineado de parrafos automáticos, direcciones de e-mail nunca seran mostradas, HTML permitido: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>



Anti-spam measure: please retype the above text into the box provided.

cró·ni·ca s. Artículo periodístico o información radiofónica o televisiva sobre temas de actualidad.

Puede que algunos elementos de esta página no se muestren correctamente si navega con Internet Explorer. Zeitan recomienda utilizar:
Get Firefox!

Links internos:

Categorías:

La gente comenta:

Archivos:

Septiembre 2006
L M M J V S D
« Ago   Oct »
 123
45678910
11121314151617
18192021222324
252627282930  

Hace un mes atras:

La gente lee:

Zeitan. Es el navegante constante de la red que expone sus opiniones y gustos en este espacio esperando compartir junto a Uds. esta experiencia y saber su feedback a través de sus comentarios.

Contacto:

msn:antonbas@gmail.com
Blogger Code:
B4 d- t k s++ u++ i o x-- e+ l c+
(decode it!)

Escuchando en Last.FM:

Twitteando:


Sigue a zeitan en http://twitter.com

Búsqueda:

Busca con este:


O si te parece mejor usa este otro:

Leo a:

Mas clickeado:

Sindicalizado por:

Estamos Suscritos a:

Directorio de Blogs de Venezuela
BloGalaxia
Blog Flux Directory

 Bitacoras.com

Top Technology Blogs

Cotizamos en:
Listed on BlogShares Unión de Bloggers Hispanos
Unión de Bloggers Hispanos

Contadores:



Revisa las estadísticas

Theme copyright © 2002– Mike Little
Modificado por Zeitan 2006.