Programadores. El hilo de los hinformáticos profesionales como PABLOPL.

Depende de la importancia del log yo hago dos cosas, si el log tiene que estar sí o sí, lanzo una excepción y no dejo continuar la app, si el log es prescindible, lo desactivo para toda la app y ahí tomo dos caminos o bien se informa de la excepcion por otro método si es necesario (email, stdout, otro log a pelo, etc.) o bien no se hace nada, todo depende de las especificaciones.

Para resolver la dependencia circular simplemente capturo yo las excepciones necesarias en la clase de configuración cuando va a iniciar el sistema de log y actuo como he puesto antes, sin dejar que pasen a la función que captura el log, que obviamente no sabría ni que hacer dado que lo que ha fallado es su propia inicialización.

Casi siempre uso log4net y las especificaciones consideran los logs imprescindibles así que suelo tomar la primera opción, si inicialización del log peta no dejo seguir.


Todo esto suponiendo que no puedas romper la dependencia entre ellas, que supongo que no, si la puedes romper la lógica del primer párrafo es la misma, la del segundo sobra.
 
Supongamos que tenéis una aplicación con una clase de configuración y otra para logging.

La clase de logging debe ser configurada con una serie de parámetros, entre ellos el fichero para volcar los logs, pero a su vez la clase de configuración lanza excepciones si no encuentra los ficheros de configuración solicitados que acaban siendo capturadas por una función que loguea las excepciones. Imaginemos que el fichero de configuración del log no puede hallarse o leerse o que está malformado, con lo que se intentará notificar la excepción a un log que todavía no se ha podido determinar porque está en el fichero que no existe.

¿Cómo resolvéis normalmente una dependencia circular de este tipo?


Cuestión para @Krakenjitsu 's, @iskariote 's, @MIP 's, @Armin Tamzarian 's, @PatoLaqueado 's, @Rhodium 's, @SPETNAZ es... no para @Leandro Gado 's de la vida.

Asi de pronto borracho y cansado:

Containers: Error al standar output, mandar todo a algo como logstash y configurarlo para que de alerte o lo que quieras cuando lo parsees y lo encuentre.

A pelo: que la aplicacion lo mande a rsyslog o similar usando la red. O pilla Datadog gratis pa un nodo y haz que la app mande un custom event cuando pase esta mierda.

Y asi mil opciones
 
Muchas gracias a todos por responder.

De momento estaba haciendo algo parecido a lo que propone MIP: una configuración predeterminada hardcodeada para la clase de logging, y una vez inicializada inicializar en segundo lugar la clase de configuración e intentar cargar una configuración predefinida por el usuario.

A ver si animamos un poco entre todos este hilo.
 
Microservicios que tal? Ya se ven por Spain?

Que cojones: Docker, motherfucker, do you speak it?
 
Que cojones: Docker, motherfucker, do you speak it?

¿Docker no es lo de la ballenita? El año pasado estaba haciendo un curso y a mitad el profesor nos dejó tirados porque se iba a trabajar de eso en Madrid, como teníamos confianza con él nos dijo que tenía que negociar salario pero no iba a bajar de 45k al año.

Luego hace unos meses leí un artículo diciendo algo tal que Docker prometía petarlo y al final cacaceite o algo así, no lo leí en profundidad.
 
¿Docker no es lo de la ballenita? El año pasado estaba haciendo un curso y a mitad el profesor nos dejó tirados porque se iba a trabajar de eso en Madrid, como teníamos confianza con él nos dijo que tenía que negociar salario pero no iba a bajar de 45k al año.

Luego hace unos meses leí un artículo diciendo algo tal que Docker prometía petarlo y al final cacaceite o algo así, no lo leí en profundidad.

Correcto. La usar la ballenita desde beta me valio el poder ir a Londres a currar hace como 5 anyos o asi.

En todo ese tiempo todos los proyectos en los que he trabajado han usado Docker o se ha migrado a el. Al principio a pelo, despues en cosas como Mesos, ECS o Kubernetes que ahora esta que lo peta.

