Entradas

Using Docker.

Imagen
En materia de construcción de aplicaciones las tendencias han cambiado, aunque no ha permeado a países como México. Es difícil abrirse camino en construcciones de software con filosofías adecuadas a tiempos donde la información fluye como nunca antes. Este libro es para aquellas personas que busquen comprender los porqués y los cómos. 
Los microservicios han llegado para quedarse, la madurez de las comunicaciones se han establecido y mejorado de tal manera que son fiables y soportan gran cantidad de tráfico sin sacrificar demasiado los tiempos de respuesta. 
Los servicios que ofrecen flexibilidad para hacer frente a las demandas de tráfico tienen que serlo sin la intervención humana, puesto que el tiempo de accionar es mucho mayor con respecto a los equipos de cómputo.
Este libro abarca de manera concreta los microservicios y cómo van de la mano con devops. Así que tiene muchos aristas por dónde leerlo y aprender con Adrian Mouat la utilización de Docker.




Introducción a DevOps

Imagen
El siguiente documento es la mejor introducción de DevOps que he leído hasta el momento. Es conciso en cuanto qué podemos esperar de una cultura organizacional de tal índole, haciendo énfasis en los pilares que la construyen. 
Los ejemplos son lúdicos y nos ayudan a imaginar algunos de los pasos a considerar si es que queremos promover dentro de nuestras organizaciones una cultura devops. Sirve como un primer manual con lo cual colocar a las personas en la sensibilidad que requerimos para comenzar el proceso de transformación del mindset.
Les recomiendo mucho su lectura, es un artículo breve que toda persona cercana a las TIs debería considerar. Lo pueden descargar sin ningún costo en Amazon o en el sitio de Oreilly (solo requiere suscripción).


split() en AWK

AWK contiene muchas funciones (aka build-in) que nos permiten manipular los string. La función split() es sumamente útil para la transformación de strings en arreglos. El string puede provenir de un archivo de texto, variable o resultado de cualquier substring.
var =split(string,array_name,separator)

Ejemplo

#!/bin/awk

{
    my_string="Hola mundo cruel!"

    ss = split(my_string,my_array," ")

    for (my_str in my_array)
          print my_str, my_array[my_str]

}
Salida en línea de comandos.

1 Hola
2 mundo
3 cruel!

Iniciando con Python

Imagen
Python programming for beginners de Jason Cannon es uno de los mejores libros introductorios que he leído. Parte del secreto de Cannon es su escritura lacónica y economía en páginas, haciendo magnífico para aquellos que tienen fundamentos de programación de otros lenguajes, haciendo sólo la absorción de la sintaxis y reforzamiento a través de ejemplos.

Con este libro podrás aprender a construir sencillos programas con Python y sus múltiples funcionalidades para trabajar con datos y fuentes externas. Recomiendo que al finalizar el libro, no se abandone el aprendizaje de Python y se continúe con libros más avanzados para afianzar el conocimiento adquirido. No cae nada mal algo de algoritmia para pensar eficientemente en la resolución de problemas.

Análisis de efectividad en lenguajes de programación.

Imagen
Últimamente me ha dado por realizar pequeñas prácticas que hace mucho realicé como parte de mi descubrimiento en algunos lenguajes de programación. He leído mucho respecto a los sabores y performance de cada lenguaje, cuyos argumentos no trataré por ser sumamente objetivos. Algunos valoran la facilidad, otros la poca verborrea que facilitan la construcción de complejos componentes de software.
A continuación expongo los códigos comparados y las salidas en terminal.
Características de la computadora. CPU: 2 CPUs con 2 Cores AMD Turion(tm) 64 X2 Mobile Technology TL-60 a 1800.000 Mhz.Memoria RAM: 3.7GSistema Operativo: Fedora release 20 (Heisenbug)

Versiones de compiladores/interpretesPython: 2.7C: gcc version 4.8.3 20140911 (Red Hat 4.8.3-7) (GCC)Java: 1.7 hotspot a 64 bitsRuby: 2.0Go: 1.4.2 64 bits
Python


for my_range in range(1,90000000):print (my_range)


Tiempo de ejecución

real    10m24.691s user    2m23.193s sys     0m7.727s

C
int i = 0; for(i=0;i<=90000000;i++) { printf("%d\n…

¿Por qué ser reactivos?

Imagen
Un documento interesante sobre algunos de los lineamientos para el diseño de arquitecturas de software resilientes, no solo dentro de la aplicación, también como parte de las capas de hardware y software. Los sistemas reactivos, en resumen, son aquellos que pueden tomar acciones ante una falla esperada en alguno de los componentes, por ejemplo, un servicio. También es mandatorio decir que se apoya en los patrones asíncronos, así evitando el desperdicio de recursos por bloqueo de hilos o conexiones. 
Ahora con el mundo on-premise, las cosas se ponen mucho más sencillas para construir arquitecturas robustas de software, aunado a la simplicidad de los orquestadores y proveedores de automatización para cualquier componente en el día a día.
Como nos tiene acostumbrados, O'reilly imprime un gran esfuerzo técnico y de edición en temas informáticos.


Les dejo aquí el PDF de libre descarga.


Pluging de HAProxy para Collectd.

Introducción Por fin encuentro un poco de tiempo para escribir. Los temas que ahora me atañen son sobre SRE (Site Reliability Engineering), y dentro de está multidisciplina podemos hallar un cantidad sorprendente de áreas que no aparecen directamente en su definición, sin embargo, la hacen posible. 
Uno de los pilares es el monitoreo de los componentes de la arquitectura que soporta las aplicaciones, incluídos los productos de software utilizados. Con el propósito de controlar el día a día (estadísticas) de comportamiento y desempeño de cada pieza, es necesario instrumentar los recolectores de métricas. 
Yo trabajo con Collectd, puesto que me facilita mucho la vida al momento de integrar agentes que me permitan la recolección de métricas en poco tiempo con un consumo trivial de recursos así como la estabilidad que el proyecto goza. 
Integración de HAProxy con Collectd
Al día de hoy existen al menos 3 plugins que el sitio de collectd.org menciona, no obstante, ninguno de ellos me funci…