Posteado por: jogule en: junio 27, 2011
Es una pregunta que siempre me inquieta, cual es el punto en el cual deja de tener sentido cada peso que invierto en proveer un sistema de alta disponibilidad, es decir, en donde surgen los rendimientos decrecientes de tal inversión?
Primero que todo unos conceptos básicos:
La alta disponibilidad se mide en % de tiempo disponible, por ejemplo que un sistema tenga una disponibilidad de un 99.9% se refiere a que por ejemplo en un periodo de 24 horas solo podría estar indisponible máximo 864 segundos (14,4 minutos). La alta disponibilidad es una tarea proactiva para evitar o disminuir los riesgos de indisponibilidad.
La continuidad se mide en el tiempo que se tarda recuperar la funcionalidad del sistema desde el fallo del mismo, por ejemplo 5 días si en la eventualidad de fallo total de mi sistema tardo ese tiempo en volver a instalar todos los componentes y recuperar la funcionalidad. La continuidad es una labor de cierta manera reactiva (aunque planeada) para disminuir el impacto de una indisponibilidad ya explicita.
Ahora, antes de decidir “cuanto”, debemos decidir “que” partes de mi sistema requieren de alta disponibilidad, esto ultimo lo define un análisis de los componentes críticos del sistema.
Un componente es critico en un sistema si la falta del mismo durante el tiempo que tarde en recuperarlo o reemplazarlo puede ocasionar la falla total del sistema.
Por ejemplo, en un hogar actual, la falta de cualquier servicio publico puede llegar a resultar una verdadera molestia, sin embargo y a pesar que se impacta de manera considerable la calidad de vida en ese hogar, sus habitantes pueden soportar la ausencia del servicio durante el tiempo que pueda tomar recuperarlo o en el peor de los casos reemplazarlo (i.e. contratando a otro proveedor) si es imposible su recuperación. Aún así la funcionalidad esencial del hogar que es proveer de habitación no es comprometida seriamente.
En contraste, en una fabrica industrial, el fallo de un componente como puede ser el servicio de energía o agua, puede hacer parar totalmente la producción, función que es la razón de ser de una fabrica. En este caso el servicio publico es obviamente un componente critico del sistema.
Ahora, según los conceptos mencionados hasta ahora, podemos concluir que la disponibilidad total de un sistema estará dada por la disponibilidad de su componente con mas probabilidad a fallar, o como dice el viejo refrán, la fuerza total de la cadena estará dada por la fuerza de su eslabón más débil.
Esta probabilidad de fallo por componente es normalmente referida como el MTBF (Mean Time Between Failure) o el Tiempo Medio entre Fallos de cada componente, y el tiempo de recuperación o reemplazo es llamado TRT (Target Recovery Time) o Tiempo de Recuperación Objetivo.
Por ejemplo si el servicio de energía históricamente ha fallado unas tres veces al año y cada vez que falla se tardan unas tres horas en reponerlo, el MTBF es de 4 meses y el TRT es de 3 horas.
Según todo esto, el MTBF del sistema como un todo estará definido al MTBF mas bajo de mis componentes críticos, a su vez el TRT del sistema como un todo será la suma de los TRT de cada componente critico, siempre pensando en el peor de los casos.
El tiempo esperado de indisponibilidad del sistema (SUET: System Unavailability Expected Time) en un periodo dado (P) será entonces:
SUET = P/MTBF * TRT
Siguiendo el ejemplo anterior, el SUET del sistema en un año será entonces de 1año/4meses * 3 horas = 9 horas/año.
Entonces, como decido si en un sistema vale la pena los costos extras de alta disponibilidad?
Depende del punto de vista del sistema.
Como usuario del sistema, es decir cuando el sistema bajo análisis hace parte un sistema mayor del cual soy responsable y el sistema bajo análisis es un componente crítico del sistema mayor, entonces ese sistema como componente merece ser tenido en cuenta para una inversión de alta disponibilidad. Si no es un componente critico del sistema entonces no vale la pena, e inclusive se debería considerar la tercerización del componente.
Como proveedor del sistema, es decir cuando el sistema es un fin por si mismo y soy responsable de este, en este caso siempre se debería considerar una inversión en alta disponibilidad.
Y cuanto debería ser el presupuesto para HA?
De esta manera, podemos calcular que el costo de oportunidad en el caso de indisponibilidad del sistema será igual al ingresos/hora del sistema como un todo * el SUET del sistema.
Si por ejemplo los ingresos generados por el sistema son de $10.000,00 USD/hora, y el sistema tiene un SUET de 9 horas al año, la indisponibilidad del sistema costara seguramente unos $90.000,00 USD/año.
Siendo así, podemos concluir que es viable invertir hasta $90.000,00 USD/año (ingresos/hora * SUET) en evitar la indisponibilidad del sistema. Después de esta cifra no vale la pena invertir, pues resulta mas económico recuperar o reemplazar el sistema dentro del TRT establecido.
También hay que notar que si mejorando mis planes de continuidad disminuyo el TRT, entonces simultáneamente disminuye el presupuesto para HA.
Debo confesar además que en este análisis del presupuesto no se están teniendo en cuenta costos asociados a los riesgos generados por la indisponibilidad del sistema, tales como la perdida de clientes, daño de la confianza en el sistema, etc, que en algún momento pueden resultar considerables.
Por otro lado, ya teniendo el presupuesto claro, como lo invierto?
Lo mas sensato es priorizar de acuerdo al MTBF*TRT de cada componente critico, de esta manera es posible enfocarse en el componente critico mas costos en proporción a su probabilidad de fallos y al coste de recuperación.
Conclusión
Posteado por: jogule en: febrero 13, 2010
How long I’ve to wait for view my streaming (youtube, megavideo) online movie without stops?
Well is pretty simple, you just have to know two things:
* The lenght of the streaming in seconds.
* The proportion between your bandwith rate (Kb/s) and the streaming encoded bitrate (Kb/s).
The first is trivial to get, for the second we can get it indirectly.
That proportion bandwith/bitrate is the same proportion that the inverse of the delay time you have to wait between a stop and a resume.
So the time you have to wait for buffer fill enought to view the movie flawlessly is:
buffertime = movielength (1 – 1/(delay))
Example:
I want to view a movie witch length is 1:39:17 that’s 17s + (39m x 60s/m) + (1h x 3600s/h) = 5957s
I’ve detected 5 seconds between an stop and a resume, so I need to wait:
5957s x (1 – 1/5) = 5957s x (1 – 0.2) = 5957s x (0.8) = 4765s = 1:19:25
Then I have to wait the buffer fill 80% of the bar to view my movie without stops. Meanwhile I can be doing some popcorn and not wast my time waiting front the screen!
I hope be usefull.
Posteado por: jogule en: junio 26, 2009
Para subrayar sintaxis (Syntax Highlighting) en WordPress.com simplemente se coloca el codigo entre las etiquetas
y
Ejemplo:
public function hola($nombre)
{
echo "hola!".$nombre;
}
Posteado por: jogule en: junio 26, 2009
I have been playing around PHP Framework Symfony since some days ago, and I wrote a small batch script for quickly setup a basic project.
mkdir %1 cd %1 mkdir lib\vendor xcopy /e /i /q /h /y c:\symfony lib\vendor\symfony REM # Genera el proyecto C:\xampp\php\php lib\vendor\symfony\data\bin\symfony --quiet generate:project %1 REM # Genera la aplicación frontend C:\xampp\php\php symfony --quiet generate:app --escaping-strategy=on --csrf-secret=UniqueSecret frontend REM # change the absolute path to the symfony installation to a relative one strfind -r -o -z "%~f1" "dirname(__FILE__).'\.." config\ProjectConfiguration.class.php strfind -r -o -z "require_once '" "require_once " config\ProjectConfiguration.class.php REM # setup apache virtual server xcopy /y /q C:\xampp\apache\conf\httpd.conf.symfony C:\xampp\apache\conf\httpd.conf strfind -r -o -z "MySfProjectPath" "%~f1\web" C:\xampp\apache\conf\httpd.conf strfind -r -o -z "SfPath" "%~f1\lib\vendor\symfony\data\web\sf" C:\xampp\apache\conf\httpd.conf REM # enable doctrine strfind -r -o -z "sfDoctrinePlugin" "sfPropelPlugin" config\ProjectConfiguration.class.php C:\xampp\php\php symfony cc C:\xampp\php\php symfony plugin:publish-assets del config\propel.ini del config\schema.yml del config\databases.yml mkdir config\doctrine echo # Autogenerate schema.yml for Doctrine >> config\doctrine\schema.yml REM # This assumes that exists a mysql instance in localhost granted to root whitout password C:\xampp\php\php symfony configure:database --name=doctrine --class=sfDoctrineDatabase "mysql:host=localhost;dbname=%1" root C:\xampp\php\php symfony doctrine:build-db
The following requirements must be filled:
Just append the following at the end of the normal httpd.conf and save as httpd.conf.symfony
# Be sure to only have this line once in your configuration
NameVirtualHost 127.0.0.1:8080
# This is the configuration for MySfProject
Listen 127.0.0.1:8080
<VirtualHost 127.0.0.1:8080>
DocumentRoot "MySfProjectPath"
DirectoryIndex index.php
<Directory "MySfProjectPath">
AllowOverride All
Allow from All
</Directory>
Alias /sf SfPath
<Directory "SfPath">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
I hope that be useful, regards…
Posteado por: jogule en: mayo 16, 2009

