jueves, 24 de septiembre de 2015

Ejemplo de Infraestructurade Trabajo Resumida

Buenas noches a todos los lectores, hoy fue un día de trabajo bastante cansador, por lo cual solo me limitare a mostrarles un ejemplo de Infraestructura de trabajo simplificada, para nuestros primeros sitios web esta infraestructura simplificada nos será suficiente (no olvide que en empresas grandes de desarrollo de software no se puede omitir los Entornos de Trabajo descritas en la anterior publicación).
Como ya lo comentamos, ahora presentaremos una infraestructura resumida para trabajar en nuestros primeros ejemplos, en la Ilustración 1 se muestra los servidores que fueron removidos y aquellos que permanecen en nuestra Infraestructura resumida.
Ilustración 1. Infraestructura de Trabajo Resumida.
De la Infraestructura resumida presentada, se eliminó el entorno de Test, y también  se eliminó los Servidores de Servicios Web (posteriormente los volveremos a mostrar cuando implementemos servicios web con REST)
2.        Corriendo cada uno de los Servidores (Virtualizados).
Dependiendo de la empresa en la cual se encuentra trabajando, podrá encontrarse con dos maneras de tener cada uno de los servidores: Cada S.O. Server corriendo en un equipo físico independiente, o lo más habitual actualmente, que exista un servidor en el cual se virtualicen los servidores.
Para los ejemplos que iremos desarrollando a lo largo del tiempo, todos los servidores se encuentran virtualizados por medio de Hyper-V, en la Ilustración 2 podemos observar Hyper-V corriendo con las máquinas virtuales que hospeda.

Ilustración 2. Servidores de Desarrollo Corriendo.
En la Ilustración 2 se puede observar que se encuentran corriendo un Windows Server 2008 R2 con SQL Server 2008 R2 como servidor de base de datos en el entorno de Desarrollo; luego podemos ver un Windows Server 2012 R2 corriendo como servidor de aplicaciones.
Por ahora no mostraremos el funcionamiento de cada uno de estos servidores, este tema lo veremos en el apartado pertinente (por ejemplo el servidor de base de datos empezaremos a verlo cuando estemos en el proceso de creación de bases de datos).
En lo concerniente a la maquina en la cual se desarrolla el software como tal, podemos utilizar una máquina virtual (por ejemplo en la Ilustración 2 podemos observar que hay una máquina virtual Windows 8.1 con Visual Studio 2012) o bien hacerlo desde nuestra máquina local, a lo largo de todos los ejemplos que se vayan desarrollando, en el desarrollo de software como tal se trabajará en la máquina local (que ya tiene instalada Visual Studio 2012) como muestra en la Ilustración 3.


Ilustración 3. Visual Studio 2012 corriendo en la máquina local.

Bueno por hoy eso es todo, y espero que esta nueva publicación sirva al lector, ya que lo mas aconsejable es que tenga varias maquinas virtuales corriendo, ya que estas son nuestros diferentes servidores. Por otro lado espero que sirva al lector como un pequeño empujón con el cual podrá investigar, aprender y ejecutar virtualizaciones de sistemas operativos.

miércoles, 23 de septiembre de 2015

Infraestructura Básica para el Desarrollo de Software

1.        Infraestructura Básica para el Desarrollo de Software
Bueno, antes de empezar con temas referentes a Desarrollo de Software como tal, hay que tener en cuenta lo siguiente:
     Tecnologías con las cuales se trabajará.
     Infraestructura de Trabajo.
     “Políticas” de trabajo.
