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 .... )

lunes, 16 de septiembre de 2013

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

Estoy viendo muchas veces en prensa noticias con intenciones más bien malévolas acerca de instituciones públicas o otros organismos diciendo que tal o cual organismo se ha gastado xxx miles de euros (o cienes de miles) en una aplicación web y claro, a continuación salen comentarios de todo tipo acerca de derroche, dispendio, que si eso lo hago yo con cuatro duros, que si patatín que si patatán ... vamos, al igual que cada celtíbero tiene un seleccionador de fútbol en su interior tiene un arquitecto software.

La pregunta es ¿vale una aplicación los dineros que ha salido en el concurso o no? ¿está trincando alguien o no? ¿caso no saben lo que validan en concurso? Pues hay una respuesta muy clara: depende.

Y con esto doy por finalizada mi exposición .... ¿qué pasa? ¿por qué me miran así? ¿no les ha quedado claro? Valeeeee, me explico. Agárrense los machos que esto va a ser largo (por eso de lo del I del título)

Lo primero he de decir que llevo más de veinte años haciendo sistemas informáticos. En ese tiempo he visto evolucionar tecnologías, desaparecer, cambiar, nacer y morir sistemas (y otros que no los matas ni a tiros) y me he presentado a algunos concursos públicos y he contestado a docenas de RFP, RFI y RFQ cosas que por cierto, cuestan dinero y que alguien acaba pagando siempre en forma de costes indirectos (si no es este cliente, es el siguiente) y la primera experiencia es que por lo general, suele saber de lo que habla. El presupuesto de dichos trabajos por lo general suele ser "justito" en el mejor de los casos. Otra cosa es que se pueda manipular el proceso de adjudicación o que en la fase de ejecución la empresa elegida se quede sin dinero y se les caiga el boli hasta que les unten más. Cierta afamada consultora con una letra repetida en su nombre es una experta en ello (aparte de ganar los concursos desde "arriba") Otra cosa interesante de los concursos públicos es que son con IVA INCLUIDO o lo que es lo mismo, en un concurso que el importe total sea de 100.000 € al encargado del proyecto le quedan solo 82.644 para ejecutarlo. buen pellizco ¿no?

Pues como no hay nada mejor que un ejemplo para ilustrar las cosas, vamos a intentarlo. Vamos a imaginarnos una localidad de tamaño medio, de nombre Bustelfollado. En esta localidad el alcalde ha decidido que ya hay que entrar en la era de los ayuntamientos 2.0 (como si hubiera llegado a la 1.0) pero como lo suyo no es la informática con buen criterio decide buscar a alguien que entiende y lo primero que hace es consultar al personal del Ayuntamiento. Por desgracia la rotación en el Ayuntamiento no es muy elevada y el último funcionario accedió a la plaza en 1995 antes de que explotara una cosa llamada la burbuja puntocom y no están muy al día en el tema. Cierto que el Principado de Asturias les ha puesto una serie de ordenadores y algunas aplicaciones que son útiles para ver las parcelas de la gente pero aparte de utilizar cuatro cosas y darle a Ctrl-Alt-Del ocho veces al día de media, la gente no es muy experta. A lo mejor es que los sistemas son un poco antiguos, pero como ya se han acostumbrado al Windows 98 SE los funcionarios no quieren cambiar nada.

¿Os pensabais que me lo había inventado? Pues no. Fuente: Propia.

Tras consultar al personal del Ayuntamiento resulta que el hijo del Ernesto que es un juaker de esos, que  tiene tuinter, feisbú, guasap y lee el periódico en una tele pequeña que resulta que le ha costado tanto como una tele de 42" pulgadas del Media Markt ... hay que ser tonto para comprar eso. Este les habla de algo llamado Open Source, bases de datos, Web 2.0, SSL, Apache, Tomcat ..... total que el alcalde y el secretario salen de hablar con el chaval con una cosa muy clara: ¡qué bonito debe ser eso de hablar idioma y en qué leches estaba hablando el gachó!