Docker es el standard de contenedores, esta el Rocket por ahi, pero la adopcion es meh y muy relacionado con CoreOS que me da bastante yuyu.

Es una tecnologia cojonudisima, todo el mundo la esta usando hoy en dia y facilita enormemente el deployment, automatizacion de pipelines y clustering solutions.

Mi briconsejo es que no la aprendais para yo poder seguir cobrando muchisimo.

Estoy pensando volver a casa como el turron, como van los salarios de ingenieros informaticos hoy en dia?
 
He ido sondeando en Infojobs y los resultados de la primera página me daban la media de 24-36 K al año.
Vaya puta mierda. Pues conozco un colega en Madrid cobrando 40k, y algo he hablado sobre los 50k.

Si negocio 50k deberia darme por satisfecho? Esta tan mal lo nuestro en España?
 
Vaya puta mierda. Pues conozco un colega en Madrid cobrando 40k, y algo he hablado sobre los 50k.

Si negocio 50k deberia darme por satisfecho? Esta tan mal lo nuestro en España?

Como todo depende de la experiencia que tengas y lo que hagas. Con 50k date por satisfecho, sí. Yo tengo una década de experiencia y no llego a los 40, también es cierto que no soy desarrollador (que son los que ganan más pasta) y que me dan bastantes pluses que no están en el salario base.
 
Última edición por un moderador:
Como todo depende de la experiencia que tengas y lo que hagas. Con 50k date por satisfecho, sí. Yo tengo una década de experiencia y no llego a los 40, también es cierto que no soy desarrollador (que son los que ganan más pasta) y que me dan bastantes pluses que no están en el salario base.
No llego a los 10 años como arquitecto de sistemas, por supuesto muchos mas haciendo de todo. I have worn many hats.

Hasta he sido developer en php, tiradme piedros
 
Última edición:
Microservicios que tal? Ya se ven por Spain?

Que cojones: Docker, motherfucker, do you speak it?

Hoy mismo me estoy pegando con vagrant, y ayer lo hice con docker, aún no se que voy a elegir para montar entornos de desarrollo.

Por otro lado no entiendo mucho lo de docker, yo siempre he montado los contenedores a pelo con lxd y no veo que ventajas aporta docker si realmente sabes que coño estas tocando por debajo y usas ansible o algo similar docker solo me parece otra capa de complejidad más encima del contenedor, ¿Porque la peña está tan flipada con docker? ¿Por no aprender "sudo lxc ..."?, ilumíname.
 
Hoy mismo me estoy pegando con vagrant, y ayer lo hice con docker, aún no se que voy a elegir para montar entornos de desarrollo.

Por otro lado no entiendo mucho lo de docker, yo siempre he montado los contenedores a pelo con lxd y no veo que ventajas aporta docker si realmente sabes que coño estas tocando por debajo y usas ansible o algo similar docker solo me parece otra capa de complejidad más encima del contenedor, ¿Porque la peña está tan flipada con docker? ¿Por no aprender "sudo lxc ..."?, ilumíname.
Vagrant esta guay. Lo usan en el gobierno de UK para entornos de desarrollo pero me da bastante yuyu despues de haberlo supporteado.

Docker cuando salio prometia ser facil y claro, cosa que gano a los developers que no querian follones

Para mi las bazas de Docker son los dockerfiles para automatizar la creacion de imagenes, que esta bastante maduro para su uso en entornos grandes y que todas las herramientas que usan contenedores soportan Docker unicamente

Edito: Hashicorp mola infinito. Vault es el mejor producto de crypto que he visto nunca, Consul es muy bueno y Terraform una alternativa cojonudisima a usar Cloudformation u otras soluciones para tener infra como codigo.

Soy un Hashifanboy
 
Última edición:
Para mi las bazas de Docker son los dockerfiles para automatizar la creacion de imagenes, que esta bastante maduro para su uso en entornos grandes y que todas las herramientas que usan contenedores soportan Docker unicamente