Describiremos cada uno de estos aspectos dando mayor énfasis en la “Infraestructura de Trabajo”.
1.1.       Tecnologías con las cuales se trabajará.
Cuando empezamos un proyecto de desarrollo de software en una empresa, puede suceder que la empresa ya tenga definidas las tecnologías (Lenguajes de Programación, SGBD, ORM’s, etc.) con las cuales trabajan, pero también puede suceder que la empresa recién este comenzando con el proceso de automatizaciones mediante software.
Si nos encontramos en el primer caso el trabajo se simplifica ya que solo debemos utilizar las tecnologías ya definidas.
Existe una complejidad “extra” si nos encontramos en el segundo caso, ya que nosotros como pioneros debemos definir las tecnologías que se utilizará; la decisión de que tecnologías se utilizara no hay que tomarla a la deriva, ya que se debe persistir con estas tecnologías en el resto de los proyectos futuros. Por ejemplo, es incorrecto (desde el punto de vista del autor) que en un proyecto utilicemos como SGBD a Oracle, en otro a SQL Server, en otro a MySql; ya que utilizar más de un SGBD puede acarrearnos los siguientes problemas:
     Sera necesario aumentar servidores, ya que cada SGBD deberá estar en un servidor diferente.
     Duplicidad de información, ya que por ejemplo para cada SGBD tendremos que crear usuario, que seguramente se repetirán en los diferentes SGBD
     Dificultad de integrar información, ya que si queremos cruzar información de una BD en Oracle con una BD de MySql no podremos hacerlo directo (por ejemplo con una llave foránea) y tendremos que optar por utilizar otros mecanismos (por ejemplo servicios web) para realizar dicha integración, o en el peor de los casos simularla.
La lista de problemas podría extenderse mucho más y aparte existiría otra lista para S.O., leguajes de programación, etc.
En el peor de los casos, podría suceder que el profesional de desarrollo se incorpore a una empresa en la cual las tecnologías utilizadas no están unificadas y podrá chocarse con una baraja de sistemas con diferentes tecnologías (ejemplo: un sistema en FoxPro, otro en Visual Basic 6.0, otro en Java, otro en PHP, otro en .Net, etc.), en tal caso usted podría aconsejar que poco a poco se vaya unificando todo por los problemas ya expuestos.
Por lo expuesto brevemente, esperemos que este claro que es muy importante definir las tecnologías utilizadas para los proyectos  del presente y del futuro, y no ir utilizando tecnologías diferentes para cada proyecto.
1.2.       Infraestructura de Trabajo.
Muchos de los lectores pensaran en ¿qué tiene que ver las Infraestructura de trabajo con el desarrollo de software? Pues la respuesta es simple, si desde un comienzo no se posee una infraestructura de trabajo adecuada, entonces el desarrollo de software no se la realizara correctamente.
Entonces, una vez que se tenga definidas todas las tecnologías con las cuales se trabajara, se debe poseer una infraestructura de trabajo, en la Ilustración 1 podemos observar un ejemplo de infraestructura de trabajo.
Ilustración 1. Ejemplo de Infraestructura de Trabajo.
En el ejemplo claramente se muestran 3 entornos de trabajo y la Maquina Local (Máquina en la cual trabaja el desarrollador de software), cada uno de los cuales los describiremos a continuación:
     Producción. El entorno de Producción es el que sale al exterior por medio de una IP pública, los servidores en este entorno no son accesibles por otros entornos (por ejemplo Desarrollo), solamente son accesibles desde internet.
     Test. El entorno de Test es utilizado para realizar pruebas de base de datos, servicios web, páginas web y un el test de paso de entorno, este test de paso de entorno es una prueba que se ejecuta para tener la seguridad que las actualización que se vayan a realizar al Entorno de Producción no causen problemas, todo esto lo explicaremos detalladamente más adelante.
     Desarrollo. El entorno de Desarrollo es utilizado para realizar todas las tareas de desarrollo como tal, por ejemplo crear base de datos, crear servicios web y todo lo que sea necesario en la etapa de desarrollo.
     Maquina Local. La Máquina Local es el equipo asignado a cada miembro del equipo de trabajo, es la PC en la cual el profesional de desarrollo tiene instalado todo lo que necesite para realizar su trabajo, por ejemplo IDE’s, SGBD, aplicaciones de ofimática, etc.