Por suerte para el alcalde de Bustelfollado andaba por ahí cerca el marido de la Maru, uno con cara de tonto que dicen que es informático pero que trabaja en una empresa que todo el mundo asocia con otra cosa. Como se aburre por el pueblo se dedica a arreglar grifos, cables o lo que sea con tal de pasar el rato. Y por suerte para el alcalde, tiene una amplia experiencia con altos directivos que curiosamente algunas veces recuerdan a nuestro despistado alcalde. Al final se ponen a hablar con él y ya la primera pregunta que les hace les desconcierta. Menudo resabidillo.
- ¿Qué quieren ustedes hacer con su aplicación?- ¿Cómo que qué queremos hacer? ¡habráse visto semejante morro! ¡que nos lo diga él que es el que sabe!
 Aunque claro, el secretario del ayuntamiento que lleva allí 30 años y ya ha sobrevivido a varios alcaldes empieza a pensar que casi igual tiene razón.
- Alcalde, mira que cuando hacemos un edificio antes pensamos para qué lo queremos ... aunque luego no lo usemos. Recuerda que cuando hicimos el polideportivo era para que los chavales jugaran al baloncesto dentro si llovía (el hecho de que el chaval más joven tenga 38 años es anecdótico) y cuando hicimos el mercado de ganado era pensando en hacer ferias de ganado. Vale que ya todo el ganado se compra y vende en mercados más grandes a 100 kms de aquí, pero tenemos mercado de ganado.
- Pues va a tener razón el jodío este.
- Por ejemplo, podemos utilizar la página para informar de cosas del ayuntamiento, para que los vecinos no tengan que venir a enterarse a la puerta del ayuntamiento. Además Ricardo el pregonero anda jodido del asma y cualquier día se nos muere de tanto soplar la trompetilla.
- Pues no es mala idea.
- Y les podemos informar de cuando se paga el IBI, los vados, el impuesto de circulación, la basura que todos estos se hacen los locos, como que no se enteran.
- También está bien la cosa.
- Y de paso, que se puedan pagar recibos por ahí, que el de la Caja Rural se jubila el año que viene y no creo que pongan otro y la gente tendría que hacerse 40 kms para pagar un recibo.
- Pues me gusta esto del ayuntamiento 2.0 .... además me podrían cambiar el solitario ese del ordenador, que ya me lo sé de memoria. A ver si me ponen un juego de Tute o algo más moderno
- Alcalde creo que no es para eso ....
- Oye (al informático) ¿y si empiezas a trabajar y te vamos diciendo?- ¿y que les parece si me empiezan a pagar lo que les diga y ya voy haciendo? ¿no? Pues yo igual. no ya es perro viejo para que le cuelen eso (AVISO A NEOFITOS: ni se os ocurra aceptar esa modalidad de contrato nunca)
 Pues con esta sencilla conversación se inicia el primer paso de una especificación de requisitos (no requerimientos) de una aplicación. De la capacidad de los ingenieros de requisitos, de la capacidad del cliente para expresar sus deseos y del grado de detalle suele depender bastante el éxito del proyecto (aunque los proyectos por lo general suelen pegar bastantes giros)

Aquí tenemos el primer gasto del proyecto: un equipo bueno de requisitos es caro aunque para el Ayuntamiento de Bustelfollado se lo vamos a dejar baratito: un equipo de dos personas trabajando un mes (toma y redacción de requisitos) son 40 jornadas, a 300 € jornada salen 12.000 € y no hemos tirado una línea de código.

A lo mejor esto puede parecer caro sobre todo si sabemos lo que cobra un informático últimamente pero una jornada de una consultora estrella estilo HP, Accenture, IBM o Indra sale por bastante más caro. Para abaratar sus precios globales suelen recurrir a empresas filiales con un status inferior (sobre todo en sueldo y condiciones laborales) como Coritel o subcontratas a las que se exprime en lo posible (o más) que suelen ser las que hacen el trabajo sucio (a todos los niveles)

