Story Transcript
Introducción Primeramente queríamos resaltar que este trabajo fue compuesto solamente por conocimientos extraídos de los alumnos, siendo la investigación en Web un factor decisivo pero todo el material contenido fue digitado por los representantes del trabajo. En el transcurso del trabajo mencionaremos lenguajes script y queremos referirnos a los lenguajes de programación orientada a Web, aun que existan lenguajes script para desarrollo en plataforma Windows. También aparecerá mucho la palabra cliente, lo que se referirá siempre a la topología cliente−servidor y nunca a los clientes de la empresa tratada. El trabajo esta compuesto de ventajas y desventajas de cada uno de los Desarrollos y al final una breve análisis de cuando se debe utilizar cada uno de Las herramientas citadas. Claro que nos limitamos al desarrollo en la parte de programas compilados, a la Plataforma de Windows, aun que ese análisis seria doblemente rico si fuera hecha sobre varias plataformas como Unix y Mac. Pero por razones de enunciado, tendremos que omitir esos puntos tan interesantes. Esperemos que disfrute el trabajo y que el material presentado, que fue previamente discutido en grupo sea de provecho de los lectores. ¿Què es Web−Development? Web Development es el desarrollo de aplicaciones en ambiente Web. El desarrollo en ambiente Web se hace sobre un lenguaje script llamado HTML. Sobre ese lenguaje script (un lenguaje script es un lenguaje no compilado) se apoyan todos los otros lenguajes tratados en Web. Cuando uno programa en ASP, ASP.NET o mismo JAVA esos scripts se apoyan sobre el HTML para ser interpretada por un Browser. Una característica de la programación en Web, es que se necesita usar un Browser de Internet como programa cliente, es decir, el browser actuara como el "traductor" del código escrito por el programador y desplegara todo el contenido en el código a la pantalla del usuario. El browser, por su vez, para interpretar algunos scripts, necesita los llamados Pluggins. Que no son nada mas que "módulos" que le ayudaran al programa browser interpretar los comandos contenidos en el código. Se necesita para desarrollar y para poner a funcionar un programa en Web, lo que se llama Web Server, que por su vez contendrá los códigos de los scripts que los browsers de los clientes interpretaran. Un Web Server es un servidor ordinario 1
con algunos servicios especiales activos para servir a los browsers clientes. Podemos apreciar la estructura básica de un programa montado en un Web Server con la figura abajo:
El tener que armar un Web Server es un requisito, aun que se use uno de los clientes para subir el servicio, este ultimo es necesario que este funcionando todo el tiempo mientras los clientes trabajan con los programas. El proceso de traducción de los scripts de un programa desarrollado en Web se da por la figura abajo:
¿Què es Desarrollo de Aplicaciones en Plataforma Windows? Los programas basados en plataforma Windows, son generalmente códigos compilados, que el mismo sistema operativo lo arreglara de traducir el código y 2
ejecutar los procesos en el contenido. Se dice que es un programa compilado porque partir del código original, un programa llamado Compilador, lo transforma en un formato en Binario que puede ser leído directamente por el sistema operativo, en el caso especifico de Windows el sistema operativo necesita una extensión para leer el archivo, porque carece de un sistema de reconocimiento de contenido de archivos, como hacen los sistemas basados en Unix. Una vez generado el archivo Binario (extensión .exe) el sistema operativo esta listo para leerlo y ejecutarlo, pero, el programa en forma binaria no puede ser editado y si es el caso debe ser re−compilado para poder hacer algún tipo de cambio en el código. Para que un programa binario funcione no es necesario un traductor, como en el caso del Web−aplicación, porque el mismo sistema operativo reconoce el binario y lo ejecuta, no se necesita el browser para hacer el trabajo de "puente" entre el sistema operativo y el código generado. Tampoco es necesario un Server dedicado a cargar el servicio para que los clientes ejecuten el programa, ya que, todos los clientes tienen un sistema operativo propio instalado y deben reconocer el archivo en forma binaria sin ningún servicio externo al sistema operativo local. Una de las opciones para la topología cliente servidor para programas compilados es la creación de Dumb Terminals, que son nada mas que monitores y teclados conectados a un solo servidor. Eso significa que tenemos un servidor, corriendo varios programas simultáneamente y los clientes no procesan la información que reciben, porque su CPU es el mismo servidor. Ese tipo de ambiente proporciona una alternativa simples para no tener que aplicar un sistema operativo para cada cliente, pero como en el caso de Windows que es un sistema Mono−Usuario, o sea, un usuario por sistema operativo, ese tipo de salida se torna difícil de
3
aplicar, además, el sistema operativo Windows no tiene suficiente estabilidad para correr tantos programas al mismo tiempo y puede ser que se den errores muy frecuentemente, así observamos esa salida aplicada siempre en sistemas basados en Unix. En la grafica abajo observamos a ausencia de un traductor de códigos, como mencionamos anteriormente:
Ventajas del Desarrollo en Ambiente Web En ese modulo analizaremos las ventajas de poseer programas (scripts) basados en la Web. Ventaja 1: Movilidad. Movilidad es una de las principales ventajas de poseer programas basados en Web. Ella se presenta en la sencilla razón de que, al poseer el script en un Web−Server podemos darnos el lujo de accesar ese script de cualquier cliente que tenga un Browser, eliminando la necesidad de tener el mismo programa instalado en la maquina donde se va trabajar. Para ejecutivos y personas que viajan mucho, los programas desarrollados en Web son los mas apropiados, porque así, con una
4
laptop o un dispositivo móvil, se puede accesar al servidor de la empresa y usar el programa, o hasta de un Internet café, o cualquier maquina que este en Internet (o en Lan, dependiendo de la configuración dada a la red). La movilidad ha dado alas a los programas diseñados para Web, pero, podemos también desarrollar programas compilados con acceso a Internet, lo cual también se conecte al servidor, pero en el ultimo caso debemos tener el programa instalado en la maquina cliente, lo que no es necesario por un programa desarrollado en Web. Ventaja 2: Flexibilidad. La segunda ventaja es la Flexibilidad, pero no en el sentido de que los programas sean mejores, o se adapten mejores a las necesidades, sino que con un programa basado en Web, como el script original esta en servidor, un programador lo puede actualizar desde la empresa y el ejecutivo (que esta afuera del país) vera los cambios en el programa prácticamente en tiempo real. Significa que si se adiciona un modulo nuevo al programa a las 3:00pm, si el ejecutivo accesa el programa por su laptop, en cualquier parte del mundo, a las 3:01pm el programa ya saldrá actualizado en su cliente. Esa ventaja es otra ventaja que da una superioridad a los programas desarrollados para Web, no decimos que no se puede hacer un programa compilado para el cliente que se actualice solo de acuerdo al que esta en el servidor, sino que para ejecutar esa actualización hay que bajar el nuevo programa binario para el cliente, lo que toma tiempo y con una Internet de Low−Bandwith se podría ver seriamente afectado en su velocidad para recibir esos archivos. Ventaja 3: Multiplataforma. La idea de hacer con que los lenguajes de Web sean scripts es facilitar de cierta forma la comunicación entre plataformas. La teoría ideal creada para el
5
formato de HTML es que todos los clientes del mundo, no importa en que plataforma operativa este corriendo, sea interpretada de igual forma. En el caso que sea un script basado en HTML se actualizaría el Web−Server para que este pueda traducir el nuevo script y transmitirlos a los browsers. Todo funciono muy bien hasta que nuevamente el factor financiero introdujo formatos que no pueden ser entendidos algunas Plataformas, lo que torna esa ventaja completamente inútil, ya que por ejemplo en el caso de ASP.NET el formato no puede ser (hasta los días actuales) interpretado por plataformas basadas en Unix o Mac. Infelizmente con ese tipo de actitud sobreponemos los intereses de los usuarios con los intereses de las empresas que ofrecen los lenguajes, pero todavía 90% de los scripts son registrados por empresas serias o por empresas asociadas al Open Source lo que hace que esos scripts sean todavía multiplataforma (así como el JAVA que es soportado en todas las plataformas y sus derechos la retiene Sun Microsystem). Ventaja 4: Lenguaje en Script. La idea de soportar programas sobre lenguajes scripts nos da la ventaja de no tener que recompilar todo el programa cada vez que se ejecuta un cambio, eso ya fue mencionando anteriormente pero lo volveremos mencionar por su importancia. además los lenguajes scripts "acostumbran" ser mas "fáciles" de entender y de actualizar el mismo código del programa, aun que eso mayormente se debe a la habilidad del programador. Ventaja 5: lenguajes asociados a Open Source. Muchos de los lenguajes destinados a Web pueden ser encontrados sobre el programa de Open Source, lo que significa que no es necesario tener licencias para desarrollar en ellas. Aplicar un lenguaje que esta sobre Open Source es rebajar los costos del software, lo que es muy atractivo para los ejecutivos que
6
deben comprar el paquete de software. Entre los lenguajes que se pueden desarrollar para Web y esta totalmente sobre Open Source mencionamos Python. Desventajas de Desarrollo en Ambiente Web Ahora mencionaremos las desventajas del desarrollo sobre lenguajes Web. Desventaja 1: Seguridad. La seguridad es un factor de mucha controversia para los programas desarrollados para Web, por la simple razón que deben estar conectados directamente a Internet y se necesitan programadores extremamente capacitados para tornar esos lenguajes scripts seguros suficiente para que sean viables para una gran empresa implementarlos. además enfrentamos el problema de que al ser un lenguaje no compilado, es un programa mas facil de ser Hackeado. Ya que se pueden hacer peticiones con un Masked−Ip a server y bajar los códigos de las paginas tornando esos programa salvos de los hackers. Hoy en día se ha desarrollado la encriptación de 128 bits para los browsers modernos, lo que significa que toda la información esta tan encriptada que es prácticamente imposible de "interceptar" la comunicación entre un browser y un servidor para recibir la información que se envía, pero aun comparados con programas compilados, los programas de Web (scripts) son menos seguros en términos de la comunicación. Al tener que conectarse a Internet para abrir un programa (si no usamos el ejemplo de la Lan) lo hace vulnerable, porque fácilmente un hacker sin mucha experiencia puede "patchear" un cliente que este en Internet y obtener de allí esa información, si el cliente no estuviera directamente conectado a Internet a través de un browser, seria mas difícil de aplicar un patch por la razón que se tendría que conocer como trabaja el proceso que diseñó el programador para enviar los datos (en el caso de programas encriptados).
7
Desventaja 2: Lentitud. Que significan las letras WWW? Wait Wait Wait. Cuantas veces ya no escuchamos ese chiste. Pues es de ese punto que trataremos ahora, la lentitud de los programas desarrollados para Web. Cada vez que un ejecutivo abre una pagina con un programa script el hace download del código y de todas las imágenes que el mismo hace referencia. Cuando se envía información al server (por un proceso cualquiera) esa información tiene que viajar a través de toda el Internet ida y vuelta para darle una respuesta al cliente. Eso comúnmente lo llaman LAG, pero seguro estamos de que un programa que se comunique mucho con el servidor sin una conexión de banda ancha, puede generar Time Out, que es el tiempo de espera máximo del server por una información, derrumbando así todo el proceso ejecutado y muchas veces generando error. Un programa por otro lado que no se comunica mucho con el servidor, se llama un programa de Client−Side−Process, son programas que hacen todo localmente en el cliente y después envía una sola respuesta al server, lo que genera un PING muy bajo y ejecuta así la comunicación eficientemente. Si no desarrollado en base a reglas de ancho de banda de las conexiones usadas puede generar programas que no funcionen bien, o que sean demasiados lentos para ser utilizados con eficiencia. Desventaja 3: Mano de Obra Especializada Requerida: Entendemos que mano de obra especializada se necesita para desarrollar cualquier programa de un nivel medio para las empresas, pero en el caso de una aplicación Web debemos tener mas cuidado al escoger al equipo de trabajo. Eso se debe a que hay que hacer un enfoque especial sobre la seguridad y sobre la velocidad de los procesos involucrados para no ocasionar Time−Out en las
8
operaciones. Ese grupo de trabajo además tiene que estar capacitado en desarrollo en HTTPS (Hyper Text Transfer Protocol Secure) para evitar filtraciones de las encriptaciones ofrecidas por el browser, todo eso representa un cuidado extra que se debe tener cuando se desarrolla para Web. Desventaja 4: Inseguridad de la Database. Aquí apreciamos un punto muy importante no llevado en cuenta por muchos programadores actuales. La conexión de un programa Web directamente con la base de datos es un error catastrófico. Para que se ejecute eso la autenticación de la base de datos debe viajar con la información enviada al server desde el cliente, lo que significa que la contraseña y el login viajan por todo el Internet hasta llegar al server para ser autenticada. Ese tipo de sistemas son vulnerables de muchas maneras, una de ellas, la contraseña esta en el código de la pagina, al ser bajada por una persona ajena se encontrara comprometido todo el proceso de defensa de la base de datos. A ese problema podemos adicionar "puentes" en los programas, que se conecte con un puente (físicamente cerca del servidor) y de ese puente se haga la conexión con la base de datos. Pero porque adoptar actitudes tan radicales? Porque si llegan a interceptar la contraseña del puente no compromete la base de datos, en el caso de empresas grandes, la base de datos es un recurso demasiado valioso para correr esos riesgos. La base de datos trae muchas herramientas de Self−Defense como son las contraseñas, pero si un programador no experimentado envía esas contraseñas en baja encriptación por un túnel en el Internet y ese es interceptado, se puede echar a perder toda la seguridad adquirida con el paquete de la base de datos. Ventajas de Desarrollo en Plataforma Windows Continuando mencionaremos las ventajas de usar un programa compilado, sobre
9
plataforma Windows. Ventaja 1: Fácil Desarrollo. Cuando nos referimos a fácil desarrollo no se trata que de que sea mas fácil desarrollar programas compilados que programas scripts, porque no es verdad, nos referimos que es mas fácil encontrar grupos de trabajo que tengan alguna experiencia en el desarrollo de aplicaciones para Windows. Al encontrar abundancia de programadores experimentados en Windows podemos decir que es mas fácil y mas barato desarrollar en esa plataforma, pero lo que nunca debemos decir es que es seguro y estable. Ventaja 2: Seguridad. Acabamos de mencionar que no es plenamente seguro desarrollar en plataforma Windows pero si comparamos el desarrollo de programas compilados con programas en script, indiscutiblemente los compilados son mas seguros, y sustentaremos porque. Un programa compilado ya esta defendido por si solo al ser una tarea muy costosa desencriptar un programa para ver como ese funciona, en los lenguajes scripts como no se compilan, si un programador ajeno tiene acceso a los clientes, puede ver el código del programa, lo que no pasa en programas compilados, aun que el tenga el cliente en su maquina, no tendrá acceso a los códigos directamente. Un programa compilado debe llevar una manera única de transmitir datos a los otros módulos del programa (caso exista cliente−servidor). Asumiendo que lidiamos con buenos programadores que no usan wizards ni herramientas del estilo podemos decir que un proceso de transmisión de datos se puede hacer seguro si las personas ajenas desconocen como funciona, eso brinda una defensa mas contra interceptaciones de los datos transmitidos. Con un lenguaje script el programa utilizara el método de transmisión de datos del browser, que por señal es bien
10
conocido por todos los hackers que están en Internet. Ventaja 3: Rápido acceso a la Database. En teoría y asumiendo que los clientes están conectados en Lan, podemos afirmar que el programa tendrá un tiempo de respuesta mas rápido con la base de datos que un programa desarrollado en Web lo tendría, pero porque? Porque el único método que un programa Web se puede conectar con la base de datos sin un programa puente es directamente con el browser y esta comprobado que el tiempo de repuesta es mayor que de un programa compilado que hace el mismo acceso directamente por el sistema operativo. Si es el caso de que el programa compilado trate de accesar la base de datos a través de Internet podemos decir que el tiempo de respuesta dependerá totalmente del ancho de banda de la conexión, así como pasa con un programa desarrollado en script. Ventaja 4: Seguridad en la Database. Como mencionamos anteriormente, los programas están al alrededor de una base de datos y cualquier acceso hacho a esa ultima representa un riesgo a la seguridad, una manera de evitar esos riesgos es utilizar el sistema de defensa y encriptación de la misma base de datos. No estamos diciendo directamente que es mas seguro accesar una base de datos por un programa compilado que por un programa script si los dos hacen uso del login de la base de datos, pero si decimos que pocos programadores que desarrollan para Web toman las molestias de verificar los procedimientos de defensa de la base de datos y que lo traten de usar, así que como es mas fácil encontrar programadores que hagan uso de ese recurso para desarrollar programas compilados, decimos que es mas seguro accesarla por un programa compilado. La seguridad de un programa lo hace el programador, y de eso nadie puede negar,
11
todas las defensas de los paquetes como Oracle por ejemplo pueden ser dañadas por un malo programador que incluía la contraseña de la base de datos en su código. Desventajas Desarrollo en Plataforma Windows En el próximo modulo trataremos de poner al descubierto las desventajas de programar en plataforma Windows mas específicamente, sus desventajas contra los programas desarrollados para Web, caso hablaremos de desventajas de programar en Windows contra otras plataformas como Mac o Unix tendríamos que alargar el titulo de "Tarea" a "Libro". Desventaja 1: Costo. Costo? Pero desarrollar en plataforma Windows no es mas barato que desarrollar para Web? La respuesta es depende. Cada maquina que utilizara el programa debe ser capaz de instalarlo y cargarlo en memoria, lo que significa que si tenemos 1000 terminales que se necesita un procesador Pentium III para arrancar el programa contra 1000 terminales que necesitan procesador 486 y un browser actualizado estamos bajando los costos en hasta un 80%. No diremos que programar programas compilados sea mas barato que programar en plataforma Web porque simplemente no lo es. La mano de obra del desarrollador Web es mas cara que la del desarrollador en plataforma Windows. Pero el costo de las terminales y los requisitos varían mucho de una plataforma a otra. Aunque sinceramente los proyectos muchas veces cuestan mas desarrollarlos que el mismo hardware físico. Desventaja 2: Flexibilidad cero en los Clientes. Ese punto fue adicionado en nuestro trabajo para resaltar el principal punto del desarrollo por Web. Un administrador de redes se siente el hombre mas feliz del
12
mundo al no tener que actualizar cada cliente por un Upgrade del código fuente. Cuando desarrollamos en plataforma Windows, la regla es si actualizas el código fuente, tendremos que actualizar todas las maquinas que lo corren. Pero, y que pasa con las aplicaciones que se actualizan dinámicamente, buscando upgrades y instalándolos automáticamente así como hacen los juegos de video? Buena pregunta, si se puede desarrollar aplicaciones compiladas que se actualicen solas, desde que estés dispuesto a pagar 9000 dólares mensuales a un equipo de programadores de primera línea que te generen códigos que se auto−actualizan. Caso no tenga el presupuesto y quieras contratar un equipo recién salido de la universidad no será posible desarrollar aplicaciones que actualicen los clientes automáticamente, así que punto para Web. Desventaja 3: Licencias y Números Seriales. Recordamos que estamos basando nuestro trabajo para programas desarrolladas con herramientas que poseen su licencia debidamente autenticada en un mecanismo legal de software. Las licencias para desarrollo en plataforma Windows son consideradas desde caras a absurdas. además de comprar todos los sistemas operativos que usaras para los clientes y la versión para servidor (que no es nada barata) debes pagar por cada licencia de cada paquete de desarrollo comprado. Mal, mal y mal, para Web existen muchos lenguajes sobre licencia gratis, lo que hace el costo de paquetes de desarrollo prácticamente $0. Recordamos que desarrollo en Web no necesariamente los clientes deben correr sobre Windows (interesante ha? eliminamos las licencias de los sistemas operativos). Como la empresa Microsoft solo visa la ganancia, desarrollar en plataforma Windows siempre fue y será caro, ya en ambiente Web, como tenemos la colaboración de programadores de otras plataformas que visan el avance de la
13
tecnología y publican sus trabajos gratis, disponemos de herramientas gratis para desarrollo. Considerando los costos de licencias, puntos y mas puntos para desarrollo en Web. Cuando debemos desarrollar en Plataforma Windows Ahora llegando al ultimo modulo, veamos que se debe aplicar en cada caso en espeficico, cuando debemos usar programación compilada sobre plataforma Windows y cuando debemos utilizar programación en Web. Debemos utilizar aplicaciones compiladas en el caso que queramos trabajar específicamente con Lan y queramos mantener un alto rendimiento en lo que se refiere a tiempo de respuesta. Debemos utilizar ese tipo de programación cuando queramos un poco mas de seguridad o si nuestra mano de obra no esta capacitada a trabajar con desarrollo Web. Con buenos programadores se pueden hacer programas suficientemente seguros basados en plataforma Windows, hasta si hablamos de una red muy compleja. Si no queremos utilizar cliente−servidor podemos también aplicar ese tipo de programación y hacer un anillo de comunicación entre ellos, de tal manera a no ser dependiente de una sola maquina (aun que aplicando la base de datos se torna indispensable una maquina, si esa se cae, probablemente todo lo demás dejara de funcionar). Cuando debemos desarrollar en Plataforma Web Debemos usar desarrollo de Web cuando queramos movilidad, flexibilidad en lo que se refiere a localizaciones físicas. Cuando tengamos ejecutivos viajando y necesitemos acceso en tiempo real, en ese caso debemos escoger sin mucho cuestionamiento el desarrollo por Web. Debemos desarrollar en Web cuando tengamos interfaces no muy cargadas en que el
14
tiempo de respuesta no sea un factor decisivo en la comunicación entre el sistema. En ese caso, cuando se comunica poco el cliente con el servidor Web, puede ser factible aplicar un sistema basado en programación script orientada a Web. Por ultimo debemos aplicar programación en Web cuando el sistema se actualice mucho y existan muchas terminales, donde el hacer un upgrade de los clientes nos tome mucho tiempo y recursos, en ese caso, podemos perder un poco en tiempo de respuesta, pero nuestros clientes siempre estarán actualizados y a par con todos los cambios del script maestro. Conclusión Al final podemos concluir que cada uno de los tipos de desarrollo se aplica a una necesidad especifica, lo que viene a decir que no existe un tipo de desarrollo mejor que el otro. Aun que el desarrollo Web sea una tendencia, no nos guiemos por lo que dice el mercado, porque el mercado pocas veces conoce los verdaderos objetivos de nuestras empresas y debemos hacer que el sistema se adapte a las necesidades especificas del problema, sea esa herramienta de tendencia o no. Como todos los sistemas son desarrollados para las distintas necesidades y cada uno de los estilos de desarrollar mencionados se enfocan en una necesidad reafirmamos la conclusión de que no existe mejor solución sino que solución que se aplica mejor a las necesidades dadas.
15