Para los developers lo veo bien, al fin y al cabo no quieren complicarse la vida, lo que no entiendo es ese hype en el resto, que parece que todo hay que hacerlo con Docker, yo he visto llevar Docker hasta el stage de producción, y no lo entiendo, solo añades una superficie de ataque más y una tecnología ejecutandose más, solo por no aprender a manejar lxc a pelo y saber linux, realmente docker lo único que hacer por debajo es manejar lxd y medio suplantar a ansible.

En cuanto a las herramientas, es cierto que todo el mundo soporta la creación de un contenedor Docker para establecer el entorno pero a la hora de llevarlo a producción deberían hacerlo en condiciones, Docker parece una herramienta para el noop que comentabas hace poco, "deja que el developer se aprenda como va esto del docker, y nos ahorramos el devop y el sysop, total le contratamos los contenedores en Azure/ASW/Google y que despliegue directamente".



De hasi solo he probado Vagrant, y lo que yo he probado aún está un poquillo verde pero pinta cojonudo, por qué está verde? Porque he montado Vagrant sobre un provider hyper-v con un guest ubuntu xenial, y ni hashicorp tiene un box oficial de xenial (se quedaron en precise que ya les vale) ni el proveedor hyper-v está plenamente soportado aún, pero la verdad es que cuando consigues montarlo todo es la caña, me esta gustando aunque aún me quedan flecos como el port forwarding entre host y mv para saber si me va a valer o no.
 
Última edición:
Para los developers lo veo bien, al fin y al cabo no quieren complicarse la vida, lo que no entiendo es ese hype en el resto, que parece que todo hay que hacerlo con Docker, yo he visto llevar Docker hasta el stage de producción, y no lo entiendo, solo añades una superficie de ataque más y una tecnología ejecutandose más, solo por no aprender a manejar lxc a pelo y saber linux, realmente docker lo único que hacer por debajo es manejar lxd y medio suplantar a ansible.

En cuanto a las herramientas, es cierto que todo el mundo soporta la creación de un contenedor Docker para establecer el entorno pero a la hora de llevarlo a producción deberían hacerlo en condiciones, Docker parece una herramienta para el noop que comentabas hace poco, "deja que el developer se aprenda como va esto del docker, y nos ahorramos el devop y el sysop, total le contratamos los contenedores en Azure/ASW/Google y que despliegue directamente".



De hasi solo he probado Vagrant, y lo que yo he probado aún está un poquillo verde pero pinta cojonudo, por qué está verde? Porque he montado Vagrant sobre un provider hyper-v con un guest ubuntu xenial, y ni hashicorp tiene un box oficial de xenial (se quedaron en precise que ya les vale) ni el proveedor hyper-v está plenamente soportado aún, pero la verdad es que cuando consigues montarlo todo es la caña, me esta gustando aunque aún me quedan flecos como el port forwarding entre host y mv para saber si me va a valer o no.

Pues si has visto Docker bien montado llevado a produccion, facilita la tarea cosa mala. He estado en un sitio con un gabacho que defendia usar lxc y una herramienta de orquestracion tambien gabacha para lxc y estaban a anyos luz de cualquier cosa que puedas montar con Docker.

Vamos, que lxc es un lio comparado con lo facil y streamlined que esta Docker. Dockerfiles para crear las imagenes, git, Jenkins y alguna cosa tipo Rancher, ECS o Kubernetes y ya tienes un pipeline de putisima madre montando en dos dias.

Si me dicen de hacer lo mismo con lxc me puedo pegar un tiro.

El problema con Vagrant es que fue el primer Hashiproduct, estuve hablando con el tochoingeniero jefe de Hashicorp para Europa este miercoles acerca de esto, y me comentaba que la idea de Hashi es tener un producto para todas las stages de la ingenieria de software. Tambien me conto secretitos de las cosas nuevas que van a sacar pero no puedo contarlos o me meten cabeza de Benito por el ohaio.

Vagrant es development, y sufre del problema que quiere solucionar, que cada developer es un mundo y que al final el problema esta casi siempre entre la silla y el teclado o es Windows liandola.

En su momento monte en entorno dev para unos 40-50 devs usando Vagrant y Docker y todavia lo estan usando, asi que es valor seguro si tienes tiempo de suportearlos.