He aquí el criterio para definir el alcance de una empresa, es decir lo que debe estar dentro y lo que debe estar fuera de esta. El teorema de Coase, que establece:
“las empresas deben replegarse hasta que el coste que supone realizar una transacción de forma interna no supere el coste que implica realizarla de forma externa“
Recomiendo leer el artículo completo;
Posteado por: jogule en: abril 19, 2009

Situación: Un proceso de selección en donde una persona “A” requiera contratar los servicios de un pool de n aspirantes “B1, B2, … Bn”. En donde solo uno de ellos sera elegido.
Solución empirica: Solicitar a cada aspirante su curriculum vitae (CV), hacer una matriz de selección ponderando las diferentes cualidades de cada uno con los criterios de selección del cargo y elegir el mejor.
Si detallamos un CV común, aparecen las siguientes secciones:
Una de ellas, la ultima y aunque no lo pareciera por su posición en el CV, pesa mucho.
Cuando entramos a competir en un proceso de selección ademas de nuestra experiencia, skills y certificaciones, tambien estamos compitiendo con nuestras referencias, con nuestros contactos, nuestra red social y este item en muchos casos puede hacer la diferencia.
Quiero exponer que la rosca, mas que algo poco deseable, muchas veces tiene un sustento logico del cual nos podemos aprovechar.
La rosca, palanca o como yo prefiero llamarlo el circulo de confianza, no es mas que una “transferencia de confianza” entre la persona que elige y los participantes en el proceso de selección.
La confianza es el valor que nos permite hacer supuestos sobre una persona o situación sin tener que desgastarnos verificando continuamente su veracidad.
La confianza es valiosa por que sencillamente la desconfianza es supremamente costosa, la desconfianza es la enemiga de la eficiencia y la productividad, por eso no podemos trabajar con personas en las que desconfiamos.
La confianza permite controlar riesgos, haciendo que nuestros supuestos en situaciones riesgosas sean mas fuertes y la probabilidad del riesgo disminuya y por ende su costo.
Por esto, la transferencia de confianza por medio de las referencias en un proceso de selección es de incalculable valor, siendo en si mismo un proceso riesgoso el de la selección, utilizar esta herramienta (la confianza) como reductor del riesgo es imprecindible.
Por eso la rosca, la palanca o en ultimas el circulo de confianza no debe ser visto como algo malo, es simplemente un comportamiento malcomprendido de los seres humanos que es muy valioso para la sociedad.
Posteado por: jogule en: abril 5, 2009
“No deseamos que nos comprendan en lo racional, en lo comprensible sino en lo oscuro de nosotros mismos. Y es preciso comprender del mismo modo.”
Gabriela Gambaro
Posteado por: jogule en: abril 4, 2009
“Confianza es el sentimiento de poder creer a una persona incluso cuando sabemos que mentiríamos en su lugar.”
“Henry-Louis Mencken (1880-1956) Periodista y escritor estadounidense.
Posteado por: jogule en: abril 4, 2009