Ya tenemos los requisitos establecidos y en un alarde de ingenuidad digno de un recién salido de la Facultad de Económicas (el de Informática ya sale medio resabiao) adorador de Milton Friedman nos creemos que los requisitos son correctos y vamos a diseñar la arquitectura del sistema. Esto es como cuando te vas a comprar un Mercedes. La cantidad de opciones es tan amplia que te puedes hacer un sistema desde una cantidad realmente moderada a gastarte millones de euros. Por ejemplo, sin entrar en la arquitectura software del sistema (eso lo voy a dejar para la siguiente entrada) vamos a echar una risas.
- Alcalde ¿dónde va a correr la aplicación?- ¿cómo que dónde? En la Internete esa ¿no?- Noooo ¿qué dónde van a estar los servidores?- ¿Los servicios? joder, dónde siempre, al final del pasillo a la izquierda. Ten cuidado con la cisterna que si no tiras recto se engancha y queda echando agua ....- Que no, que los ordenadores, que dónde los vamos a poner.- ¡ah! leches que raro habla esta gente. Pues en el ayuntamiento.- Tenemos un problema de infraestructura. Aquí no hay CPD y para todo lo que necesita hay que colocar unas cuantas máquinas.
¿A qué nos referimos? Pues a una condiciones adecuadas para instalar unos cuantos servidores que no son PC de Media Markt para meter unos datos y que no es demasiado grave que se caigan. Si estos servidores se caen, se va todo a tomar por el saco. Vamos pedir una serie de cosas al señor alcalde:
- Sistema de alimentación ininterrumpida. Lo ideal sería una doble acometida eléctrica pero en España dónde las eléctricas campas a sus anchas es prácticamente imposible. Entonces los servidores deben estar alimentados por un sistema de baterías conectado a un generador que se arranque de manera automática en caso de problema eléctrico. Un sistema similar de baterías con un generador de 50 kVA puede salir por unos 10-15.000 € fácilmente instalado.
- Extinción de incendios que no estropee las máquinas. Otros 4-5.000 € (me lo he inventado, no se por cuanto puede salir)
- Sistema de climatización. Por suerte Bustelfollado no está situado en una zona demasiado cálida con lo que no hace falta un equipo demasiado potente. Se puede aprovechar el aire frío del exterior la mayor parte del año con lo que con unos equipos de 4.000 € alcanza.
- Red eléctrica: aumentar la potencia, instalación de acometidas, cuadros, .... Otros 5.000 €
- Comunicaciones. Una red Macrolan (nada de red de backup) de 10 Mbps simétricos ... unos 4.000 € al mes.

Vamos que de mano aflojamos 25.000 € más las comunicaciones.
- Esto ... ¿y no hay otra alternativa más barata?
Hombre, se puede instalar en precario solo con la corriente y si se caen en verano o se quema algo se jode todo .... (pues aunque no lo parezca, esto se hace mucho más de lo que se piensa) o llevarlo a un datacenter que nos cobren por alojarlo.
- ¿Y cuanto nos cobra ese chisme por alojarlo?
Si es mas económico que hacer una inversión de este estilo pero claro necesitamos saber que les vamos a llevar.
- Pues un chisme bueno, claro. 
Pues mira, hay una cosa maja. Un chasis de c7000 de HP que puede alojar hasta 16 servidores. Es uno de los más usados. A ésto se le puede añadir una cabina de discos HP de gama media que va muy bien y tendríamos capacidad actual y de crecimiento.
- Eso me gusta ¿y cuanto vale eso? ¿5.000? ¿6.000 €?- Pues el chasis vacío como unos 30.000 €, cada servidor 6-8.000 dependiendo de la configuración, la cabina de discos varía un poco pero empezando en 60.000 podemos apañar .... señor alcalde ¿se encuentra bien? Se está poniendo de un color muy raro .... señor alcalde responda ......
Captamos la indirecta de que el presupuesto no le convence al alcalde con lo que descartamos a HP y con disimulo ocultamos el presupuesto de IBM que habíamos pedido con la sibilina intención de mostrarle que HP no eran tan caro. Descartamos el alojamiento en máquinas físicas y mejor pensamos en algo en virtual. Al fin y al cabo, el hecho de alojar algo en un DC no estan chollo. Te clavan en torno a 1.000 al mes sin hacer nada y te cobran la corriente que te puede salir por más de 1.500 € al año por KW y esos dos chisme pueden llegar a consumir 14 KW aunque seguramente el consumo real no pase de 7 serían unos 10-11.000 € solo de corriente.

Vámonos a la nube que encima está de moda (pero eso será en la próxima entrada)