Hoy en dia monto clusteres on demand en AWS con vida maxima y que los usen los devs. 0 problemas.
 
Pues si has visto Docker bien montado llevado a produccion, facilita la tarea cosa mala. He estado en un sitio con un gabacho que defendia usar lxc y una herramienta de orquestracion tambien gabacha para lxc y estaban a anyos luz de cualquier cosa que puedas montar con Docker.
Vamos, que lxc es un lio comparado con lo facil y streamlined que esta Docker. Dockerfiles para crear las imagenes, git, Jenkins y alguna cosa tipo Rancher, ECS o Kubernetes y ya tienes un pipeline de putisima madre montando en dos dias.
Si me dicen de hacer lo mismo con lxc me puedo pegar un tiro.

Con lxd monto los entornos en horas (tengo calculadas entre 2 y 4), incluyendo proxys reversos, hardening de maquinas y contenedores, sistemas de integridad, copias, frameworks, etc. Eso si parto de cero, si hablamos de replicar un entorno en una máquina en la que ya he hecho eso no llega ni al minuto :

$ lxc copy template-container nuevo-entorno
$ lxc start nuevo-entorno
$ lxc exec nuevo-entorno -- /bin/bash

Y eso que voy a pelo porque la verdad empecé con esto hace poco y aún no me he metido con Ansible, de ahí que ande comparando docker, vagrant, etc.

La verdad es que de esto no controlo mucho, lo estoy haciendo porque me ha tocado y como developer he empezado por la base, es decir, empollé la teoria de docker, vi que por debajo usaba lxd y me puse con lxd a saco y aparqué docker, de hecho empecé por docker, pero las cosas no funcionaban a la primera por un motivo u otro, probe a hacer "lxc launch ..." y dije "coño aquí todo furula como debe" es simplemente otra máquina linux dentro de la que ya tengo, y por ahí estoy.

Ahora que controlo lxd estoy mirando docker y vagrant, despues miraré ansible, y ahí me pararé y tomaré una decisión sobre que usar, lo mismo cuando me ponga en serio con docker envío lxd a la mierda, pero la realidad es que para lo que estoy haciendo ahora me resulta infinitamente más facil montar los entornos con lxc a pelo que usar docker, lo primero simplemente me funciona lo segundo siempre me da alguna puñeta en el proceso.


Supongo que la diferencia de opinión viene porque estoy a años luz de hacer lo que tu haces, es decir no es lo mismo montar un entorno con contenedores de haya pa' cuando (solo controlo 5 máquinas y 30 contenedores aprox.) que montar un stack ELK en un cluster con balanceo, o estar todo el día provisionando entornos, yo no llego hasta ahí (y espero no llegar) quizás por eso no veo aún que me aporta docker.
 
Última edición:
Buenas, pues la cosa es que me hice un par de tutoriales en Ruby on Rails en Udemy y he picado de aquí y de allá y me he hecho una aplicación relativamente sencillita, pero a la que planeo sacarle unos leuros. La cosa es que no tengo experiencias con estas cosas, y para producción había pensado pillar un VPS y hacer ahí el despliegue. Durante el desarrollo he usado Heroku, pero me parece demasiado caro cuando ya hay que pagar.

Hay una cosa que me aterra de este mundo y es que todos los meses salen cosas nuevas y uno se queda desfasado muy rápido.
¿Algún consejo para el despliegue, y "el mantenimiento", copias de seguridad y demás? Me preocupa que decisiones iniciales me acarreen problemas a largo plazo que me puedan amargar la existencia.
 
Buenas, pues la cosa es que me hice un par de tutoriales en Ruby on Rails en Udemy y he picado de aquí y de allá y me he hecho una aplicación relativamente sencillita, pero a la que planeo sacarle unos leuros. La cosa es que no tengo experiencias con estas cosas, y para producción había pensado pillar un VPS y hacer ahí el despliegue. Durante el desarrollo he usado Heroku, pero me parece demasiado caro cuando ya hay que pagar.

Hay una cosa que me aterra de este mundo y es que todos los meses salen cosas nuevas y uno se queda desfasado muy rápido.
¿Algún consejo para el despliegue, y "el mantenimiento", copias de seguridad y demás? Me preocupa que decisiones iniciales me acarreen problemas a largo plazo que me puedan amargar la existencia.
Abre cuenta gratis en AWS y aprende serverless o usa beanstalk o pon una instancia micro. Dockeriza tu app y la puedes deployear donde sea.

Donde está el enlace a github con tu codigo pa criticarlo?

Edito: las decisiones que te pueden joder la vida son elegir mal las tecnologías y la plataforma, y eso depende de la aplicación y las circunstancias.

Backups, que tienes que backupear? Base de datos, codigo y fotos de pollas?

Cuentanos moar.
 
Última edición:
Lo que es serverless y docker no he tocado nada nunca, aunque le echaré un vistazo. Elegí Rails porque me gustaba lo que leía sobre él y al final poco a poco le fui cogiendo el punto. Aunque estudie algo sobre tecnologías nunca he tenido experiencia real. Mi trabajo es tipo administrativo lo que pasa es que me siguen gustando estas cosas.

La aplicación es muy básica. Es una página orientada al turismo y las empresas de un municipio de poco más 20.000 habitantes. Hay categorías, hashtags y etc. Además cada empresa puede publicar una serie de promociones "flahs" (por ejemplo, válido durante 24h, una semana, etc) que desaparecen solas una vez caducan y también una sección de eventos de la ciudad. Las empresas pagan anualmente una cuantía por aparecer ahí y dependiendo de lo que paguen tienen más o menos cosas.

Sobre el tema de los backups es sobre todo, a parte de la Base de datos los archivos (fotos sobre todo) de cada perfil de empresa.
 
Lo que es serverless y docker no he tocado nada nunca, aunque le echaré un vistazo. Elegí Rails porque me gustaba lo que leía sobre él y al final poco a poco le fui cogiendo el punto. Aunque estudie algo sobre tecnologías nunca he tenido experiencia real. Mi trabajo es tipo administrativo lo que pasa es que me siguen gustando estas cosas.

La aplicación es muy básica. Es una página orientada al turismo y las empresas de un municipio de poco más 20.000 habitantes. Hay categorías, hashtags y etc. Además cada empresa puede publicar una serie de promociones "flahs" (por ejemplo, válido durante 24h, una semana, etc) que desaparecen solas una vez caducan y también una sección de eventos de la ciudad. Las empresas pagan anualmente una cuantía por aparecer ahí y dependiendo de lo que paguen tienen más o menos cosas.

Sobre el tema de los backups es sobre todo, a parte de la Base de datos los archivos (fotos sobre todo) de cada perfil de empresa.

Ruby no es mal lenguaje. El principal problema que le veo es que no tiene el empuje que tenia hace anyos. Por ejemplo trabaje en Londres en una empresa que usaba exclusivamente Ruby para sus aplicaciones y era tan complicado encontrar buenos Ruby developers que decidimos pasar a usar Docker para facilitar ser "language agnostic" y tener equipos escribiendo en Java, Go o le que les saliera del pene.

Para el tema de backups, te recomendaria que usaras AWS, Google Compute Engine o similar, donde puedas montar la infra, escalarla sin muchos problemas si lo necesitas porque por ejemplo tu app ahora sirve a mas municipios. Aprovecha que en esas plataformas ofrecen X as a Service y te quitas de encima muchas tareas que ellos van a hacer mejor que tu. Por ejemplo:

- Backups de DB
SQL = Monta AuroraDB y dale par de clicks para configurar snapshots de la DB cada X tiempo que te parezca correcto. Diarias, semanales, cada X horas..
NoSQL = Despues de dar un paseo largo, reconsidera tu vida y usa una SQL. Si necesitas json usa Postgres.

- Fotos de penes
Ponlas en S3 y mira las opciones que tienes para servirlos (Cloudfront u otro CDN) y tambien las opciones de backup que te pueda interesar. Por ejemplo puedes decidir guardar versiones de los archivos, replicarlos a otro sitio/bucket o mandar copias a un almacenamiento para cosas que no se acceden mucho como AWS Glacier.

