<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JJMora.es</title>
	<atom:link href="http://jjmora.es/feed/" rel="self" type="application/rss+xml" />
	<link>http://jjmora.es</link>
	<description>"I think the major good idea in Unix was its clean and simple interface: open, close, read, and write." Ken Thompson</description>
	<lastBuildDate>Thu, 30 Dec 2010 16:27:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Cloud Computing en 5 minutos</title>
		<link>http://jjmora.es/cloud-computing-en-5-minutos/</link>
		<comments>http://jjmora.es/cloud-computing-en-5-minutos/#comments</comments>
		<pubDate>Tue, 19 Oct 2010 08:53:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Opinión]]></category>
		<category><![CDATA[Virtualizacion]]></category>

		<guid isPermaLink="false">http://jjmora.es/cloud-computing-en-5-minutos/</guid>
		<description><![CDATA[Profesionalmente comencé en el mundo IT con el boom de las punto.com y Linux. Viví el declive de las máquinas multiusuario, a las que te conectabas con una vt100 y todo en modo texto. Justo con el nacimiento de las granjas de servidores, formadas por máquinas de una CPU, preferentemente con Linux, máquinas baratas con un [...]]]></description>
			<content:encoded><![CDATA[<p>Profesionalmente comencé en el mundo IT con el boom de las punto.com y Linux. Viví el declive de las máquinas multiusuario, a las que te conectabas con una vt100 y todo en modo texto. Justo con el nacimiento de las granjas de servidores, formadas por máquinas de una CPU, preferentemente con Linux, máquinas baratas con un SO libre. Las granjas de máquinas Linux se convirtieron en un nuevo paradigma IT, gracias al cual, ya no necesitabas gastar una cantidad ingente de dinero en una máquina de 4, 8 o 16 CPUs, podías montar una granja de servidores con máquina de una CPU, mucho mas baratas, y se podía conseguir la misma o mayor capacidad de cálculo a un coste increíblemente inferior.<span id="more-168"></span> En general las granjas eran mas baratas de adquirir y considerablemente mas baratas de mantener, podías disponer de una plataforma WEB totalmente funcional para implementar cualquier de las ideas del punto.com.</p>
<p>Cada empresa, por pequeña que fuese, disponía de su propia infraestructura, máquinas, comunicaciones, almacenamiento, backup, etc. Miles de de micro-CPDs aparecieron como setas por todos lados. Una empresa mas o menos grande disponía de varios, por no decir decenas, de estos micro-CPDs, era una época en la que Internet movía mucho dinero y esto se traducía en un aumento notable en la inversión en IT, eran los felices años de &#8220;las vacas gordas&#8221;.</p>
<p>¿ Por qué hablo de todo esto ? Porque muchas veces solemos perder la perspectiva temporal del entorno en el que trabajamos y especialmente en el mundo IT, la llegada de nuevos paradigmas son acogidos como verdaderos salvadores, cuando sencillamente, en la mayoría de los casos es el reflujo de algo con lo que ya se trabajaba antes, pero con otra denominación y algunas características realmente innovadora. La informática nació en entornos concentrados, grandes máquinas destinadas para cálculos que requerían mucho tiempo de procesamiento y que trabajaban con colas de ejecución, donde tenías que solicitar un tiempo de CPU para ejecutar tus programas. Posteriormente, se produjo una evolución, al aparecer los primeros PCs, donde cada usuario podía disponer de su propio ordenador. Con la llegada de los PCs los usuarios no necesitaban acceder a máquinas grandes y costosas para realizar sencillas tareas como editar un fichero de texto, ahora cada usuario disponía de su propio ordenador personal donde ejecutar sus programas y almacenar su información, y no debía compartir con otros usuarios el tiempo de CPU. Este nuevo modelo también sirvió para desarrollar las redes de comunicaciones que se empleaban para interconectar PCs y permitir a los usuarios poder trabajar con información que no estuviera almacenada en su PC.</p>
<p>Después de un periodo de expansión, irremediablemente viene otro de contracción, como bien sabemos por los efectos en la economía. Podemos asegurar que el periodo de expansión ya ha terminado por lo que actualmente nos vemos inmersos en una etapa durante la cual veremos como se desarrolla una tendencia para volver a concentración de la tecnología IT, argumentando un mejor aprovechamiento de los recursos gracias a las sinergias, ahorrar costes y hacer mas accesible las distintas tecnología de la información a las empresas y los usuarios finales.</p>
<p>Desde el punto de vista IT, estamos saliendo de una etapa donde se ha producido una dispersión geográfica de la información, cualquier empresa o usuario disponía de capacidad para la creación y almacenamiento de la información, esto ha supuesto que la información de una compañía, por ejemplo, aunque pensemos lo contrario, se encuentre dispersada por centenares de sitios, desde PCs de usuarios a bases de datos en servidores y ahora nos estamos dando cuenta del coste real de mantener toda esta información y sobre todo qué información de toda la que maneja una organización es realmente útil para el desarrollo del negocio. Un ejemplo, ¿cuanto espacio de almacenamiento de una empresa contiene información personal de los empleados? ¿cuanto cuesta el mantenimiento anual de toda esta información? ¿cuanto ocupa el backup de toda esta información?, en la actual época de recortes en los presupuestos, tener que destinar dinero de un departamento de IT para gestionar información que no está directa o indirectamente relacionada con el negocio de nuestra organización se ha convertido en un despilfarro. Hemos puesto el ejemplo del almacenamiento, pero otro tanto ocurre con las licencias de software o las infraestructuras para maquetas o pruebas, son casos en los que el gasto IT se dispara</p>
<p>La mayor parte de mi vida profesional ha estado ligada a la administración de sistemas y por lo tanto he tenido que estar muchas horas en los CPDs y una cosa que desde el principio siempre me llamó la atención fue ver el derroche tan enorme de recursos que suponía el modelo de granjas de servidores. En cualquiera de los CPDs en los que he trabajado existían filas y filas de racks llenos de máquinas, los cuales solían estar muy por debajo de sus posibilidades, si lo pensamos un momento hablamos de miles de billones de ciclos de CPU desperdiciados, miles de millones de vatios consumidos únicamente para ejecutar operaciones NOP en los procesadores. Desde la perspectiva actual donde tecnologías como la virtualización se están imponiendo, pensar en miles de máquinas empleando un 10% de su CPU suena sencillamente absurdo. Todos los fabricantes disponen de alguna herramienta de virtualización, las cuales nos venden anunciando las ventajas de utilizar de forma inteligente todos los recursos de los que disponemos.</p>
<p>Sin analizar la situación económica con la que se desarrolló el modelo de granja, que lo justifica por si mismo, sino analizando el aspecto puramente técnico, siempre he pensado que las granjas de servidores era un derroche de tecnología, de recursos que no estaban siendo utilizados, pero que ocupaban espacio físico, consumían potencia y generaban calor, es decir, había máquinas las cuales estaban consumiendo energía, con ventiladores funcionado para enfriar un hardware que realmente no estaba siendo utilizado, cualquiera que haya trabajado con granjas de servidores sabe de qué estoy hablando y mi sensación al entrar en un CPDs era que en vez de granjas de servidores para dar servicios a aplicaciones, lo que había eran granjas de ventiladores para mover aire en los CPDs.</p>
<p>¿Sorprendente verdad? da un poco de escalofríos que en plena crisis económica pensemos cuanto dinero de IT se ha tirado por la alcantarilla, pero eran otros tiempos y no debemos perder la perspectiva económica de esos tiempos, ahora es fácil criticar las decisiones que tomamos en el pasado, pero la realidad es que las granjas fue un modelo barato que permitió el avance de la tecnología relacionada con IT, al abrir la caja de Pandora que estaba controlada por una serie de fabricantes. Ahora, la situación económica ha cambiado y el mercado obliga a las áreas IT a la <strong>reducción de costes</strong>, lo que significa sencillamente menos <strong>inversiones</strong>. Los fabricantes producen máquinas con menos consumo y mas capacidad de computo y reaparece en escena una tecnología como es la <strong>virtualización</strong>. Ahora a todo el mundo se le llena la boca de las bondades de virtualizar para aprovechar los ciclos de CPU, permitiendo que varios usuarios trabajen sobre la misma máquina, aprovechando todo lo posible los recursos disponibles de una máquina. Y por si fuera poco, aparece el concepto de <strong>Cloud Computing</strong> como paradigma redentor de los problemas de las áreas de IT y solución perfecta para la reducción de costes.</p>
<h2>¿ Qué es Cloud Computing ?</h2>
<p>No existe una definición unificada del concepto <strong>Cloud Computing</strong>, esta falta de acuerdo en la definición provoca que bajo el paraguas de este término se acomoden todo tipo de tecnologías e  implementaciones, generando un gran desconcierto para la gente de IT, a la que se le piden soluciones de este tipo y sobre todo para la gente de Negocio, que ven en este nuevo paradigma la solución para muchos de los problemas actuales que las organizaciones tienen en las áreas de IT.</p>
<p>Podemos decir que <strong>Cloud Computing</strong> consiste en una serie de servicios los cuales se ofrecen a los usuario  y la infraestructura IT sobre los que se soportan son mas o menos transparentes para ellos. Desde el punto de vista del usuario estos servicios se encuentran en la nube (Cloud), para el usuario la nube consiste en la red, en muchos gráficos donde se representan equipos interconectados se utiliza una nube para representar esa parte de la infraestructura de la que no tenemos conocimiento y que realmente no es imprescindible conocer su constitución para que nuestro esquema tenga sentido. Por lo tanto la nube es la infraestructura de la que no deseamos tener conocimiento, únicamente la vamos a utilizar sin tener la necesidad de preocuparnos por sus problemas o limitaciones.</p>
<p>El concepto de <strong>Cloud Computing</strong>, es bastante genérico y no existe un estándar que se pueda seguir, por lo que los distintos fabricantes aplican este término a tecnologías que a veces, no tienen mucho que ver entre ellas, sencillamente se ha dado el pistoletazo de salida para vender un nuevo concepto y en esta carrera todo vale, cualquier cosa hoy día es <strong>Cloud</strong>. Pero sin entrar en temas concretos sobre lo que los fabricantes quieren que compremos, podemos analizar el termino <strong>Cloud Computing</strong> desde una perspectiva en la que se engloba, de forma totalmente general y abierta, una serie de tecnologías y buenas practicas. Existen una serie de características que una solución Cloud debería cumplir, pero no es estrictamente obligatorio que las cumpla todas:</p>
<ul>
<li><strong>Deslocalizacion de la plataforma IT</strong>. La infraestructura IT necesaria para que el servicio funcione, no necesita estar en las instalaciones del cliente. El cliente sencillamente utiliza un servicio que está sobre una infraestructura que puede localizarse en cualquier parte del globo y de la que no necesita conocer nada.</li>
<li><strong>Elasticidad de los recursos</strong>. El cliente no debe preocuparse por la capacidad de los recursos asignados al servicio que ha contratado, ya que en caso de que fuese necesario emplear mas recursos para un servicio, debido a un pico de trabajo por ejemplo, sencillamente se asignan nuevos recursos sin necesidad de parar el servicio, permitiendo de forma mas o menos dinámica  redimensionar los recursos que utiliza el servicio, una vez que las necesidades de recursos disminuyan, se podrían liberar los recursos no utilizados.</li>
<li><strong>Auto-Billin</strong>g. La facturación se realizará de forma automática sin tener que renegociar las condiciones del servicio, el modelo es el mismo que el empleado en la facturación telefónica, se cobra por lo consumido.</li>
<li><strong>Virtualizacion</strong>. La virtualización es una tecnología imprescindible para desarrollar un servicio Cloud, ya que permite aprovechar de forma mas eficiente los recursos IT disponibles, balanceando dichos recursos entre distintos servicios si fuese necesario y sin la necesidad de parar el servicio.</li>
<li><strong>Aceso universal</strong>. Al estar el servicio en la nube, el acceso a dicho servicio es universal ya que se debería poder acceder desde cualquier punto del planeta, ayudando de esta forma a la integración de aplicaciones en entornos corporativos distribuido en distintas localizaciones.</li>
<li><strong>Gestion simplificada</strong>. La gestión por parte del cliente del servicio debería ser mediante una serie de procedimientos y aplicaciones sencillas que faciliten el trabajo de provisión, incidencias, cobros, etc. De los servicios contratados, así como seguimiento de los niveles de servicios acordados.</li>
<li><strong>Reducción de los costes</strong>. Normalmente las infraestructuras que soportan servicios Cloud son utilizadas por varios clientes, lo que permite reducir los costes de inversión y mantenimiento de la misma, trasladando estos ahorros a los costes que el cliente tiene al contratar el servicio.</li>
<li><strong>Gestion del acceso a la información</strong>. La plataforma cloud suele ser compartida por varias empresas, por lo que se necesita una gestión eficaz de acceso a la información que garantice que otra empresa no puede acceder a mis datos.</li>
</ul>
<h2>Tipos de Servicios</h2>
<p>Cuando hablamos de servicios en la nube, encontramos tres tipos básicos de servicios, cada uno de ellos dispone de un ámbito y características determinadas y se ajusta a una serie de necesidades, por lo que somos nosotros como clientes, los que debemos decidir qué modelo elegir, según las necesidades de nuestra organización.</p>
<h3>IaaS &#8211; Infraestructura como un Servicio</h3>
<p>El modelo de <strong>Infraestructura como un Servicio</strong> consiste en disponer de elementos de infraestructura IT, como son máquinas, SO, almacenamiento, elementos de comunicaciones, etc. Para utilizarlos, bien como parte de nuestra propia infraestructura, bien como elementos sobre los que implementar nuestro negocio.</p>
<p>Un ejemplo de IaaS sería contratar máquinas virtuales con una cantidad de memoria y un número de CPUs, además de un sistema operativo que sería administrado por nosotros. Otro ejemplo de IaaS sería acceder a espacio de almacenamiento para que nuestra organización pueda almacenar los datos y que sean accesibles desde cualquier punto del globo.</p>
<h3>PaaS -  Plataforma como un Servicio</h3>
<p>La Plataforma como un Servicio consiste en disponer de una plataforma sobre la que se desarrolla una serie de aplicaciones que serán la base de la implementación de nuestro negocio. Se trata de un servicio compuesto por herramientas de desarrollo y gestión de datos, con las que podemos desarrollar aplicaciones. Los servicios PaaS normalmente dan acceso a una serie de APIs sobre los que se puede desarrollar para posteriormente utilizar las aplicaciones en la infraestructura que el proveedor posee en la nube.</p>
<p>Un ejemplo de PaaS sería una plataforma sobre la que varios equipos de nuestra organización, localizados en distintos países desarrollan una aplicación que se utilizará internamente en nuestra organización.</p>
<h3>SaaS -  Software como un Servicio</h3>
<p>El último modelo de servicio en la nube es el Software como un Servicio, en este modelo se ofrece un servicio para que sea utilizado directamente por los usuarios, sin necesidad de que el cliente tenga que realizar desarrollos o integrar infraestructuras en la nube. En el modelo SaaS el cliente contrata la utilización de un software y paga por su uso.<br />
Un ejemplo de SaaS sería contratar un servicio en la nube para que nuestra organización gestione la formación de los empleados, mediante un a plataforma de formación en la nube.</p>
<h2>Cloud Computing para Usuarios</h2>
<p>Desde el punto de vista de un usuario que contrata un servicio alojado en la nube, existen una serie de ventajas y desventajas que debemos conocer antes de migrar algún servicio de nuestra organización a la nube.</p>
<p>Entra las ventajas podemos citar:</p>
<ul>
<li><strong>Solo se paga por lo que se usa</strong>, esta característica genera un ahorro directo, ya que con el modelo de <strong>nube,</strong> no hay que repercutir conceptos como los costes de mantenimientos de software y hardware o las inversiones para la ampliación de infraestructuras en caso de que nuestro negocio necesite crecer, solo debemos pagar por los recursos consumidos en la nube.</li>
<li><strong>Se reducen los tiempos de desarrollo del Negocio</strong>. Cuando nos planteamos utilizar un servicio en la nube solo debemos contratar el servicio con unos requerimiento mínimos para que pueda sostener la implementación del negocio que vamos a realizar y pagaremos mas cuando el servicio comience a ser utilizado. Montar maquetas es un proceso sencillo y barato ya que no necesitamos realizar una inversión en infraestructura IT, únicamente contratamos un servicio en la nube, creamos una maqueta y comprobamos si es viable la implementación del negocio, una vez terminada la prueba podemos o bien terminar el contrato del servicio o reducir los recursos contratados para de esta forma reducir el coste del servicio contratado.</li>
<li><strong>Se reducen los problemas derivados de una plataforma IT</strong>. El usuario no debe preocuparse por problemas como la escalabilidad o las copias de respaldo, la nube se encarga de todo, por lo que la organización no tiene que emplear ni tiempo ni recursos en mantener una infraestructura para el Negocio. La organización se puede concentrar en el desarrollo del Negocio.</li>
</ul>
<p>Como desventajas podemos citar:</p>
<ul>
<li><strong>No controlar la localización de los datos</strong>. Un servicio en la nube puede almacenar los datos en distintas localizaciones y el usuario del servicio no tiene control sobre donde están sus datos. Esta falta de control puede suponer un problema dependiendo del carácter de los datos y la legislación de cada país. Por ejemplo, existen verdaderos problemas para poner datos médicos sobre pacientes en la nube o datos de organizaciones gubernamentales que sean catalogados como clasificados, ya que las leyes de cada país con respecto a este tipo de datos son muy estrictas.</li>
<li><strong>El usuario debe preocuparse por los SLA </strong>(acuerdos de niveles de servicio). La única herramienta que el usuario posee para garantizar el servicio que está contratando son los acuerdos de niveles de servicio (SLA), con lo que se medirá la calidad del servicio.</li>
<li><strong>Inversión en comunicaciones</strong>. Otra de las desventajas de utilizar servicios en la nube es que las comunicaciones con la nube deben ser lo suficientemente fiables como para garantizar el acceso a los servicios contratados. Además de la disponibilidad también debemos asegurarnos que el caudal que tenemos de acceso a los servicios en la nube garantizan que el acceso al servicio tiene la calidad necesaria para el desarrollo del Negocio. Las comunicaciones externas son sensiblemente mas caras que las comunicaciones internas. Al tener servicios en la nube nuestra organización podría tener que aumentar los caudales de acceso a la nube con el consiguiente gasto.</li>
<li><strong>Nuestra información &#8220;podría&#8221; ser accedida por terceros</strong>. La gestión del acceso a nuestra información  la hemos delegado a un proveedor de servicios en la nube, un problema de seguridad en dicho proveedor puede provocar que los datos alojados en la infraestructura del proveedor pudieran ser accesibles por otras personas. Nosotros como usuarios debemos ser conscientes de este riesgo y lo que supondría que terceros tuvieran acceso a nuestra información.</li>
<li><strong>Cuidado con los PaaS</strong>. Al desarrollar aplicaciones en Plataformas como un Servicio podemos encontrar el problema de la migración, tanto de los datos, como del código a otro proveedor. Muchos proveedores de PaaS ofrecen plataformas propias de desarrollo de aplicaciones por lo que todo lo que desarrollemos en esta plataformas, muy rara veces podremos migrarlo a otras.</li>
<li><strong>Los recursos no son infinitos</strong>. Una de las características de los servicios en la nube es la elasticidad de los recursos, el proveedor nos dará recursos según nuestras necesidades, pero debemos ser conservadores con esta idea, ya que un proveedor de servicios no puede darnos recursos ilimitados y podemos encontrar situaciones donde nuestras necesidades de negocio requieran mas recursos y el proveedor no puede suministrarnos lo que necesitamos, quedando atrapados en un servicio que nos costará mucho esfuerzo migrar a otro proveedor.</li>
</ul>
<p>Hemos citado ventajas y desventajas que los servicios en la nube pueden presentar para nosotros como usuarios que contratamos un servicio. No todos los servicios presentan todas las ventajas y desventajas, pero debemos recordar que los proveedores de servicios los ofrecen en unas condiciones concretas y que fuera de esa condiciones, todo lo que no esté reflejado en los acuerdos de nivel de servicio, el proveedor no estará obligado a cumplirlo, por lo tanto el utilizar servicios en la nube requiere un esfuerzo a la hora de entender perfectamente qué se está contratando y las características del servicio que se contrata, así como dejar muy claro cuales serán los SLAs que se firmarán.</p>
<h2>Conclusión</h2>
<p>Tecnológicamente la nube es una idea madura, ya existe la tecnología necesaria para que funcione y de hecho ya está funcionando, pero existe un elemento fundamental para su éxito que es la confianza que debe existir entre el cliente y el proveedor del servicio y es en este elemento, la confianza, en la que los proveedores deberán de trabajar en los próximos años para que los clientes vean que utilizar los servicios en la nube es una ventaja y no un inconveniente. Por lo tanto, mas allá de los ahorros de costes, tiempos de disponibilidad,  tipos de acceso o localización de los servicios, debemos preguntarnos como clientes, qué confianza tengo en el proveedor del servicio que estoy contratando, realmente ¿estoy seguro de que mis datos están en buenas manos? ¿cómo encajan los nuevos servicios en la nube con mis planes de contingencia? ¿quién puede acceder a mis datos? Si necesito crecer, ¿el servicio estará preparado? Estas cuestiones son un ejemplo de algunas de las preguntas que nos tendremos que hacer cuando nos planteamos migrar un servicio a la nube y la única respuesta posible es la  confianza que tengamos en el proveedor del servicio. Por lo tanto creo que la confianza entre proveedor y cliente es uno de los pilares fundamentales de la nube.</p>
<p><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://jjmora.es/cloud-computing-en-5-minutos/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Arquitecto o Abeja</title>
		<link>http://jjmora.es/arquitecto-o-abeja/</link>
		<comments>http://jjmora.es/arquitecto-o-abeja/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 10:16:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Opinión]]></category>

		<guid isPermaLink="false">http://jjmora.es/arquitecto-o-abeja/</guid>
		<description><![CDATA[Hace unas semanas cayó en mis manos &#8220;Architect or Bee?: The Human / Technology Relationship&#8221; el libro de Mike Cooley donde realiza una crítica sobre la relación entre la tecnología y las personas, el libro fue publicado en 1980 y aunque han pasado casi 30 años, me parece interesante conocer los puntos de vista de [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unas semanas cayó en mis manos &#8220;<a href="http://www.amazon.com/gp/product/0896081311?ie=UTF8&#038;tag=jjmes-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0896081311">Architect or Bee?: The Human / Technology Relationship</a><img src="http://www.assoc-amazon.com/e/ir?t=jjmes-20&#038;l=as2&#038;o=1&#038;a=0896081311" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />&#8221; el libro de <strong>Mike Cooley</strong> donde realiza una crítica sobre la relación entre la tecnología y las personas, el libro fue publicado en 1980 y aunque han pasado casi 30 años, me parece interesante conocer los puntos de vista de la gente que trabajaba en IT en el pasado para comprender como ellos veían el futuro,  hay que aprender de los errores del pasado para no tropezar con ellos en el futuro. El libro, como curiosidad, es muy interesante, <span id="more-171"></span>ya que refleja las dudas y temores sobre el transito de la <strong>Sociedad Industrial</strong> a la <strong>Sociedad de la Información</strong> y aunque algunas de las reflexiones no se han materializado de una manera que podríamos considerar dramática para el ser humano frente a la máquina, otras siguen de rabiosa actualidad.</p>
<p>Pero algo del libro que me llamó la atención fue la razón del título de &#8220;<strong>Arquitecto o Abeja?</strong>&#8220;, se debe a una referencia al libro de Karl Marx <strong>El Capital</strong>:</p>
<p><em>&#8220;&#8230;la abeja avergüenza con la construcción de sus celdas a mas de un arquitecto. Pero lo que diferencia al peor de los arquitectos de la mejor de las abejas, es que éste ha creado la celda en su cabeza antes de comenzar a construirla&#8230;&#8221;</em></p>
<p>Es decir, realmente lo importante no es construir algo, sino el proceso creativo que culmina con la creación del método para construir algo. Y esta diferencia es la que <strong>Mike Cooley</strong> subraya en su libro, intentando trasmitir la idea de que los sistemas no se deben construir sin contar con las personas, es decir que el sistema que se construye tenga como referencia central al ser humano y no al contrario. El libro no deja de ser una crítica a un  posible futuro desde la perspectiva de 1980 y como tal hay que leerlo, además también hay que ser críticos con los críticos, por lo tanto no digo que el libro sea una piedra de Rosetta para entender la actual relación entre el hombre y la tecnología, ni siquiera para justificar nada de lo que está pasando en el mundo IT actualmente, pero si hay un tema que me hizo reflexionar y es el papel que jugamos las personas que trabajamos en ciertas áreas IT, en mi caso los Sistemas, en el actual marco económico y tecnológico, y hacia donde está derivando la situación actual, producto de una época de crecimiento y que en estos momentos necesita un reajuste para soportar la actual situación de crisis.</p>
<p>El mundo IT, ha vivido una época de bonanza económica lo que provocó que las compañías invirtieran mucho dinero y recursos en las áreas de <strong>Sistemas</strong>, otras áreas como la de <strong>Desarrollo </strong>también han crecido de forma considerable pero no de la forma que lo han hecho las de Sistemas. Al fin y al cabo debemos tener en cuenta que la gente de Desarrollo trabaja con elementos abstractos que para la gente no técnica son difíciles de cuantificar y en una sociedad de consumo como la nuestra, si no lo puedes medir y pesar, es difícil ponerle un precio. Por contra, las áreas de Sistemas trabajan con la parte física de los <strong>Sistemas de Información</strong>, máquinas, redes, discos, tarjetas, racks, CPDs, etc. Esta diferencia entre los elementos abstractos y los materiales ha provocado, que en la mayoría de los casos, los presupuestos para IT se hayan destinado en su mayoría para las áreas de Sistemas</p>
<p>Siempre he sido bastante crítico con el papel que la gente de <strong>Sistemas </strong>ha jugado dentro de las empresas, siempre he tenido la sensación que la gente de negocio nos ha visto a la gente de Sistemas como los tipos que trabajan con esas máquinas tan caras en las que se va todo el presupuesto. Las empresas han caído en la trampa de pensar que si es caro es bueno o por lo menos importante, por lo tanto la gente que trabajan con esas máquinas, son gente importante para la compañía y bajo ese canto de sirenas, las áreas de Sistemas hemos caído en el aletargamiento de creernos indispensables. Pensando que somos el centro de masa sobre el que orbitan todos los demás asuntos de la organización y no entendiendo que, si bien somos parte importante de la organización no somos la razón de ser de la misma, somos las herramientas físicas sobre las que se implementa un negocio.</p>
<p>Con el boom de las &#8220;<strong>Punto Com</strong>&#8221; las áreas de Sistemas crecieron de forma extraordinaria, en la actual situación, donde la economía está en un proceso de contracción, hay menos presupuesto para infraestructuras, las áreas financieras están exigiendo que se gaste menos y por lo tanto las áreas de Sistemas deben solucionar los problemas derivados de esta disminución de presupuesto. Hemos pasado de un periodo donde sencillamente se compraba a otro donde hay que plantear soluciones ingeniosas que acompañen al negocio, no que supongan un lastre y este objetivo es el que se deben marcar las áreas de Sistemas, dar soluciones creativas, aprovechando al máximo los recursos disponibles.</p>
<p>Hasta ahora en las áreas de IT un modelo muy extendido era el de la externalización de recursos y servicios, esta externalización afectaba principalmente a las áreas de desarrollo e implantación de proyectos, pero ahora ha entrado en escena un nuevo modelos de negocio para los proveedores de servicios, el  <strong>Cloud Computing</strong> que permiten la externalización de los servicios IT, como las infraestructura (<strong>IaaS</strong>), los entornos de desarrollo (<strong>PaaS</strong>) y los servicios (<strong>SaaS</strong>). En un mundo interconectado, donde la globalización de las comunicaciones permite estar conectado a cualquier parte del mundo, comienza a dejar de tener sentido que la plataforma IT que necesita nuestra organización tenga que ser propiedad de la compañía.</p>
<p>Con este escenario de contracción económica y reducción de los presupuestos las áreas de Sistemas vamos a tener que reinventarnos y demostrar a las compañías que podemos dar valor añadido, mas allá de administrar el almacenamiento, los Sistemas Operativos y las Comunicaciones. Por lo tanto creo que ahora es el momento en el que Sistemas debemos comenzar a pensar si queremos ser Arquitectos o Abejas porque nos enfrentamos a un panorama incierto, pero creo que todo aquel que decida ser Arquitecto, se plantee la actual situación, no como una época problemática sino como un periodo de cambios, en el que tenemos la oportunidad de adaptarnos a las nuevas circunstancias, no tendrá problemas. Pienso que los problemas los tendrán todos lo que que en sistemas decidan seguir siendo Abejas.</p>
<h2>¿Cómo veo yo el futuro?</h2>
<p>Se avecina un periodo de cambios, donde se produciran una serie de transformaciones mas o menos críticas sobre la forma en la que las áreas de Sistemas intervienen en el desarrollo del negocio de las compañías.</p>
<ul>
<li>Las empresas van a reducir sus presupuestos de las áreas de Sistemas, reduciendo las inversiones, pero exigiendo que se mantengan los actuales niveles de servicio, por lo tanto habrá que hacer más con menos recursos.</li>
<li>Se buscaran nuevas fórmulas de externalización de los servicios, como la adopción del Cloud Computing, para reducir los costes y aprovechar las ventajas que nos ofrecen, sobre todo durante el periodo de desarrollo del Negocio.</li>
<li>Disminuirá el tamaño de las áreas de Sistema, con el propósito de crear equipos más dinámicos, con gente que entienda las necesidades de la organización y esté realmente alineado con el Negocio, aportando una perspectiva de las oportunidades que la tenología ofrece a nuestra compañía para el desarrollo del Negocio.</li>
<li>Las áreas de Sistemas tendrán que gestionar los recursos que la organización haya externalizado, por lo que se requerirá mas trabajo de gestión.</li>
<li>La tecnología volverá a concentrarse para ahorrar con las sinergias.</li>
<li>Las compañías comenzaran a delegar la explotación de los Sistemas a empresas como IBM o HP, las cuales pueden dar una respuesta global a las necesidades de cualquier compañía.</li>
</ul>
<p>Creo que frente a situaciones como las que se avecinan para la gente de Sistemas un cambio de actitud es fundamental, no ver el cambio como un problema, sino como una oportunidad y en este hecho radicará el poder seguir trabajando con lo que realmente nos apasiona, que son los Sistemas, por lo menos a mi :)</p>
]]></content:encoded>
			<wfw:commentRss>http://jjmora.es/arquitecto-o-abeja/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>IllumOS ¿ La luz al final del tunel ?</title>
		<link>http://jjmora.es/illumos-%c2%bf-la-luz-al-final-del-tunel/</link>
		<comments>http://jjmora.es/illumos-%c2%bf-la-luz-al-final-del-tunel/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 07:16:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[OpenSolaris]]></category>
		<category><![CDATA[Opinión]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://jjmora.es/illumos-%c2%bf-la-luz-al-final-del-tunel/</guid>
		<description><![CDATA[Ayer se realizó la presentación oficial del proyecto IllumOS un fork de OpenSolaris, aunque no es un fork en el sentido extricto de la palabra, porque como se comenta en el FAQ, no se pretende realizar una excisión de OpenSolaris, sencillamente la idea es mantener una rama de forma mas o menos independiente de Oracle. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jjmora.es/wp-admin/" title="illumos.png"><img src="http://jjmora.es/wp-content/illumos.png" title="illumos.png" alt="illumos.png" align="left" /></a>Ayer se realizó la presentación oficial del proyecto <a href="http://www.illumos.org/">IllumOS</a> un fork de OpenSolaris, aunque no es un fork en el sentido extricto de la palabra, porque como se comenta en el <a href="http://www.illumos.org/projects/site/wiki/FAQ">FAQ</a>, no se pretende realizar una excisión de OpenSolaris, sencillamente la idea es mantener una rama de forma mas o menos independiente de Oracle. Tenemos que tener en cuanta que Oracle no ha cerrado el proyecto OpenSolaris (como mucha gente vaticina) y que se están realizando contribuciones en él, por lo tanto la idea de IllumOS es mantener una rama, con las contribuciones que se realicen sobre OpenSolaris y que sea independiente de cualquier fabricante, para que en el hipotético caso de que hubiera un problema con Oracle, poder disponer de una rama independiente.</p>
<p>Entre las características principales de IllumOS están:</p>
<ul>
<li>No se creará una distribución</li>
<li>Se reemplazará todo el código cerrado que aún se mantiene en OpenSolaris.</li>
<li>Se mantendrá la compatibilidad 100% con el código de Opensolaris.</li>
</ul>
<p>En resumen a parte de todas las cuestiones rumorológicas del asunto Oracle+Opensolaris, el nacimiento del proyecto IllumOS es el ejemplo de la razón de existir del Código Abierto, que no importan los problemas, sencillamente se puede seguir avanzando, avanzando y avanzando.</p>
<p>Para mas información este post de <a href="http://libresoft.es/Members/mvidal/blog/proyecto-illumos-a1el-futuro-de-opensolaris-es-brillante">Miguel Vidal</a> y el blog de <a href="http://inieto.wordpress.com/2010/08/04/proyecto-illumos/">Iban Nieto</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jjmora.es/illumos-%c2%bf-la-luz-al-final-del-tunel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rendimiento vs Satisfacción</title>
		<link>http://jjmora.es/rendimiento-vs-satisfaccion/</link>
		<comments>http://jjmora.es/rendimiento-vs-satisfaccion/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 12:04:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Opinión]]></category>
		<category><![CDATA[Tuning]]></category>

		<guid isPermaLink="false">http://jjmora.es/rendimiento-vs-satisfaccion/</guid>
		<description><![CDATA[Uno de los problemas principales de las áreas IT es el rendimiento de la plataforma y cómo dicho rendimiento tiene una relación directa con el negocio de nuestra organización. En plataformas donde la interacción de las personas con la plataforma es una parte importante para el desarrollo del negocio, por ejemplo, todas aquellas aplicaciones que [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los problemas principales de las <strong>áreas IT</strong> es el rendimiento de la plataforma y cómo dicho rendimiento tiene una relación directa con el negocio de nuestra organización. En plataformas donde la interacción de las personas con la plataforma es una parte importante para el desarrollo del negocio, por ejemplo, todas aquellas aplicaciones que interactuan con los usuarios, como son las aplicaciones Web,  el termino <strong>Rendimiento </strong>tiene un peso específico, ya que nosotros como ingenieros debemos conseguir el mayor rendimiento posible para ofrecer una respuesta a un ser humano y no a una máquina.<span id="more-166"></span></p>
<p>Una de las diferencias principales entre una máquinas y un ser humano es la <strong>subjetividad</strong> con la que una persona experimenta una situación y esta diferencia para una plataforma IT se puede convertir en un problema que debemos tener en cuenta, ya que no todas las personas, aun obteniendo los mismo resultados, experimentarán de la misma forma el uso que hacen de la plataforma. Cuando una persona interactua con un sistema de información, realiza dos acciones básicas, independientemente de la complejidad de las operaciones:</p>
<ul>
<li>Introducir información en el sistema.</li>
<li>Obtener una respuesta satisfactoria del sistema.</li>
</ul>
<p>Es importante entender que el usuario espera una respuesta <strong>satisfactoria</strong> y este es uno de los trucos que utilizan algunas aplicaciones muy conocidas. El tiempo que trascurren entre que el usuario finaliza la introducción de la información en el sistema, hasta que obtiene una respuesta, es el <strong>tiempo de espera</strong>. Dependiendo de la duración del tiempo de espera la satisfacción del usuario puede ser mayor o menor, además la subjetividad del ser humano impide que podamos obtener una relación directa entre<strong> tiempo de espera </strong>y <strong>satisfacción</strong>, no todos los seres humanos perciben las situaciones de la misma manera, por lo que el problema de cubrir las expectativas de los usuarios del sistemas frente a los tiempos de respuesta es un problema crítico para las organizaciones, ya que usuarios insatisfechos pueden convertirse en usuario que el negocio pierde.</p>
<p>Debemos entender que Rendimiento no significa Velocidad, de hecho según la Real Academia Española, el significado del término rendimiento es:</p>
<p style="margin-left: 0em; margin-bottom: -0.5em">&nbsp;</p>
<p style="margin-left: 0em; margin-bottom: -0.5em"><a href="http://buscon.rae.es/draeI/SrvltConsulta?TIPO_BUS=3&amp;LEMA=rendimiento"><span class="eLema"><strong>Rendimiento</strong></span><span class="eLema"><strong>.</strong></span></a></p>
<ul>
<li><span class="eOrdenAcepLema"><strong>1.     </strong></span><span class="eAbrv"> <span class="eAbrv" title="nombre masculino">m.</span></span><span class="eAcep"> Producto o utilidad que rinde o da alguien o algo.</span></li>
<li><span class="eOrdenAcepLema"><strong>2.     </strong></span><span class="eAbrvNoEdit"> <span class="eAbrvNoEdit" title="nombre masculino">m.</span></span><span class="eAcep"> Proporción entre el producto o el resultado obtenido y los medios utilizados.</span></li>
<li><span class="eOrdenAcepLema"><strong>3.     </strong></span><span class="eAbrvNoEdit"> <span class="eAbrvNoEdit" title="nombre masculino">m.</span></span><span class="eAcep"> <a href="http://buscon.rae.es/draeI/SrvltObtenerHtml?origen=RAE&amp;LEMA=cansancio&amp;SUPIND=0&amp;CAREXT=10000&amp;NEDIC=No#0_1"><span class="eReferencia"><strong>cansancio</strong></span></a>      (<span style="font-size: 0.9em">‖ </span>falta de fuerzas).</span></li>
<li><span class="eOrdenAcepLema"><strong>4.     </strong></span><span class="eAbrvNoEdit"> <span class="eAbrvNoEdit" title="nombre masculino">m.</span></span><span class="eAcep"> Sumisión, subordinación, humildad.</span></li>
<li><span class="eOrdenAcepLema"><strong>5.     </strong></span><span class="eAbrvNoEdit"> <span class="eAbrvNoEdit" title="nombre masculino">m.</span></span><span class="eAcep"> Obsequiosa expresión de la sujeción a la voluntad de otro en orden a servirle o complacerle.</span></li>
</ul>
<p style="margin-left: 2em; margin-bottom: -0.5em">&nbsp;</p>
<p style="margin-left: 2em; margin-bottom: -0.5em">&nbsp;</p>
<p>Podemos comprobar que ninguna de las definiciones habla de velocidad, de hecho la que mejor se ajusta para un entorno IT es:</p>
<p><strong><em>&#8220;<span class="eOrdenAcepLema"></span><span class="eAbrvNoEdit"><span class="eAbrvNoEdit" title="nombre masculino"></span></span><span class="eAcep">Proporción entre el producto o el resultado obtenido y los medios utilizados.&#8221;</span></em></strong></p>
<p>En este punto, hemos hablado sobre el concepto de <strong>Rendimiento </strong>y sobre  la <strong>Satisfacción</strong> de los usuario, pero no hemos comentado nada sobre la relación que existe entre estos dos términos. No existe una relación directa entre Rendimiento y Satisfacción, ya que podemos tener una plataforma con un rendimiento inmejorable pero cuyos usuarios tengan un grado de insatisfacción enorme y<br />
viceversa, podemos disponer de una plataforma con un rendimiento pésimo pero que permite a la organización disponer de un nivel excelente de satisfacción de los usuarios. Vamos a ver dos casos que nos sirvan como ejemplo de las situaciones anteriores:</p>
<p><strong>Ejemplo A: </strong>Una plataforma dispuesta por 5 máquinas, las cuales están dando servicio al 90% de sus posibilidades, tanto de velocidad de procesamiento, como de uso de memoria y tiempo de respuesta en el acceso a disco. La plataforma soporta una aplicación para 1000 usuarios, es normal que aun estando los tiempos de respuesta al 100% la plataforma no da unos tiempos de respuesta al usuario los cuales sean satisfactorios. Este problema de satisfacción de los usuarios no está relacionado con el rendimiento, ya que el rendimiento de la plataforma es del 90%, estamos aprovechando los recursos disponibles sacando el mayor provecho de ellos, el problema está relacionado con el <strong>capacity planning</strong> que se haya realizado de la plataforma, ya que la plataforma debe crecer, bien para absorber mas usuarios, bien para intentar reducir los tiempos de respuesta.</p>
<p><strong>Ejemplo B:</strong> Supongamos la misma plataforma del ejemplo anterior, pero esta vez el número de usuarios que la utilizan es de dos, es normal que pensemos que el grado de satisfacción de los usuarios sea muy superior al del ejemplo anterior pero el rendimiento de la plataforma deja mucho que desear, ya que no estamos sacando provecho de los recursos disponibles.</p>
<p>Los ejemplos anteriores ilustran como la relación entre rendimiento y satisfacción del usuario no es línea, es decir mayor rendimiento mayor satisfacción. Nosotros como ingenieros de la plataforma IT, debemos buscar un punto intermedio que permita tener un rendimiento en la plataforma el cual genere un grado de satisfacción del usuario correcto para el desarrollo del negocio.</p>
<p><a href="http://jjmora.es/wp-content/esquema_1_rs.jpg" title="esquema_1_rs.jpg"></a></p>
<p style="text-align: center"><a href="http://jjmora.es/wp-content/esquema_1_rs.jpg" title="esquema_1_rs.jpg"><img src="http://jjmora.es/wp-content/esquema_1_rs.jpg" alt="esquema_1_rs.jpg" /></a></p>
<h2>Tiempo de respuesta vs respuesta satisfactoria</h2>
<p>En el apartado anterior comentamos que un usuario espera una respuesta satisfactoria del sistema y la interpretación de respuesta satisfactorio es subjetiva, como también es subjetivo la forma en la que  el usuario experimenta <strong>el tiempo de espera</strong>. Pero ¿qué ocurre cuando modificamos alguno de los parámetros anteriores? es decir, modificamos<br />
el tiempo de respuesta  o bien el resultado que obtiene el usuario, para que la  sensación que tenga sea satisfactoria. Nosotros como ingenieros podemos trabajar en la reducción del <strong>tiempo de espera</strong>, ya que este tiempo está relacionado directamente con la plataforma IT. Pensemos en Google, la cual posee una enorme infraestructura IT<br />
la cual permite reducir los tiempos de respuesta, pero Google no siempre da una respuesta satisfactoria en cuanto a los resultados, pero su tiempo de respuesta siempre es muy bajo, por lo tanto el usuario aunque no recibe la respuesta esperada, tiene un buen nivel de satisfacción, sencillamente porque tienen la impresión que el sistema responde muy rápidamente.</p>
<h2>Tiempo de respuesta</h2>
<p>Vamos a centrarnos en la variable que está relacionada directamente con la plataforma IT, es el tiempo de respuesta de la plataforma frente a una petición determinada. El tiempo de respuesta comienza justo en el momento que el usuario termina de introducir la petición y da la orden de ejecutarla, nosotros vamos a pensar en un click del ratón sobre un botón &#8220;Aceptar&#8221; en una aplicación, por ejemplo una aplicación WEB.</p>
<p><strong>Se envía la petición</strong></p>
<p>Tiempo de red (Tr1)</p>
<p><strong>Se recibe la petición</strong></p>
<p><strong>Se trata la petición</strong></p>
<p>Tiempo de procesamiento (Tp)</p>
<p><strong>Se envía la respuesta</strong></p>
<p>Tiempo de red (Tr2)</p>
<p><strong>Se recibe la respuesta</strong></p>
<p>El tiempo de red depende del tamaño de la petición, por lo tanto <strong>Tr1</strong> no tiene por qué ser igual a Tr2, aunque la infraestructura de red (en teoría) sea la misma tanto para el envío como para la recepción. De los 3 tiempos, nuestra plataforma intervienen los 3, pero no de manera homogénea, ya que el tiempo de red, tanto Tr1 como Tr2 dependerá de la infraestructura del usuario, la infraestructura de terceros y también de nuestra  infraestructura de red. Por lo tanto, nosotros somos responsables de una parte del tiempo que se emplea en Tr1 y Tr2. En cuanto a <strong>Tp</strong>, es el tiempo de procesamiento de la petición, en este tiempo se incluye todo el tiempo que emplean las distintas tareas de nuestra plataforma para devolver una respuesta. El tiempo de procesamiento (Tp) es 100% nuestra responsabilidad y por lo tanto es en la reducción de este tiempo, donde tendremos mayores oportunidades para mejorar la percepción que tienen los usuarios de la plataforma sobre los tiempos de respuesta.</p>
<p>Desde el punto de vista del usuario  el tiempo de respuesta es:<br />
<em><br />
<strong>Tusr = Tr1 + Tp + Tr2</strong></em></p>
<p>Desde nuestro punto de vista, el tiempo de respuesta debe ser el mismo, pero debemos ser conscientes que aunque podemos trabajar en los 3 tiempos,  donde conseguiremos mejores resultados será intentando minimizar el tiempo de procesamiento (Tp).</p>
<h2>Tiempo de procesamiento</h2>
<p>El análisis del <strong>tiempo de procesamiento</strong> nos ayudará en la tarea de intentar encontrar un punto del procesamiento de la petición que podamos mejorar para que se reduzca en su conjunto el <strong>Tp</strong>. Dependiendo de la plataforma en la que trabajemos, debemos realizar un desglose de todas las operaciones que se realizan para procesar una petición, analizando los tiempos que se emplean en cada una de las operaciones.</p>
<p>Siguiendo una arquitectura típica, la mayoría de las plataformas están formadas por 3 capas:</p>
<ul>
<li>La capa de <strong>Presentación</strong>.</li>
<li>La capa de <strong>Aplicación</strong>.</li>
<li>La cada de <strong>Datos</strong>.</li>
</ul>
<p>En cada una de las capas identificaremos las operaciones que realizan los distintos componentes de la capa para tratar la petición. También mediremos los tiempos de transferencia de información entre una capa y la siguiente, para identificar posibles mejoras en la capa de comunicaciones.</p>
<p>Este tipo de análisis nos permitirá identificar aquellas partes de la plataforma las cuales no  están dando un buen rendimiento, ya sea por exceso de provisión como por defecto. Recordemos que un buen <strong>rendimiento </strong>no es obtener un resultado lo más rápidamente posible, sino que el tiempo de respuesta quede justificado por el coste de la petición. No debemos pensar cuando hablemos de rendimiento únicamente de velocidad, también debemos pensar en costes y justificaciones de las distintas soluciones que se ajusten a las necesidades de negocio de nuestra organización.</p>
<p>El análisis del rendimiento debemos verlo como ejercicio que abarque el conjunto de la <strong>plataforma IT</strong>, ya que debemos considerar la plataforma IT como un sistema complejo formado por elementos que interactuan mediante una serie de directrices, por lo tanto en el rendimiento intervienen tanto los elementos como la definición de las directrices.  Pensemos por ejemplo, para qué queremos disponer de discos rápidos, si resulta que la infraestructura de comunicaciones no tiene suficiente ancho de banda para transmitir todo lo que las aplicaciones obtienen de los discos, este es un ejemplo de una plataforma que pensamos dispone de un buen rendimiento en los discos, pero cuya infraestructura de red está por debajo de las necesidades de la nuestra plataforma, por lo que podemos afirmar que en su conjunto el rendimiento es muy bajo, ya que tenemos elementos que tienen un coste alto, como pueden ser los discos de fibra, pero de los que conseguimos una tasa de transferencia muy por debajo de sus posibilidades potenciales, debido a que las aplicaciones no conseguirá transmitir por la red, tan rápido como podrían leer de los discos.</p>
<p>Otro ejemplo, podría ser el uso de CPU, actualmente existen en el mercado una serie de procesadores <strong>multicore.</strong> Este tipo de procesadores tienen un gran potencial en cuanto a l rendimiento que podemos obtener de ellos. Han sido diseñados para ejecutar aplicaciones multithread, ya que se basan en un principio mediante el cual una aplicación multihread comparte el espacio de direcciones del proceso, por lo tanto todos lo threads, por el principio de proximidad tendrán las mismas peticiones de memoria y por lo tanto muchos aciertos en las caches. Pero por muchas máquinas con procesadores multicore que tenga nuestra plataforma, si la aplicación no está preparada para cierta carga, el rendimiento que sacaremos de los procesadores será muy pobre. Por ejemplo, un problema típico de las aplicaciones multithread es  que a partir de un número de sesiones concurrentes los threads de aplicación comiencen a competir por elementos de sincronización, lo que provocará que la ejecución normal de dichos threads se ralentice. La pregunta que nos debemos hacer es ¿en qué nos ayudan nuestras nuevas CPUs multicore? La respuesta es sencilla, en disponer de más threads luchando por un recurso compartido, es decir, sencillamente en nada. Este es un ejemplo de como un elemento, como puede ser una CPU multicore, con un buen potencial en cuanto a rendimiento, en ciertas circunstancias su rendimiento es muy pobre y puede darse el caso que hasta peor que en otro tipo de CPUs, pero este es otro tema que discutiremos otro día.</p>
<p>Estos ejemplos, sirven para ilustrar el por qué debemos analizar los tiempos de cada una de las tareas que ejecutan los distintos elementos de una plataforma para procesar una petición. Es sorprendente la veces que en una plataforma con un potencial en rendimiento enorme, no podemos obtener los resultados esperados por culpa de que dicho potencial de rendimiento se empobreces por el comportamiento de un único elemento, que a primera vista parecía insignificante, como una tarjeta de red, un espacio de disco compartido, el número de semáforos de un SO o la configuración por defecto del pool de conexiones a una base de datos.</p>
<h3>Capa de presentación</h3>
<p>La capa de presentación es la encargada de presentar los resultados solicitados a la plataforma, normalmente está formada por un pool de máquinas, sobre las que se balancean las peticiones y de esta forma poder distribuir la carga. Existen tres problemas que se pueden presentar en la capa de presentación y que afectan directamente al tiempo de respuesta.</p>
<ul>
<li><strong>El balanceo no sea homogéneo</strong>, es decir, que todas las máquinas no reciben el mismo número de peticiones, en este caso se produciría un problema de carga en algunas de las máquinas, impidiendo que tanto la recepción como la presentación de los datos no se hagan en los tiempos esperados de operación normal del sistema.</li>
<li><strong>El tiempo de sesión sea insuficiente</strong>, la capa de presentación se encarga de mantener establecida la sesión con el usuario, una elección errónea en la configuración del tiempo de sesión del servicio puede provocar que se generen timeout en esta capa, generando de esta forma 2 problemas, por un lado se cierra la comunicación con la capa de aplicación, lo que suponen no poder aprovechar el trabajo que ésta capa estaba realizando y por otro lado, al cerrar la conexión con el usuario, este tiene la sensación de que se ha producido un error.</li>
<li><strong>Problemas de Caché</strong>, la mayoría de las plataformas implementan algún tipo de cache en la capa de presentación, lo que reduce el número de peticiones, sobre todo, cuando hablamos de contenido estático. No disponer de una buena politica para implementar las caches puede provocar un rendimiento ineficiente en la capa de presentación.</li>
</ul>
<p>En la mayoría de los casos la capa de presentación no implementa demasiada lógica del negocio, sencillamente existe para recibir y enviar datos, por lo tanto debemos asegurarnos que los datos, tanto de peticiones de entrada, como las respuestas de salida estén el menor tiempo posible en tránsito en esta capa. Ni que decir tiene que cualquier problema en esta capa, independientemente de lo bueno que sea el rendimiento en las capas inferiores, afectará directamente en el tiempo de respuesta que percibe el usuario.</p>
<h3>Capa de Aplicación</h3>
<p>La capa de Aplicación implementa la lógica del negocio, dependiendo de la complejidad de esta lógica la capa de Aplicación será mas o menos complicada desde un punto de vista de su arquitectura. La capa de Aplicación se encarga de modelar las respuestas que la plataforma debe dar, en función de las peticiones recibidas. Esta capa es la que puede presentar el mayor número de problemas, en cuanto al rendimiento se refiere. Es la capa mas compleja desde un punto de vista lógico. También tenemos el problema de la implementación que se haya realizado en la lógica de negocio. En esta capa podemos encontrar, entre otros problemas, alguno de los siguientes,  que afecten de forma directa al tiempo de respuesta:</p>
<ul>
<li><strong>Una mala implementación de la lógica de Negocio</strong>. Los componentes de la capa de aplicación son los encargados de modelar los datos para construir una respuesta, dependiendo de la implementación de los procesos de modelado de datos, la capa necesitará mas o menos tiempo.</li>
<li><strong>Problemas de sincronización</strong>. Hoy en día la mayoría de las aplicaciones están costruidas sobre entornos multithread, permitiendo que varios threads de un mismo proceso trabajen de forma mas o menos coordinada para modelar los datos. Si los métodos de sincronización entre los distintos threads no están correctamente implementados, pueden provocar esperas para intentar acceder al recurso compartido, lo que se traducirá en un aumento del tiempo de respuesta. A parte de los problemas derivados de las espera, se puede producir una situación aún peor en la que los threads queden bloqueados, lo que se conoce como <strong>deadlock</strong>.</li>
<li><strong>Problema en el balanceo de peticione</strong>s. Al igual que ocurre en la capa de presentación, normalmente la capa de aplicación está formada por una granja de servidores, sobre los cuales se balancean las peticiones para intentar distribuir la carga. Si las peticiones que recibe la capa de aplicación no son homogéneas en cuanto al orden de magnitud de sus pesos, se puede producir un desequilibrio en el balanceo de carga, algunas de las máquinas estarían procesando peticiones pesadas mientras siguen recibiendo otro tipo de peticiones mas ligeras, frente al resto de máquinas que solo reciben peticiones ligeras. Esta diferencia entra la carga de las máquinas provocaría de forma aleatoria un problema con los tiempos de respuesta.</li>
</ul>
<p>A grandes rasgos, estos son tres ejemplos, de los problemas que primero se deberían intentar resolver en la capa de aplicación, ya que, dependiendo de la naturaleza de la plataforma IT que tenga nuestra organización, son los principales causas de aumento en el tiempo de respuesta.</p>
<h3>Capa de datos</h3>
<p>La capa de datos es la encargada de almacenar los datos de la plataforma, normalmente esta compuesta por una serie de máquinas en las cuales corre varias Bases de Datos. La capa de Aplicación se encarga de solicitar los datos que necesita a la Capa de Datos, así como solicitar también que se almacenen nuevos datos o las modificaciones que se vayan realizando. Los tiempos de respuesta de la capa de Datos intervienen directamente en el tiempo de respuesta del usuario, ya que la capa de aplicación cuando solicita un dato, debe esperar un tiempo determinado a que la capa de datos conteste. Los principales problemas que nos podemos encontrar en la capa de Datos son:</p>
<ul>
<li><strong>Problemas de acceso al hardware de almacenamiento</strong>. Los datos, normalmente, están almacenados en un espacio de disco, este espacio puede ser interno a la máquina o externo servidor por una red SAN/NAS. Realizar un análisis sobre las distintas capas por la que pasa el dato desde que solicita hasta que se obtiene, es una tarea imprescindible para identificar algún posible cuello de botella.</li>
<li><strong>Configuración de caches en los gestores de datos</strong>. La mayoría de los gestores de datos, normalmente las Bases de Datos, disponen de una serie de parámetros para la configuración de caches internas localizadas, en la mayoría de las veces, en memoria RAM, realizar una configuración correcta de estas caches, evitara tener que solicitar el dato a disco y por lo tanto evitamos el tiempo que se necesita para traer el dato del disco.</li>
</ul>
<p>En la capa de Datos, debemos estar seguros que el acceso al almacenamiento físico en disco en correcto, está bien dimensionado y los tiempos de respuesta del acceso a los disco está dentro de los márgenes que hemos establecido para que la respuesta a la capa de aplicaciones sea optima. También revisar que los distintos niveles de caché están perfectamente configurados y trabajan de forma que su uso sea eficiente, todos los datos que podamos recuperar de cualquiera de los distintos niveles de caché será mas rápido que tener que recuperar un número determinado de bloques en un disco físico.</p>
<h2>Conclusión</h2>
<p>Como mensaje resumen del post, cuando hablemos de Rendimiento no debemos pensar en <strong>velocidad</strong>, sino en el término <strong>eficiencia</strong>. Si conseguimos que nuestra plataforma sea eficiente conseguiremos entre otras cosas velocidad, pero he dicho &#8220;entre otras cosas&#8221;, estas otras cosas son, ajuste de costes, justificación de las soluciones sobre la arqutectura de la plataforma y sobre todo conocimiento de nuestra propia plataforma.</p>
]]></content:encoded>
			<wfw:commentRss>http://jjmora.es/rendimiento-vs-satisfaccion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>España Campeona del Mundo!!!</title>
		<link>http://jjmora.es/espana-campeona-del-mundo/</link>
		<comments>http://jjmora.es/espana-campeona-del-mundo/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 23:33:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Noticia]]></category>

		<guid isPermaLink="false">http://jjmora.es/espana-campeona-del-mundo/</guid>
		<description><![CDATA[Hoy se ha cumplido el sueño de todos aquellos que nos gusta el futbol, después de tantos años, vemos a la selección española ganar una copa del mundo, la verdad es que ha sido un campeonato muy emocionante, con dudas al principio pero que poco a poco se fue consolidando el equipo. Mi primer recuerdo [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy se ha cumplido el sueño de todos aquellos que nos gusta el futbol, después de tantos años, vemos a la selección española ganar una copa del mundo, la verdad es que ha sido un campeonato muy emocionante, con dudas al principio pero que poco a poco se fue consolidando el equipo. Mi primer recuerdo futbolero fue el famoso España-Malta, yo tenía entonces 9 años, los suficientes para tener la ilusión de sentirte de un equipo y recuerdo aquel partido con mucha nostalgía, despues vinieron otros, el mundial de México con Miguel Muñoz y el Buitre, el mundial de Italia, sin mas pena ni gloria, el de Estados Unidos con el partido ante Italia y el codazo a Luis Enrique, el Mundial de Corea-Japón donde nos eliminó Corea, hasta la Eurocopa del 2008 donde fuimos campeones ante la todo poderosa Alemania y ahora CAMPEONES DEL MUNDO!!!!!!!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://jjmora.es/espana-campeona-del-mundo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Capacity Planning: Crear un modelo matemático sencillo</title>
		<link>http://jjmora.es/capacity-planning-crear-un-modelo-matematico-sencillo/</link>
		<comments>http://jjmora.es/capacity-planning-crear-un-modelo-matematico-sencillo/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 16:56:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Capacity planning]]></category>
		<category><![CDATA[Management]]></category>

		<guid isPermaLink="false">http://jjmora.es/capacity-planning-crear-un-modelo-matematico-sencillo/</guid>
		<description><![CDATA[Uno de los problemas a los que nos enfrentamos cuando estamos ejecutando un Capacity Planning es la representación de los modelos que hemos construido y como dicha representación nos ayudará a trasmitir la información necesaria para el propósito del Capacity Planning. Como comentamos en el post anterior, se puede optar por construir un modelo matemático [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los problemas a los que nos enfrentamos cuando estamos ejecutando un Capacity Planning es la representación de los modelos que hemos construido y como dicha representación nos ayudará a trasmitir la información necesaria para el propósito del Capacity Planning. Como comentamos en el <a href="http://jjmora.es/capacity_planning_introduccion_i/">post anterior</a>, se puede optar por construir un modelo matemático o por lo menos que parte del modelo sea simulado matemáticamente.Crear un modelo matemático del comportamiento de un sistema no <span id="more-157"></span>es una tarea sencilla y conlleva varios riesgos, de los que debemos ser conscientes, para que nuestro Capacity Planning tenga exito.</p>
<p>Hay 3 principio que sigo cuando ejecuto un Capacity Planning y son los 3 consejos que doy a aquellas personas que me preguntan sobre cómo construir un Capacity Planning:</p>
<ol>
<li>Un Capacity Planning es un proceso vivo durante la vida de un proyecto o una plataforma, por lo que debemos ser sumanete cuidadosos a la hora de construir un modelo, ya que éste debe ser lo suficiente versatil para adaptarse a las modificaciones en la plataforma o proyecto, a lo largo de su vida.</li>
<li>El Capacity Planning es el medio no el fin.  no debemos complicanos la vida construyendo de un modelo demasiado complicado, ya que el Capacity Planning es una herramienta para conseguir un fin. Por lo tanto,  debemos construir la herramienta, lo mas sencilla posible.</li>
<li>El modelo de representación de la realidad que costruyamos en un Capacity Planning debe emular la con la mayor realidad posible el comportamiento de la plataforma. Este modelo es nuestro banco de pruebas,  por lo que debemos tener cuiado al construir el modelo porque nos puede dar información sesgada.</li>
</ol>
<h2>Cómo construir un modelo matemático sencillo</h2>
<p>Como buen ingeniero, intento utilizar las matemáticas de una forma moderada considero que son una herramienta muy útil, pero desde la perspectiva de un Capacity Planning, no podemos basar la toma de decisión sobre nuestra plataforma únicamente en un modelo matemático. Por lo general los ingenieros usamos las matemáticas para crear modelos de simulación y esta es una de las tareas de un Capacity Planning, aunque como veremos en el ejemplo por muy buena que sea tus matemáticas, nadie construye un puente solo con una navaja suiza.</p>
<p>Nuestro ejemplo es tremandamente sencillo, pero nos permitirá entender cual es el procedimiento para crear un modelo matemático. Dicho procedimiento podremos aplicarlo en nuestro Capacity Planning extrapolando las tareas al número de elementos y variables de nuestro sistema.</p>
<p>El procedimiento es tan sencillo como:</p>
<ol>
<li>Elegir las variables que deseamos modelizar</li>
<li>Estudiar la relación entre las variables y con el sistema.</li>
<li>Calcular las funciones necesarias para el modelado.</li>
<li>Realizar los cálculos con nuestro modelo.</li>
</ol>
<h3>Elegir las variables que deseamos modelizar</h3>
<p>Para el ejemplo vamos a construir un sencillo modelo que nos permita conocer el comportamiento de 2 variables:</p>
<ul>
<li>El porcentaje de uso de CPU.</li>
<li>El número de peticiones que puede recibir nuestro sistema.</li>
</ul>
<p>Con nuestro modelo, podremos saber cuantas se necesita para que el sistema pueda atender un número de peticiones determinadas y de esta forma poder tomar una decisión sobre la forma de crecimiento y las limitaciones del sistema.</p>
<p>Tenemos el siguiente conjunto de muestras que hemos recogido durante 24 horas.</p>
<table width="365" border="1" cellpadding="0" cellspacing="0">
<tr>
<td width="73">
<p align="CENTER">&nbsp;</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="CENTER"><strong>%CPU</strong></p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="CENTER"><strong>Peticiones A</strong></p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="CENTER"><strong>Peticiones B</strong></p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">0:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">38</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">14</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">14</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">1:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">34</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">12</p>
</td>
<td width="100">12</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">2:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">14</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">5</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">5</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">3:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">12</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">4</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">4</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">4:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">11</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">4</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">4</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">5:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">11</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">4</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">4</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">6:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">11</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">4</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">4</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">7:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">11</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">4</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">4</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">8:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">12</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">4</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">4</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">9:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">13</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">5</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">5</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">10:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">19</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">7</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">7</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">11:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">39</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">14</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">12</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">12:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">46</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">16</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">13</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">13:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">47</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">17</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">14</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">14:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">70</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">25</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">14</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">15:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">71</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">25</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">15</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">16:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">72</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">26</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">15</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">17:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">65</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">23</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">13</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">18:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">52</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">19</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">5</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">19:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">29</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">10</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">2</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">20:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">26</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">9</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">5</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">21:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">30</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">11</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">11</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">22:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">36</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">13</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">13</p>
</td>
</tr>
<tr>
<td width="73">
<p style="border: medium none ; padding: 0cm" align="RIGHT">23:00:00</p>
</td>
<td width="80">
<p style="border: medium none ; padding: 0cm" align="RIGHT">35</p>
</td>
<td width="112">
<p style="border: medium none ; padding: 0cm" align="RIGHT">13</p>
</td>
<td width="100">
<p style="border: medium none ; padding: 0cm" align="RIGHT">13</p>
</td>
</tr>
</table>
<p>para nuestro ejemplo vamos a ver 2 tipos de peticiones distintas.</p>
<ul>
<li><strong>Peticiones A,</strong> son peticiones las cuales consumen un cantidad fija de CPU, todas las petciones consumen la misma cantidad de CPU. Este tipo de peticiones son por ejemplo el número de bytes transferidos, el tiempo  de CPU que se emplea para transferir un byte es el mismo que para otro byte, siempre desde el punto de vista de sisteman simples.</li>
<li><strong>Peticiones B,</strong> son peticiones que no consumen la misma cantidad fija de CPU. Este tipo de peticiones son por ejemplo ls petciones que recibe un servidor deAplicaciones o de Base de Datos, donde el uso de CPU de cada petición dependerá de la naturaleza de la misma.</li>
</ul>
<p>Estos son los dos tipos de peticiones que podemos observar en cualquier sistema, peticiones fijas y peticiones variables.</p>
<p><a href="http://jjmora.es/wp-content/cp_ii_grafico1.gif" title="cp_ii_grafico1.gif"><img src="http://jjmora.es/wp-content/cp_ii_grafico1.gif" alt="cp_ii_grafico1.gif" /></a></p>
<p>Hemos representado ambos tipos de peticiones en el mismo gráfico para que podamos ver como. aunque se conserva el uso de CPU, el número de peticiones varía de una muestra a otra. En el gráfico podemos ver cómo las peticiones de tipo A y B emplean la misma cantidad de CPU, aunque desde las 10:00 hasta las 21:00 el número de peticiones de tipo B es inferior al de tipo A, es deci, durante este periodo de tiempo se producen peticiones que consumen mas CPU.</p>
<h3>Estudiar la relación entre las variables y con el sistema.</h3>
<p>En este paso debemos analizar la relación que existe entre las dos variables que estamos estudiando, el %CPU y el número de peticiones. Una forma sencilla es representar ambos conjuntos de datos en una gráfica donde tendremos en el eje de la X los valores de %CPU y en el eje de la Y los valores con los número s de peticiones.</p>
<p><a href="http://jjmora.es/wp-content/cp_ii_grafico2.gif" title="cp_ii_grafico2.gif"><img src="http://jjmora.es/wp-content/cp_ii_grafico2.gif" alt="cp_ii_grafico2.gif" /></a></p>
<p>Podemos ver como los peticiones de tipo A y tipo B se distribuyen de forma distinta en el gráfico. Podemos utilizar alguna función de regresión para obtener una función que represente a la distribución de tipo A y B. Con cualquier programa de tipo hoja de cálculo podemos obtener una función de regresión. Para nuestro ejemplo hemos utilizado Excel y hemos obtenido:</p>
<ul>
<li>Para las peticiones de tipo A tenemos la función  <strong>Fa(x)=0,357x</strong></li>
<li>Para las peticiones de tipo B tenemos la función <strong>Fb(x)=5,6068Ln(x)-9,7538</strong></li>
</ul>
<p>Con esta información sabemos que la relación que existe entre el uso de CPU y el número de peticiones de tipo A es linea, es decir si una petición de tipo A consume un porcentaje de CPU, dos peticiones de tipo A consumen el doble de porcentaje de CPU.</p>
<p>La relación entre el uso de CPU y el número de peticiones de tipo B es NO linea y por lo tanto es mas difícil de estudiar.</p>
<h3>Calcular las funciones necesarias para el modelado.</h3>
<p>Una vez que conocemos la naturaleza de la relación entre las dos variables que estamos estudiando podems comenzar con el análsis para la obtención de las funciones que nos permiten definir el comportamiento de nuestro modelo.</p>
<h4>Modelo lineal</h4>
<p>Hemos visto que la relación entre uso de CPU y el número de peticiones de tipo A es lineal y hemos obtenido la función que describe dicha relación:</p>
<p><strong>Fa(x)=0,357x</strong></p>
<p>Es decir que cada petición consume el 2,8% del uso total de CPU.</p>
<p>Pero normalmente, los sistemas tienen una distribución a lo largo del tiempo que define el comportamiento del mismo. No es igual la carga que podemos añadir a un sistema a las 03:00 de la mañana que a las 17:00 de la tarde. Debemos recordad que uno de los objetivos del  Capacity Planning se dar respuesta a preguntas como ¿podrá mi sistema aguntar 50 usuarios mas? pero estos usuario tendrán una distribución en el tiempo. Por lo tanto debemos modelar el funcionamiento de nuestro sistema durante un periodo de tiempo.</p>
<p>En el siguiente gráfico hemos representado la distribución del %CPU y las peticiones de tipo A.</p>
<p><a href="http://jjmora.es/wp-content/cp_ii_grafico3.gif" title="cp_ii_grafico3.gif"><img src="http://jjmora.es/wp-content/cp_ii_grafico3.gif" alt="cp_ii_grafico3.gif" /></a><a href="http://jjmora.es/wp-content/cp_ii_grafico2.gif" title="cp_ii_grafico2.gif"> </a></p>
<p>Hemos incluido la función polinómica de grado 6 que podremos emplear para describir el comportamiento de la varible %CPU y número de peticiones.</p>
<p><strong>Fcpu(x) = -1E-05&#215;6 + 0,0016&#215;5 &#8211; 0,0639&#215;4 + 1,0062&#215;3 &#8211; 5,8686&#215;2 + 7,3204x + 25,136</strong></p>
<p><strong>Fpet(x) = -4E-06&#215;6 + 0,0006&#215;5 &#8211; 0,0228&#215;4 + 0,3593&#215;3 &#8211; 2,0959&#215;2 + 2,6144x + 8,9772</strong></p>
<p>Podemos ver que la relación que existe entre ambas funciones tiene un factor de 0,357.</p>
<h4>Modelo NO lineal</h4>
<p>En este cas, el conjunto de peticiones de tipo B no son iguales y además se distribuyen en el tiempo de una forma determinada, tenemos que encontrar la función que define la relación entre %CPU y número de peticiones.</p>
<p>En la siguiente table tenemos una columna para el %CPU, el número de peticiones de tipo B y el factor Fcpb.</p>
<p><strong>Fcpb = %CPU / Peticiones B</strong></p>
<table width="365" border="1" cellpadding="0" cellspacing="0">
<tr>
<td width="146"></td>
<td width="80"><strong>%cpu</strong></td>
<td width="80"><strong>Peticiones_2</strong></td>
<td width="70"><strong>Fcp B</strong></td>
</tr>
<tr>
<td>
<p align="RIGHT">0</p>
</td>
<td>
<p align="RIGHT">38</p>
</td>
<td width="80">
<p align="RIGHT">14</p>
</td>
<td width="70">
<p align="RIGHT">2,80</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">1</p>
</td>
<td>
<p align="RIGHT">34</p>
</td>
<td width="80">
<p align="RIGHT">12</p>
</td>
<td width="70">
<p align="RIGHT">2,80</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">2</p>
</td>
<td>
<p align="RIGHT">14</p>
</td>
<td width="80">
<p align="RIGHT">5</p>
</td>
<td width="70">
<p align="RIGHT">2,80</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">3</p>
</td>
<td>
<p align="RIGHT">12</p>
</td>
<td width="80">
<p align="RIGHT">4</p>
</td>
<td width="70">
<p align="RIGHT">2,80</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">4</p>
</td>
<td>
<p align="RIGHT">11</p>
</td>
<td width="80">
<p align="RIGHT">4</p>
</td>
<td width="70">
<p align="RIGHT">2,80</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">5</p>
</td>
<td>
<p align="RIGHT">11</p>
</td>
<td width="80">
<p align="RIGHT">4</p>
</td>
<td width="70">
<p align="RIGHT">2,80</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">6</p>
</td>
<td>
<p align="RIGHT">11</p>
</td>
<td width="80">
<p align="RIGHT">4</p>
</td>
<td width="70">
<p align="RIGHT">2,80</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">7</p>
</td>
<td>
<p align="RIGHT">11</p>
</td>
<td width="80">
<p align="RIGHT">4</p>
</td>
<td width="70">
<p align="RIGHT">2,80</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">8</p>
</td>
<td>
<p align="RIGHT">12</p>
</td>
<td width="80">
<p align="RIGHT">4</p>
</td>
<td width="70">
<p align="RIGHT">2,80</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">9</p>
</td>
<td>
<p align="RIGHT">13</p>
</td>
<td width="80">
<p align="RIGHT">5</p>
</td>
<td width="70">
<p align="RIGHT">2,80</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">10</p>
</td>
<td>
<p align="RIGHT">19</p>
</td>
<td width="80">
<p align="RIGHT">7</p>
</td>
<td width="70">
<p align="RIGHT">2,80</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">11</p>
</td>
<td>
<p align="RIGHT">39</p>
</td>
<td width="80">
<p align="RIGHT">12</p>
</td>
<td width="70">
<p align="RIGHT">3,25</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">12</p>
</td>
<td>
<p align="RIGHT">46</p>
</td>
<td width="80">
<p align="RIGHT">13</p>
</td>
<td width="70">
<p align="RIGHT">3,54</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">13</p>
</td>
<td>
<p align="RIGHT">47</p>
</td>
<td width="80">
<p align="RIGHT">14</p>
</td>
<td width="70">
<p align="RIGHT">3,36</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">14</p>
</td>
<td>
<p align="RIGHT">70</p>
</td>
<td width="80">
<p align="RIGHT">14</p>
</td>
<td width="70">
<p align="RIGHT">5,00</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">15</p>
</td>
<td>
<p align="RIGHT">71</p>
</td>
<td width="80">
<p align="RIGHT">15</p>
</td>
<td width="70">
<p align="RIGHT">4,73</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">16</p>
</td>
<td>
<p align="RIGHT">72</p>
</td>
<td width="80">
<p align="RIGHT">15</p>
</td>
<td width="70">
<p align="RIGHT">4,80</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">17</p>
</td>
<td>
<p align="RIGHT">65</p>
</td>
<td width="80">
<p align="RIGHT">13</p>
</td>
<td width="70">
<p align="RIGHT">5,00</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">18</p>
</td>
<td>
<p align="RIGHT">52</p>
</td>
<td width="80">
<p align="RIGHT">5</p>
</td>
<td width="70">
<p align="RIGHT">10,40</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">19</p>
</td>
<td>
<p align="RIGHT">29</p>
</td>
<td width="80">
<p align="RIGHT">2</p>
</td>
<td width="70">
<p align="RIGHT">14,50</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">20</p>
</td>
<td>
<p align="RIGHT">26</p>
</td>
<td width="80">
<p align="RIGHT">5</p>
</td>
<td width="70">
<p align="RIGHT">5,20</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">21</p>
</td>
<td>
<p align="RIGHT">30</p>
</td>
<td width="80">
<p align="RIGHT">11</p>
</td>
<td width="70">
<p align="RIGHT">2,80</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">22</p>
</td>
<td>
<p align="RIGHT">36</p>
</td>
<td width="80">
<p align="RIGHT">13</p>
</td>
<td width="70">
<p align="RIGHT">2,80</p>
</td>
</tr>
<tr>
<td>
<p align="RIGHT">23</p>
</td>
<td>
<p align="RIGHT">35</p>
</td>
<td width="80">
<p align="RIGHT">13</p>
</td>
<td width="70">
<p align="RIGHT">2,80</p>
</td>
</tr>
</table>
<p>En el siguiente gráfico representamos la columan FcpB para obtener la función polinómica de grado 6 que define su comportamiento.<br />
<img src="http://jjmora.es/wp-content/cp_ii_grafico4.gif" alt="cp_ii_grafico4.gif" /><br />
Ya tenemos la función que relaciona ambas variables.</p>
<p><strong>FcpB(x)=0,0000165639*x6- 0,0011982358*x5 + 0,03245624*x4 &#8211; 0,4095446*x3 + 2,4555428*x2 &#8211; 6,2596358*x + 7,574714</strong><br />
Ahora podemos calcular cuanta CPU utilizarán un número determinado de peticiones en un momento determinado. Pero tal como comentamos al principio, aunque hemos utilizado una función polinómica de grado 6, en este dicha función está cometiendo 2 errores importantes:</p>
<ul>
<li>Primero, está sesgando el pico que se produce a las 19:00, por lo que podemos cometer un error al calcular el uso de CPU de un determinado número de peticiones en ese momento, las 19:00</li>
<li>Segundo ha aumentado en el factor de relación entre ambas variables en las horas 15:00, 16:00 y 17:00 por lo tanto si utilizamos esta función en esas horas, el uso de CPU o el número de peticiones que podemos calcular será erróneo.</li>
</ul>
<h3>Realizar los cálculos con nuestro modelo.</h3>
<p>Una vez que tenemos el modelo construido y somos conscientes de los defectos que presenta el modelo, podemos hacer nuestros calculos dobre la capacidad, los siguientes gráficos muestran una simulación de un incremento de 0% de peticiones, de un 30% y de un 60%</p>
<p><img src="http://jjmora.es/wp-content/cp_ii_grafico5_0.gif" alt="cp_ii_grafico5_0.gif" width="756" height="246" /></p>
<p><img src="http://jjmora.es/wp-content/cp_ii_grafico5_30.gif" alt="cp_ii_grafico5_30.gif" width="754" height="245" /></p>
<p><img src="http://jjmora.es/wp-content/cp_ii_grafico5_60.gif" alt="cp_ii_grafico5_60.gif" width="753" height="246" /></p>
<h2>Conclusión</h2>
<p>En este post hemos visto como se puede crear un sencillo modelo mátemático, mediante la utilización de las funciones de regresión, en nuestro caso funciones polinómicas de grado 6 y como la utilización de este tipo de modelos tienen sus ventajas, como son poder crear un modelo totalmente teórico del comportamiento de la plataforma bajo unas circustancias determinadas, pero también presenta inconvenientes como pueden ser el sesgo de los datos o la modificación de ciertos factores que no coinciden con la realidad de nuestra plataforma.</p>
<p>Los modelos matemáticos no son malos, sencillamente son otra  de las herramientas que podemos utilizar para la ejecución de un Capacity Planning y al igual que ocurren en otras ramas de la ingeniería, por ejemplo la obra civil, un puente no se hace solo con matemáticas.</p>
]]></content:encoded>
			<wfw:commentRss>http://jjmora.es/capacity-planning-crear-un-modelo-matematico-sencillo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gestión del Conocimiento</title>
		<link>http://jjmora.es/gestion-del-conocimiento/</link>
		<comments>http://jjmora.es/gestion-del-conocimiento/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 16:24:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Opinión]]></category>

		<guid isPermaLink="false">http://jjmora.es/gestion-del-conocimiento/</guid>
		<description><![CDATA[La Gestión del Conocimiento se está convirtiendo en uno de los ejes principales a la hora de optimizar el rendimiento de un Sistema de Información. Cuando hablamos de Gestión del Conocimiento, nos referimos a todos aquellos procesos y herramientas que permiten no solo registrar de forma útil el conocimiento, sino que también permiten aumentar el [...]]]></description>
			<content:encoded><![CDATA[<p>La Gestión del Conocimiento se está convirtiendo en uno de los ejes principales a la hora de optimizar el rendimiento de un Sistema de Información. Cuando hablamos de <strong>Gestión del Conocimiento</strong>, nos referimos a todos aquellos procesos y herramientas que permiten no solo registrar de forma útil el conocimiento, sino que también permiten aumentar el conocimiento que se tiene sobre el negocio o un sistema de información. Nosotros vamos a centrarnos en los sistemas de información (término que se ha puesto de moda de un tiempo a esta parte)  por que nos afecta directamente a la gente que trabajamos o estamos relacionados con IT. Podemos definir como Sistema de Información al conjunto de elementos que se emplean para tratar la información. Ahora empleamos el termino &#8220;<strong>Sistemas de Información</strong>&#8221; que está mas acorde con<span id="more-150"></span> nuestra &#8220;<strong>Sociedad de la información</strong>&#8221; para referirnos. Pero dejando a un lado temas puramente semánticos o de moda, tenemos que reflexionar sobre qué es la información y cómo se está gestionando en las áreas de IT, ya que nosotros mismo, como ingenieros, técnicos o consultores que somos, somos los responsable del despliegue y/o explotación de los Sistemas de Información.</p>
<p>Para que podamos entender el ambito en el que se puede aplicar la Gestión del Conocimiento, primero debemos tener mas o menos claro qué significa realmente terminos como información o conocimiento, los cuales muchas veces empleamos en un contexto equivocado, asumiendo que son iguales o parecidos. Sin entrar en una discusión académica, vamos a ver un modelo que define cuatro conceptos, los cuales nos servirán para clasificar los distintos estados de la información de nuestro sistema. A mi personalmente, me gusta el modelo de jerarquía <strong>Dato-Información-Conocimiento-Sabiduría </strong>(DIKW en inglés), ya que identifica de forma sencilla y clara cuales son los distintos estadios en los que se puede encontrar lo que comúnmente conocemos como &#8220;Información&#8221; y que veremos que es un termino erróneos en algunas de las situaciones en las que lo empleamos.</p>
<p><a href="http://jjmora.es/wp-content/esquema_2.jpg" title="esquema_2.jpg"></a></p>
<p style="text-align: center"><a href="http://jjmora.es/wp-content/esquema_2.jpg" title="esquema_2.jpg"><img src="http://jjmora.es/wp-content/esquema_2.jpg" alt="esquema_2.jpg" /></a></p>
<h2>Dato, Información, Conocimiento y Sabiduría</h2>
<p>El modelo <strong>Dato-Información-Conocimiento-Sabiduría</strong> consiste en un modelo jerárquico piramidal, es decir que cada capa se apoya en la capa inferior, ya que sencillamente le da un valor añadido a ésta, dicho valor añadido junto con el valor de la capa inferior dan como resultado una nueva capa. La base de la pirámide es el <strong>dato</strong>, justo encima del <strong>dato </strong>está la capa de <strong>información </strong>la cual se forma a partir del dato. Sobre la capa de información está la capa de <strong>conocimiento </strong>que al igual que ocurre con la capa inferior la capa de conocimiento da un valor añadido a la capa de información. Por último como capa cúspide de la pirámide está la capa de <strong>sabiduría</strong>.</p>
<p>La pirámide <strong>DICS </strong>podemos aplicarla en los sistemas de información para identificar cual es el estadio de la pirámide en el que se encuentra nuestro sistema y analizar si realmente se ha conseguido el objetivo que se perseguía. Pero no solo desde el punto de vista de los objetivos puramente de negocio es útil analizar y reflexionar sobre la posición de la pirámide que ocupa nuestra plataforma, desde un punto de vista de la gestión de los recursos, conocer la distribución de nuestro equipo humano en la pirámide es un ejercicio que nos permitirá identificar lagunas y carencias de conocimiento que podrían provocar de manera directa problemas en la gestión tanto de los Sistemas de Información como del equipo humano.</p>
<p>La aportación que cada componente del equipo de personas que explotan un Sistema de Información se puede medir de muchas formas, pero hay dos variables que son tremendamente útiles, la actitud y la aptitud. El mantener dichas variables dentro de unos rangos mínimos permitirá que el equipo funcione correctamente.</p>
<p><a href="http://jjmora.es/wp-content/esquema_1.jpg" title="esquema_1.jpg"></a></p>
<p style="text-align: center"><a href="http://jjmora.es/wp-content/esquema_1.jpg" title="esquema_1.jpg"><img src="http://jjmora.es/wp-content/esquema_1.jpg" title="esquema_1.jpg" alt="esquema_1.jpg" /></a></p>
<h3>Dato</h3>
<p>Podemos definir el <strong>dato </strong>como la unidad mínima de información con la que trabajamos, el dato por si solo no aporta nada, no podemos tomar decisiones únicamente contando con el dato, independientemente del número de datos que tengamos. El dato simplemente nos ayuda a disponer de una representación entendible para nosotros de ciertas características tangibles o abstractas del sistema. Datos son por ejemplo los bytes de la memoria de una máquina, el número de transferencias que realiza un disco duro, la velocidad de una tarjeta de red o el número de cores de un procesador, todos estos ejemplos son &#8220;datos&#8221;  que por si solos no aportan nada, simplemente son valores que podemos obtener de un Sistema de información y cuyos nombres son la nomenclatura acordada oficial o extraoficialmente para que todas las personas que trabajamos en las áreas de Sistemas podamos identificar de qué dato se trata.</p>
<p>Como ejemplo, podemos comentar la utilidad de los comandos de un SO, son pequeños programas que nos permiten ejecutar sencillas acciones sobre los sistemas, la mayoría de esta acciones consisten en operaciones para obtener datos, por ejemplo el consumo de CPU, el número de páginas usadas en memoria, el número de semáforos creados, el identificador de un usuario, el tamaño de un disco, etc.</p>
<p align="center"><strong><em>Dato = Unida mínima de información </em></strong></p>
<h3>Información</h3>
<p>El segundo nivel de la pirámide DICS es la <strong>información</strong>, como hemos comentado, el dato por si solo no sirve para mucho, necesitamos agrupar los datos para obtener algo mas que simples cifras sobre los elementos de una plataforma o estados de los dispositivos que forman parte del Sistema de Información. Podemos decir que la información consiste en la agrupación de varios datos y que dicha agrupación confiere un significado al conjunto, añadiendo un nivel mas de valor al que se puede obtener del dato por si solo. Obtener información de un conjunto de datos es un ejercicio de inteligencia propiamente dicho, ya no se trata de valores identificados con un nombre, sino que se realiza un ejercicio de abstracción del conjunto de datos para obtener un valor que los represente a todos, de esta forma la información trasmite un mensaje que puede ser interpretado.</p>
<p>Como ejemplos de información de un Sistema de Información podemos citar el estado de una máquina, la información de estado está compuesta por la agrupación de todos los datos relevantes de una máquina, por ejemplo el uso de CPU, el uso de disco, el uso de la<br />
red, etc. Todos estos datos en su conjunto permiten dar información sobre el estado de una máquina. Subiendo un nivel en la arquitectura de un sistema de información, podemos poner otro ejemplo, el estado de la plataforma mediante la obtención de la información<br />
agrupando los datos de estado de todos los elementos de una plataforma, en este caso el dato es la información que se obtiene de cada sistema y la información es la agrupación de todos los estados, dando de esta forma información sobre el sistema de información en su totalidad.</p>
<p align="center"><strong><em>Información = Agrupación de los datos para trasmitir un mensaje del conjunto </em></strong></p>
<h3>Conocimiento</h3>
<p>El segundo peldaño de la pirámide es el conocimiento. La información nos permite obtener agrupar los datos disponibles y generar ciertas abstracciones para que podamos trabajar con una representación del conjunto de datos. Si queremos seguir avanzando en la pirámide DICS debemos aportar algo mas a la información y como es la experiencia. Decimos que el conocimiento es la suma de la información y la experiencia. Podemos recoger todos los datos de un sistema, agruparlos para obtener información, por ejemplo información de estado de los elementos de la plataforma, Conocimiento sería aplicar nuestra experiencia a la información para identificar posibles tendencias en el comportamiento del sistema. Nuestra experiencia nos permite ir ampliar la información del sistema comparándola con otras situaciones parecidas y que nos permite no tener que disponer de todo el juego de datos e información. Una persona con experiencia no necesita conocer toda la información que un sistema puede generar para identificar problemas, tendencias, etc.</p>
<p align="center"><em><strong> Conocimiento = Información + Experiencia</strong></em></p>
<h3>Sabiduría</h3>
<p>El último peldaño de la pirámide es la sabiduría, esta es la cúspide del entendimiento que podemos llegar a tener sobre algo. La sabiduría es la suma del conocimiento y la optimización. La optimización es un proceso creativo que se encarga de intentar  modificaciones en la gestión de la información que realiza el Sistema de Información para cubrir las necesidades del negocio. La sabiduría supone poder modificar el sistema para mejorarlo con la garantía que dichas modificaciones lo mejoraran, gestionando todo el conocimiento para la toma de decisiones.</p>
<p align="center"><em><strong>Sabiduría = Conocimiento + Optimización </strong></em></p>
<h2>Sistemas de Información y DICS</h2>
<p>Ya hemos repasado las 4 partes de la pirámide DICS, ahora debemos analizar donde están los distintos componentes de nuestro Sistema de Información en dicha pirámide y como esta distribución afecta al proceso de negocio de nuestra organización. Mucha gente piensa que cuando hablamos de gestión del conocimiento únicamente nos referimos a las personas, pero los Sistemas también pueden retener conocimiento, mediante modelos de aprendizaje asistido por ejemplo, un claro ejemplo son los sistema detección de correo basura. Estos sistemas se basan en el aprendizaje de unos patrones que les permiten identificar correos que &#8220;pueden ser&#8221; SPAM. Por una razón puramente práctica vamos a separar la parte de Sistemas y recursos humanos de un Sistemas de información. Aunque en la práctica los Sistemas de Información los operan recursos humanos en mayor o menor medida, por lo que dicha separación es ficticia y únicamente la vamos a realizar para facilitar el ejercicio de identificación del estado de nuestros Sistemas de información dentro<br />
de la pirámide DICS.</p>
<h3>Sistemas</h3>
<p>Un sistema de información está compuesto por una serie de elementos Hardware y Software que son los encargados de gestionar toda la información para generar un producto.  Por definición todos los Sistemas trabajan con datos, algunos de nuestros sistemas organizan los datos en información, herramientas de monitorización por ejemplo, las herramientas de monitorización analizan los datos de los sistemas para agruparlos y generar una información que puede ser interpretada por un operador para detectar un problema.</p>
<p>Si el sistema es capaz de adquirir experiencia, hemos comentado los sistemas de detección de SPAM, los sistemas de monitorización que son capaces de identificar problemas en base a la información disponible y a los eventos ocurridos anteriormente. Y por su puesto todos los componentes del <strong>Busines intelligence</strong>, como son los cuadros de mando, ayuda a la toma de decisión, etc. Los cuales utilizan toda la información disponible del negocio para crear un conocimiento que permita tener un alto porcentaje de acierto en la toma de decisión.</p>
<p>La sabiduría es una fase de la pirámide que <em>por ahora</em> está fuera del alcance de los Sistemas.</p>
<h3>Equipo humano</h3>
<p>El equipo humano del Sistema de información si puede estar en las 4 partes de la pirámide DICS, puede generar datos, interpretar la información, tener la experiencia suficiente para adquirir conocimiento y disponer de la sabiduría necesaria para entender como los Sistemas de Información interactuan con el Negocio para mejorar los procesos de gestión de la información.</p>
<p>Del equipo humano debemos analizar la desviación que se produce en el equipo con respecto al objetivo inicial de la formación de dicho equipo. Vamos a suponer un ejemplo típico de equipo que opera un Sistema de Información y asignaremos los roles que por defecto suponemos a cada uno de los componentes del equipo.</p>
<p><a href="http://jjmora.es/wp-content/esquema_31.jpg" title="esquema_31.jpg"></a></p>
<p style="text-align: center"><a href="http://jjmora.es/wp-content/esquema_31.jpg" title="esquema_31.jpg"><img src="http://jjmora.es/wp-content/esquema_31.jpg" alt="esquema_31.jpg" /></a></p>
<ul>
<li><strong>Operadores</strong>, se encargan de generar datos y de tener la suficiente capacidad para interpretar la información que el sistema genera.</li>
<li><strong>Administradores</strong>, con la información disponible y la experiencia que tiene el equipo de administración, se supone que este equipo cuenta con un conocimiento sobre los sistemas de la plataforma que garantice el normal funcionamiento del mismo.</li>
<li><strong>Seguridad</strong>, es equipo igual que el de administradores estaría en la capa de Conocimiento de la pirámide DICS.</li>
<li><strong>Arquitectura</strong>, es el único equipo, desde un punto de vista del Sistema de información en su conjunto, al cual se le puede considerar que tienen un conocimiento sobre la plataforma y sabe como se deben optimizar los procesos de la misma y por lo tanto en este equipo de personas radica la sabiduría de la plataforma, siempre pensando desde un punto de vista de Sistemas.</li>
<li><strong>CTO</strong>, con el responsable técnico ocurre una paradoja y es que sus competencias no pasan por adquirir la sabiduría del equipo de Arquitectura, ni el conocimiento de las áreas de administración o seguridad. Podemos decir que está a un nivel mas cercano al negocio que el resto de los equipos, el CTO se encarga de gestionar los recursos necesarios para que los objetivos marcados en el Sistema de Información se cumplan.</li>
</ul>
<p>Este es un ejemplo de roles de los distintos componentes de un equipo de Sistemas y como a dichos componentes se les asigna un capa en la pirámide DICS, pero desde el punto de vista del Sistema de Información, ya que en cada una de sus áreas de competencia, desplazándonos un nivel mas bajo en la arquitectura del sistema de información, la pirámide se vuelve a aplicar y es en este nivel donde podemos encontrar grandes desviaciones del conocimiento esperado. Pongamos un ejemplo de un equipo de administración de sistemas formado por 3 personas y que tienen las siguientes áreas de competencia, según el cuadro de abajo:</p>
<table border="1">
<tr>
<td>&nbsp;</td>
<td><strong>Sist. Operativo</strong></td>
<td><strong>Almacenamiento</strong></td>
<td><strong>Networking</strong></td>
<td><strong>Serv. Internet</strong></td>
<td><strong>Backup</strong></td>
</tr>
<tr>
<td><strong>Administrador 1</strong></td>
<td align="center">C</td>
<td align="center">S</td>
<td align="center">I</td>
<td align="center">S</td>
<td align="center">D</td>
</tr>
<tr>
<td><strong>Administrador 2</strong></td>
<td align="center">S</td>
<td align="center">S</td>
<td align="center">C</td>
<td align="center">D</td>
<td align="center">D</td>
</tr>
<tr>
<td><strong>Administrador 3</strong></td>
<td align="center">D</td>
<td align="center">C</td>
<td align="center">I</td>
<td align="center">D</td>
<td align="center">I</td>
</tr>
</table>
<p>Para nuestro ejemplo, el equipo tiene un serio problema con el Backup, porque solo uno de los administradores podemos situarlo en la capa de Información de la pirámide DICS, lo que significa que este equipo únicamente puede saber si se han realizado los backups, pero no en la realidad no puede realizar tareas de administración sobre el backup, cuando ésta es una de sus áreas de competencia y responsabilidad.</p>
<p>Otro problema que podemos deducir del cuadro anterior es la diferencia tan grande que existe entre los conocimientos de los administradores 1 y 2 con respecto al del administrador 3,  dependiendo de la <strong>actitud </strong>de los componentes del equipo, podría surgir un problema de competencias y responsabilidad.</p>
<h2>Conclusión</h2>
<p>Como resumen, podemos decir que para garantizar el mayor rendimiento de un Sistemas de Información, entre otras actividades debemos analizar como los sistemas con los que trabajamos y las personas, bien sean parte de los equipos que gestionamos, bien como compañeros, están situados dentro de la pirámide DICS. Este análisis nos permitirá identificar problemas actuales o conflictos futuros, carencias y necesidades en la plataforma, en fin, la gestión del conocimiento es una herramienta fundamental en la optimización de los procesos que controlan el Sistema de Información.</p>
]]></content:encoded>
			<wfw:commentRss>http://jjmora.es/gestion-del-conocimiento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DTrace: Consultas lentas en BD</title>
		<link>http://jjmora.es/dtrace-consultas-lentas-en-bd/</link>
		<comments>http://jjmora.es/dtrace-consultas-lentas-en-bd/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 11:17:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[dtrace]]></category>

		<guid isPermaLink="false">http://jjmora.es/dtrace-consultas-lentas-en-bd/</guid>
		<description><![CDATA[Hace algún tiempo tuvimos problemas con una de nuestra aplicaciones. Los usuarios comentaban lentitud en ciertos puntos de la navegación y estuvimos analizando los distintos recursos que utiliza esta aplicación, disco, red, hardware, CPUs, etc. para descartar posibles cuellos de botella en la infraestructura. No encontramos ningún elemento de la arquitectura de sistemas que puediera [...]]]></description>
			<content:encoded><![CDATA[<p>Hace algún tiempo tuvimos problemas con una de nuestra aplicaciones. Los usuarios comentaban lentitud en ciertos puntos de la navegación y estuvimos analizando los distintos recursos que utiliza esta aplicación, disco, red, hardware, CPUs, etc. para descartar posibles cuellos de botella en la infraestructura. No encontramos ningún elemento de la arquitectura de sistemas que puediera suponer la causa de lentitud. <span id="more-151"></span>El siguiente paso fue identificar a nivel de aplicación si existía algún componente software que fuese el responsable de la perdida de rendimiento, para ésto seguimos buscando desde abajo hacia arriba, si hemor comprobado la infraestructura, el siguiente elemento es el SO. Nuestro objetivo era conocer el comportamiento de la aplicación con el SO, mediante el uso de las llamadas a sistemas que realizaba.</p>
<p>Para identificar cual podría ser el problema, comenzamos por lo mas lógico, crear un script en DTrace que buscara todas las llamadas de sistemas que emplearan un tiempo excesivo, por ejemplo mas de 1 segundo, todos sabemos que 1 segundo es demasiado tiempo para una llamada a sistema, pero quisimos probar suerte.</p>
<pre>
root@host # cat ./syscall_all_pid.d
/*
 * Presenta el tiempo empleado por cada syscall
 * si es superior a los 1000 mseg
 *
 * Como parametro acepta el PID del proceso
 *
 *  Version: 1.0
 */    

syscall:::entry
/pid==$1/
        {
        array[tid]=timestamp;
        self-&gt;th=tid;
        }    

syscall:::return
/pid==$1 &amp;&amp; (timestamp-array[tid])/1000000 &gt; 1000 &amp;&amp; self-&gt;th == tid/
        {
        printf("nTID:  % 8d t Time: %d t %s",tid,(timestamp-array[tid])/1000000,probefunc);
        }</pre>
<p>Al ejecutar el script obtenemos una salida parecida a la siguiente.</p>
<pre>
root@host # dtrace -q -s ./syscall_all_pid.d 4096    

TID:       692   Time: 1009      pollsys
TID:        98   Time: 1009      lwp_cond_wait
TID:       115   Time: 1259      lwp_cond_wait
TID:       233   Time: 1009      lwp_cond_wait
TID:       692   Time: 1009      pollsys
TID:       113   Time: 1259      lwp_cond_wait
TID:        98   Time: 1009      lwp_cond_wait
TID:       112   Time: 2009      lwp_cond_wait
TID:       233   Time: 1009      lwp_cond_wait
TID:       692   Time: 1009      pollsys
TID:       259   Time: 3078      lwp_cond_wait
TID:        98   Time: 1010      lwp_cond_wait
<strong>TID:       224   Time: 7507      read</strong>
TID:       259   Time: 1144      lwp_cond_wait
TID:       692   Time: 1009      pollsys
TID:        98   Time: 1009      lwp_cond_wait
TID:       262   Time: 1281      recvfrom</pre>
<p>De la salida anterior nos llamó la atención las llamadas <strong>read</strong>, ya que el resto <strong>pollsys</strong>, <strong>lwp_cond_wait</strong> y <strong>recvfrom</strong> son normales, ya que son syscall relacionadas con la espera, pero el tener llamadas <strong>read</strong> no es tan normal.</p>
<p>Lo siguiente que hicimos fue crear un script para estudiar con algo de mas detalle las llamadas <strong>read</strong></p>
<pre>
root@host # cat syscall_read_pid.d
/*
 * Presenta el tiempo empleado por cada llamada read
 * si es superior a los 1000 mseg
 *
 * Como parametro acepta el PID del proceso
 *
 *  Version: 1.0
 */    

syscall::read:entry
/pid==$1/
        {
        array[tid,arg0]=timestamp;
        self-&gt;fd=arg0;
        self-&gt;th=tid;
        self-&gt;sz=arg2;    

        self-&gt;vtype=(int)(curthread-&gt;t_procp-&gt;p_user.u_finfo.fi_list[arg0].uf_file-&gt;f_vnode-&gt;v_type);    

        }    

syscall::read:return
/pid==$1 &amp;&amp; (timestamp-array[tid,self-&gt;fd])/1000000 &gt; 1000 &amp;&amp; self-&gt;th == tid &amp;&amp; self-&gt;vtype != 9/
        {
        printf("nTID:  % 8d t FD: % 8d  t  Size: % 8d t Time: %d t %s  t v_type DPort: ",tid,self-&gt;fd,self-&gt;sz,(timestamp-array[tid,self-&gt;fd])/1000000,probefunc);
        }    

syscall::read:return
/pid==$1 &amp;&amp; (timestamp-array[tid,self-&gt;fd])/1000000 &gt; 1000 &amp;&amp; self-&gt;th == tid &amp;&amp; self-&gt;vtype==9/
        {
        self-&gt;sdata=(sonode_t *)(curthread-&gt;t_procp-&gt;p_user.u_finfo.fi_list[self-&gt;fd].uf_file-&gt;f_vnode-&gt;v_data);
        self-&gt;so_in=(struct sockaddr_in *)(self-&gt;sdata-&gt;so_faddr.soa_sa);
        self-&gt;port=self-&gt;so_in-&gt;sin_port;    

        printf("nTID:  % 8d t FD: % 8d  t  Size: % 8d t Time: %d t %s  t v_type %d  DPort: %d",tid,self-&gt;fd,self-&gt;sz,(timestamp-array[tid,self-&gt;fd])/1000000,probefunc,self-&gt;vtype,self-&gt;port);
        }</pre>
<p>Al ejecutar el script obtenemos una salida parecida a la siguiente.</p>
<pre>
root@host # dtrace -q -s ./syscall_read_pid.d 4096    

TID:       224   FD:        9     Size:    32768         Time: 7510      read    v_type 9  DPort: 5002
<strong>TID:       118   FD:       46     Size:        8         Time: 9113      read    v_type 9  DPort: 1521</strong>
TID:       224   FD:        9     Size:    32768         Time: 7503      read    v_type 9  DPort: 5002
TID:       224   FD:        9     Size:    32768         Time: 7507      read    v_type 9  DPort: 5002
TID:       118   FD:       46     Size:        8         Time: 9106      read    v_type 9  DPort: 1521
TID:       224   FD:        9     Size:    32768         Time: 7515      read    v_type 9  DPort: 5002
TID:       118   FD:       46     Size:        8         Time: 8733      read    v_type 9  DPort: 1521</pre>
<p>De la salida del script <strong>syscall_read_pid.d</strong> podemos ver que hay llamadas de sistemas <strong>read</strong> las cuales están demorando unos 9 segundos, además son llamadas que utilizan un FD a un puerto 1521, que es el de BD. Tenemos que identificar qué se ha solicitado a la BD para que la respuesta sea tan lenta, ya que las syscall las debemos considerar desde el punto de vista de ejecución de un thread como una operación atómica. Otro aspecto curioso de este ejemplo es que lo que se devuelve en la llamada <strong>read</strong> son únicamente 8 bytes.</p>
<pre>
root@host # dtrace -q -s ./syscall_sendread_pid.d 4096  &gt; /tmp/salida_dtrace</pre>
<pre>
root@host # cat /tmp/salida_dtrace | more    

 Time:      495
 Time:     1495
   2091          TID: 224        FD: 9           Size: 32768     Time: 0         read entry
 Time:     2495
   2039          TID: 223        FD: 9           Size: 32768     Time: 0         send entry
   2039          TID: 223        FD: 9           Size: 32768     Time: 0         send return
             0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f  0123456789abcdef
         0: 78 c0 01 39 1f e7 38 cd 63 c7 bf b5 80 01 5a 55  x..9..8.c.....ZU
        10: 16 a7 9b dd b8 43 e0 00 01 05 1f f8 a3 37 be bf  .....C.......7..
        20: 79 c0 01 0a 54 e7 3b cd 63 c7 bc b5 80 01 45 a9  y...T.;.c.....E.
        30: 5e f6 da b9 92 d2 94 00 05 ad 74 f4 a7 37 b1 53  ^.........t..7.S
        40: 1b 85 01 09 05 ac 31 99 6f 78 8e f4 80 02 14 a3  ......1.ox......
        50: 16 b0 9b df 65 cd e0 00 05 2b 0f bc e5 67 b8 a7  ....e....+...g..
        60: 3c 85 01 09 05 a5 79 cd 6f 7a 96 b1 80 0e a9 cf  &lt;.....y.oz......
        70: 1b f3 98 8e fc bc e0 01 2c a2 18 14 65 37 bd ee  ........,...e7..
        80: 51 48 4e cf 8c e7 2d cd 6c 2b d2 f0 80 02 15 ab  QHN...-.l+......
        90: 5e f8 87 96 a3 bc e3 50 14 2a 57 bd e7 7f e9 ef  ^......P.*W.....
        a0: 7b 9a 5d 0a 55 ad 78 85 3b 7b dd a0 92 02 15 aa  {.].U.x.;{......
        b0: 5f bb cf de f4 ec f3 00 05 2b 56 f4 b2 37 be bf  _........+V..7..
        c0: 6c c0 01 0e 54 e7 2d cd 6c 2b cb f0 80 22 17 e3  l...T.-.l+..."..
        d0: 0a f3 98 8e e0 bc e0 20 07 62 03 bc e5 67 aa ef  ....... .b...g..
...
  7797          TID: 118        FD: 46          Size: 169       Time: 0         read entry
   7797          TID: 118        FD: 46          Size: 169       Time: 0         read return
             0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f  0123456789abcdef
         0: 00 00 06 02 01 01 00 01 0a 00 00 00 07 06 76 6f  ..............vo
        10: 71 2e 61 78 15 01 01 01 07 06 76 6f 72 2e 61 78  q.ax......vor.ax
        20: 15 01 01 01 07 06 76 6f 73 2e 61 78 15 01 01 01  ......vos.ax....
        30: 07 06 76 6f 74 2e 61 78 15 01 01 01 07 06 76 6f  ..vot.ax......vo
        40: 75 2e 61 78 15 01 01 01 07 06 76 6f 76 2e 61 78  u.ax......vov.ax
        50: 15 01 01 01 07 09 78 38 71 6b 31 70 2e 61 78 15  ......x8qk1p.ax.
        60: 01 01 01 07                                      ....</pre>
<p>El contenido del fichero temporal es la salida de la instrucción <strong>tracemem</strong>, ahora tendriamos que sacar la información de este fichero. Mediante un script en PERL podemos tratar nuestro fichero para que de una salida mas sencilla, pero este es un trabajo que dejo aquí para quien se anime. Nosotros vamos a seguir paso a paso. Lo siguiente es buscar en el fichero /tmp/salida_dtrace todas las líneas correspondientes al thread 118 que es el que ha obtenido respuestas lentas de la BD</p>
<pre>
root@tcapp04 # cat /tmp/salida_dtrace | grep "TID: 118"
   ...    

   8076          TID: 118        FD: 46          Size: 17        Time: 0         send return
   8076          TID: 118        FD: 46          Size: 8         Time: 0         read entry
  <strong>17183          TID: 118        FD: 46          Size: 8         Time: 9106      read return</strong>
  17183          TID: 118        FD: 46          Size: 210       Time: 0         read entry
  17183          TID: 118        FD: 46          Size: 210       Time: 0         read return
  17184          TID: 118        FD: 46          Size: 23        Time: 0         send entry
  17184          TID: 118        FD: 46          Size: 23        Time: 0         send return
  ...
  17247          TID: 118        FD: 46          Size: 218       Time: 0         read return
  17247          TID: 118        FD: 46          Size: 17        Time: 0         send entry
  17247          TID: 118        FD: 46          Size: 17        Time: 0         send return
  17248          TID: 118        FD: 46          Size: 8         Time: 0         read entry
  <strong>25981          TID: 118        FD: 46          Size: 8         Time: 8733      read return</strong>
  25981          TID: 118        FD: 46          Size: 65        Time: 0         read entry
  25981          TID: 118        FD: 46          Size: 65        Time: 0         read return    

root@host #</pre>
<p>Con la salida anterior podemos identificar el comportamiento de las llamadas a sistemas <strong>read</strong> y <strong>send</strong> y lo que nos debería llamar la atención es el tiempo transcurrido entre la entrada en el <strong>read</strong> y la salida de dicha llamada a sistema, hay un intervalo de 9,1 segundos. Una vez que hemos detectado este <strong>read</strong>, debemos saber qué se envió a la BD mediante la llamada <strong>send</strong> para intentar identificar la causa de la lentitud. Buscamos en el fichero de salida de dtrace todas las lineas anteriores a los <strong>8076</strong> milisegundos y encontramos que en el milisegundo 8070 se ejecuta una llamada <strong>send</strong></p>
<pre>
   8070          TID: 118        FD: 46          Size: 2048      Time: 0         send entry
   8070          TID: 118        FD: 46          Size: 2048      Time: 0         send return
             0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f  0123456789abcdef
         0: 08 00 00 00 06 00 00 00 00 20 03 5e 00 02 80 29  ......... .^...)
        10: 00 01 02 25 e2 01 01 0d 00 00 00 00 04 7f ff ff  ...%............
        20: ff 01 02 01 32 00 00 00 00 00 00 00 0a 53 45 4c  ....2........<strong>SEL
        30: 45 43 54 20 44 49 53 54 49 4e 43 54 20 44 6f 63  ECT DISTINCT Doc</strong>
....</pre>
<p>Ahora solo tenemos que sacar la consulta y averiguar si está bien construida, faltan indices, etc. Pero este es otro asunto. Este blog es un ejemplo de como una herramienta como <strong>DTrace</strong> nos puede ayudar a identificar puntos lentos en nuestras aplicaciones.</p>
]]></content:encoded>
			<wfw:commentRss>http://jjmora.es/dtrace-consultas-lentas-en-bd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>El blog sigue vivo</title>
		<link>http://jjmora.es/el-blog-sigue-vivo/</link>
		<comments>http://jjmora.es/el-blog-sigue-vivo/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 11:16:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Opinión]]></category>

		<guid isPermaLink="false">http://jjmora.es/el-blog-sigue-vivo/</guid>
		<description><![CDATA[Hace tiempo que no actualizo el blog y algunos de mis amigos me ha preguntado si lo había abandonado la respuesta es no, sencillamente estos últimos meses no he podido dedicar tiempo a  una de mis pasiones, escribir en el blog. Podría poner mil razones para excusar la poca o nula actividad del blog en [...]]]></description>
			<content:encoded><![CDATA[<p>Hace tiempo que no actualizo el blog y algunos de mis amigos me ha preguntado si lo había abandonado la respuesta es no, sencillamente estos últimos meses no he podido dedicar tiempo a  una de mis pasiones, escribir en el blog. Podría poner mil razones para excusar la poca o nula actividad del blog en estos meses, pero la verdad es que solo hay 2 razones:</p>
<ul>
<li>En en plano laboral, hemos estado algo liados, cosas que hacer.</li>
<li>En el plano personal, mis hijos prefieren ver a Mickey Mouse en Youtube que verme a mi escribiendo en el blog :)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jjmora.es/el-blog-sigue-vivo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cherokee Summit 2010</title>
		<link>http://jjmora.es/cherokee-summit-2010/</link>
		<comments>http://jjmora.es/cherokee-summit-2010/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 14:43:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Noticia]]></category>

		<guid isPermaLink="false">http://jjmora.es/cherokee-summit-2010/</guid>
		<description><![CDATA[El primer encuentro internacional de Cherokee, tendrá lugar en Madrid (España) los próximos 7 y 8 de mayo en la Universidad Rey Juan Carlos. Es el primer evento realizado por la comunidad de Cherokee. Si no conoces Cherokee, ésta es una buena oportunidad de conocer a parte de la gente que está colaborando en su [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://summit.cherokee-project.com" title="logosummit.jpg"><img src="http://jjmora.es/wp-content/logosummit.jpg" title="logosummit.jpg" alt="logosummit.jpg" border="0" /></a><a href="http://summit.cherokee-project.com/" title="summitlogo.png"><br />
</a><br />
El <strong>primer encuentro internacional de <a href="http://www.cherokee-project.com/">Cherokee</a></strong>, tendrá lugar en <strong>Madrid </strong>(España) los próximos <strong>7 y 8 de mayo en </strong>la Universidad Rey Juan Carlos.</p>
<p>Es el primer evento realizado por la comunidad de <strong><a href="http://www.cherokee-project.com/">Cherokee</a></strong>. Si no conoces <strong>Cherokee</strong>, ésta es una buena oportunidad de conocer a parte de la gente que está colaborando en su desarrollo, así como asistir a charlas sobre casos de exito. Este joven servidor web se está posicionando muy bien dentro del estrecho mundo de los servidores web, la interfaz es muy amigable y su arquitectura se aleja de la de <strong>Apache</strong>, lo que le permite una gran capacidad de adaptación a cualquier entorno y sobre todo es una opción indiscutible en entornos de carga extrema. Durante el encuentro se presentará la <strong>versión 1.0</strong>.</p>
<p>Puedes encontrar toda la información, así como los formularios de registro en la web del evento <a href="http://summit.cherokee-project.com/">http://summit.cherokee-project.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jjmora.es/cherokee-summit-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

