domingo, 22 de septiembre de 2013

Vamos a diseñar un sistema informático (II)

Ya en la entrada anterior habíamos dejado al Ayuntamiento de Bustelfollado metiéndose en la vorágine de las AAPP 2.0. De mano, ya se han gastado 12.000 € y lo que tienen es ... una relación de cosas que quieren hacer y que no han hecho. Si es que eso de que "yo hago la web en dos patás y con tres duros" no a va a ser verdad.

Ahora ya sabemos (más o menos lo que queremos) vamos a ver cómo lo hacemos y qué productos podemos usar. Lo normal sería una arquitectura en tres niveles con capa de presentación, lógica de negocio y datos. Por supuesto, un ayuntamiento tan importante no puede tener sus servicios caídos con los que necesita una cosa llama Alta Disponibilidad o High Availability o HA (Hache-Á como se dice en círculos tésnicos) para los amigos que ya tenemos confianza con ella.

Los tres niveles de marras según la Wiki.
Total, que una vez decidida en un alarde imaginación e ingeniería vamos a ver qué middleware vamos a utilziar.
- ¿Middlequé?- Tranquilo señor secretario que se lo explico (el alcalde ya hace días que decidió que esto le quedaba grande y delegó en el secretario)
Pues básicamente dónde va a correr el SW. Los datos se almacenan en una base de datos, hay una capa de presentación que pinta las pantallitas y una tercera que procesa los datos. Pero vamos a empezar por la BD. Una de las mejores y más extendidas es el SGBD de Oracle. Lleva un montón de años en el mercado, funciona muy bien, es muy potente (y come HW por un tubo) Aparte de eso dicen las malas lenguas que dentro de su nombre, oculta un mensaje al estilo de los discos de rock satánicos de los 80. A saber que será ese mensaje.
¿Hay un mensaje oculto?


Un pequeño problema que tiene el SGBD de Oracle es que precisamente, lo que se dice tener un precio competitivo .... pues como que no lo tiene. Una licencia para un par de máquinas con una CPU configuradas en cluster cuestan tan solo ... 100.000 € más otros 17.000 € al año concepto de soporte. Por cierto, si virtualizars, hay que pagar eso por cada CPU susceptible de usar Oracle. Un ejemplo que pone una conocida empresa de virtualización es que por una licencia de 2 núcleos corriendo en un entorno virtual de unos 144 núcleos pedía Oracle unos cuatro millones de dólares ¿o eran cinco? Vamos, la cifra es anecdótica pero ojo al virtulizar Oracle salvo que se use su propio virtualizador (OVM)