Igual es mas caro que montartelo en un proveedor mas cutre, pero los beneficios son enormes y tu app siempre podra escalarse. Te puedo decir que ha ganado muchos leuros gracias a mover empresas a la nube cuando se dan cuenta que han llegado al limite de lo que su proveedor o CPD interno ofrece.
 
Puedes probar los appservices de Azure, están pensados justo para eso que comentas, desplegar una web y escalar si hace falta, te quitan prácticamente toda la gestión de máquina porque te lo dan todo hecho, por otro lado son muy restrictivos si quieres hacer alguna cosa especial en la máquina o algo que se salga de lo que es un despliegue de web normal, precisamente porque te la gestionan ellos.

Hay un tier gratuíto durante un mes para que pruebes, yo los he probado y a mi personalmente no me valían porque necesitaba algo más complejo, pero la idea me gusto mucho precisamente para cosas como la que comentas porque están 100% orientados a eso, que un developer desplieque en una infraestructura de appservice y se olvide de todo salvo de su web.

He mirado por curiosidad y si que soportan Ruby : Creación de una aplicación de Ruby e implementación en App Service en Linux
 
Última edición:
Hola, amigas. Siempre he despreciado la informática como algo ajeno al ser humano, pero de unos años a esta parte he empezado a aceptar que el humano informatizado va a ser una realidad. Me doy cuenta de que mis conocimientos informáticos no van más allá del Ready run" y manejar el ratón. ¿Qué podríais recomendar (libros, cursos, etc.) para ponerme al día? No hablo de ser jaquer, porque yo mato a la gente en el mundo real, donde las consecuencias son irreparables, sino de tener nociones básicas de web, android, programación para lerdos, etc. Soy metódico y aprendo en progresión geométrica. Podríais crear un monstruo que se volviese en vuestra contra. ¿Quién dejaría pasar esta oportunidad?
 
Puedes probar los appservices de Azure, están pensados justo para eso que comentas, desplegar una web y escalar si hace falta, te quitan prácticamente toda la gestión de máquina porque te lo dan todo hecho, por otro lado son muy restrictivos si quieres hacer alguna cosa especial en la máquina o algo que se salga de lo que es un despliegue de web normal, precisamente porque te la gestionan ellos.

Hay un tier gratuíto durante un mes para que pruebes, yo los he probado y a mi personalmente no me valían porque necesitaba algo más complejo, pero la idea me gusto mucho precisamente para cosas como la que comentas porque están 100% orientados a eso, que un developer desplieque en una infraestructura de appservice y se olvide de todo salvo de su web.

He mirado por curiosidad y si que soportan Ruby : Creación de una aplicación de Ruby e implementación en App Service en Linux
Yo no recomendaria Azure por tres motivos:

- Primero es de Microsoft.
- Segundo no tiene tantas features como AWS o GCE. Y cuando te hagan falta te cagaras en Azure.
- Tercero cuando busques: como hacer X en Y prueba a ver cuantos resultados salen de AWS, miralos por encima y comparalos con los otros. No solo es mas facil sino que como AWS es mas usado vas a encontrar mas soluciones que otros se han currado.

AWS es el rey de la nube por algo.
 
Hola, amigas. Siempre he despreciado la informática como algo ajeno al ser humano, pero de unos años a esta parte he empezado a aceptar que el humano informatizado va a ser una realidad. Me doy cuenta de que mis conocimientos informáticos no van más allá del Ready run" y manejar el ratón. ¿Qué podríais recomendar (libros, cursos, etc.) para ponerme al día? No hablo de ser jaquer, porque yo mato a la gente en el mundo real, donde las consecuencias son irreparables, sino de tener nociones básicas de web, android, programación para lerdos, etc. Soy metódico y aprendo en progresión geométrica. Podríais crear un monstruo que se volviese en vuestra contra. ¿Quién dejaría pasar esta oportunidad?

Toma algo basico para que pilles fundamentos. Un ninyo de 8 anyos podria completar el curso.

Quiero ver codigo tuyo en github en una semana.

Learn Python - Free Interactive Python Tutorial
 
Atrás
Arriba Pie