Ahora que ya tenemos una breve idea de cada entorno de trabajo, procedamos a describir como el desarrollador debe proceder a trabajar con cada uno de ellos, describiremos esto con pasos secuenciales para facilitar el entendimiento del lector.
i.      Como en todo proyecto de software se procede con el análisis y diseño del sistema, entre los productos emergentes de esta actividad, encontramos el modelo de la base de datos que lo utilizaremos en el siguiente paso.
ii.     Una vez que tengamos el modelo de base de datos, procederemos a implementarlo en nuestro Entorno de Desarrollo – Desa BD, debemos tener en cuenta que las base de datos NO deben ser implementadas en el SGBD de la Máquina Local en la cual trabaja el profesional en desarrollo de software, ya que con seguridad existirán más miembros del equipo de trabajo los cuales no tendrán acceso a la Máquina en la cual trabaja un miembro, la BD debe estar implementada en un SGBD que resida en un Servidor de BD de desarrollo a la cual tengan acceso todos los miembros del equipo.
iii.      Una vez que tenemos nuestro servidor de base de datos corriendo y que todos los miembros del equipo tienen acceso a este servidor podemos proceder con el desarrollo de nuestras aplicaciones, servicios web, sitios web, etc. Todo esto de desarrollo lo trabaja cada miembro del equipo en su Maquina Local.
iv.      Cuando, por ejemplo, el encargado de desarrollo de servicios web termina un servicio, lo sube al Servidor de Servicios Web de Desarrollo, así los demás miembros del equipo ya podrán hacer uso de dicho servicio web; lo mismo se aplica cuando el encargado del sitio web culmina un web form, vista, etc., lo publica en el Servidor Web de Desarrollo. Es así como se va trabajando con el entorno de desarrollo.
v.     Una vez que se termine un entregable y se desea que este pase a producción, previamente se hace una simulación de paso a producción, pero con el entorno de Test, si al pasar todo el sistema al entorno de Test no ocurre ningún problema, esto quiero decir que el sistema puede pasar al entorno de Producción.
vi.    Como en el paso v. ya pasamos el sistema el entorno de Test, ya tenemos la aplicación corriendo y podemos hacer todas las pruebas pertinentes que necesite el sistema.
vii.    Si hasta este paso todo corrió a la perfección, significa que ahora SI el sistema puede ser pasado al entorno de Producción.
Nota. Antes de pasar al entorno de Producción los profesionales deben estar seguros de que la NO ocurrió ningún problema en el paso v. y en el paso vi.
1.3.       “Políticas” de Trabajo.
Las políticas de trabajo son bastante importantes y deben ser respetadas por cada miembro del equipo, a continuación mencionaremos algunas políticas de trabajo.
     Ninguna sistema podrá pasar al entorno de Test sin antes haber sido subido al entorno de Test y no haber reportado problema alguno, tanto en la subida como en la funcionalidad del sistema
    Una vez que se tenga definidas las tecnologías que se utilizara para el desarrollo de software, ningún miembro del equipo podrá utilizar otra tecnología.
    Todos los días, al terminar la jornada laboral, todos los miembros del equipo deberán subir sus avances de código al Servidor de Versionamiento (por ejemplo TFS)
Todas las políticas definidas en un entorno de trabajo, sirve bastante, ya que define un lineamiento que debe seguirse y así todos los miembros del equipo hablen el mismo idioma.

En la siguiente entrega procederemos a mostrar un entorno de trabajo (una versión simplificación del entorno de trabajo mostrado en la Ilustración 1) corriendo, para posteriormente poder hacer el uso de estos.


sábado, 19 de septiembre de 2015

Hola a todos los lectores, este es la primera vez que creo un blog y entro en esto de las publicaciones en Internet, espero que me vaya bien.
Les comento que durante dos años trabaje en una institución donde se desarrollaba software de alta calidad con buenas prácticas, cuando deje de trabajar en tal institución encontré muchos trabajos donde no me sentí a gusto porque el desarrollo de software lo hacían, mmmm, digamos que de pésima manera.

Por tal motivo decidí crear el presente blog, en el cual intentare reflejar todo lo aprendido y que ustedes (lectores) puedan aprender algo más de lo que ya saben, y al mismo tiempo yo pueda aprender junto con ustedes por medio de sus interrogantes.
Bueno, en la siguiente semana llega la primera publicación del tema y espero que les sirva mucho.