Hay versiones mucho más baratas como MySQL que con soporte sale por poco más de 1.000 € por servidor. No tiene ciertas cosas como al Enterprise de Oracle que te garantiza la persistencia de los datos hasta en las peores circunstancias, pero dependiendo de para que la queremos puede servir. El problema es que desde la adquisición de SUN Microsystems por parte de Oracle es un producto de Oracle y éstos podrían "cambiar" la política comercial (por el momento no lo han hecho y dicen que no lo van a hacer, pero allá cada cual) Hay un fork de MySQL llamado MaríaDB que puede ser adecuado, pero personalmente yo no metería en ninguna aplicación seria una BD sin soporte (MariaDB lo tiene de pago) dado que un bug en la aplicación (todas tienen bugs y ésta no es una excepción) te puede tirar una aplicación. También podemos irnos a SQLSERVER de Microsoft, que es más barato aunque luego las licencias de los Windows son un dinerillo unos 900 € por servidor (soporte anual aparte) más el CAL (acceso por clientes) Claro que nos podemos olvidar de Microsoft y irnos a Linux para llevar el susto de las suscripciones (algo similar a la licencia) anuales de Red Hat (con soporte) cuestan prácticamente lo mismo que las de Windows 2012 Server (encima por licencia, no se puede usar RedHat si tener el sistema "suscrito" Claro que hay otras opciones como CentOS (es el RH free) o Ubuntu Server. Es recomendable tener algún tipo de soporte que no va a costar los 5.000 € de Windows o RedHat, pero va a costar.

Subiendo hacia la capa de aplicación y yéndonos a los simple, podemos optar por algo OpenSource baratito estilo Glassfish, Tomcat o JBOSS. Hay versiones con soporte pero aquí le vamos a pasar al muerto a la empresa desarrolladora y que sea ella quien se coma el marrón. Y lo mismo vamos a hacer con la capa de presentación 
- ¿y este chollo?  Pregunta el secretario con algo de esperanza.- Que te lo has creído. Al desarrollador le vas a pagar por hacer la aplicación, probarla  soportarla, las modificaciones, ....
Pues resulta que lo encargados de "hacer" la aplicación en realidad hacen diversas cosas (o al menos deberían) como revisar los requisitos, desarrollarlos, implementar la aplicación, probarla, hacer pruebas de prestaciones, probar la seguridad, desplegar la aplicación, evolucionarla, corregir errores, .... (por todo lo que vayamos eligiendo de esta lista, póngase xx € más) Por cierto, cuando el proyecto va de culo se suele recortar por la parte de final o lo que es lo mismo por el despliegue y las pruebas de sistemas. Craso error. El despliegue te lo puede salvar un equipo muy competente y experto (por cierto, eso es caro, por eso no suele haber) pero lo que se escapa de PS .. se lo come el usuario y suele salir mucho más caro de arreglar.

Un desarrollo de una aplicación de la complejidad que estamos abordando (información del Ayuntamiento, pago de impuestos, notificaciones, ...) puede necesitar de 3 a 6 meses para ponerla en condiciones en funcionamiento. Yéndonos al caso más optimista, vamos a suponer que son 3 personas trabajando ello tres meses. a 200 € la jornada ya son 36.000 €. Otra semanita para desplegarla en condiciones son otros 2.000 €. Y vamos a mantenerla y evolucionarla. Métele 100.000 € más al año (siendo muy optimista y con un equipo de desarrollo muy pequeño)

Y todavía no hemos contado el alojamiento de la aplicación. Llevártela a un datacenter en condiciones de operación fetén (no me vale una VM de Amazón, pedimos algo más) te puede salir yendo muy por lo bajo por 2.000 € al año por servidor virtual. A medida que aumentamos el espacio ocupado en storage la cosa sube, al igual que a medida que suben el número de VM necesarias (si el Ayuntamiento se tiene que montar un CPD le sale más caro hasta llegar a cierto volumen).

Al final el secretario del Ayuntamiento ve que la idea del alcalde le sale tranquilamente por 150.00 € al año (si todo sale bien), sin contar con todo el marrón que se tiene que comer el pobre si lo desarrollan desde el ayuntamiento. Al final llega al despacho del alcalde y le dice.

- Alcalde, al final hemos decidido que lo mejor es sacar esto a concurso público para que una empresa nos lleve todo esto. - ¿Un concurso público? ¿sabes el rollo que es esto por poco dinero?- Es que la broma nos va a salir por más de 150.000 € al año .. si tenemos suerte. Posiblemente el doble. si convocamos un concurso que nos incluya todo (licencias, alojamiento, backup, explotación) por unos 200.000 al año seguro que ahorramos.- Pues nada, llama a la gente que vamos a redactar el pliego.
Al final nos encontramos que el Ayuntamiento de Bustelfollado ha convocado un concurso público para informatizar el ayuntamiento por un importe de 500.000 para tres años. La noticia sale en el principal periódico del pueblo el Bustelfollado Herald Tribune que como en su día la hermana del alcalde no se quiso casar con el director del periódico Peter Jey Ramiro titula en su portada:

Escándalo en Bustelfollado. 
El alcalde dilapida un millón en euros en una aplicación que me ha dicho mi cuñado que se hace en dos patás.
Ni que decir tiene que la noticia llega a portada de Menéame dónde sale la opinión del cuñao del piriodista como una verdad absoluta.

(continuara .... )

No hay comentarios: