Une comparaison des approches fournies par Spring Cloud / Netflix OSS et Kubernetes pour résoudre les problématiques des architectures microservices.
Un simulateur permettant de tester différentes propositions de financement pour le revenue de base.
CodeTriage permet de sélectionner un projet OpenSource auxquels on souhaite contribuer sur GitHub et de recevoir par mail des Issues à corriger sur ces repos.
Plus besoin de recréer une instance ec2 pour lui attribuer un rôle IAM.
Pour automatiser la sauvegarde de volumes Docker sur S3 avec Duplicity:
docker run -v /var/run/docker.sock:/var/run/docker.sock:ro --rm -ti \
-e CONPLICITY_FULL_IF_OLDER_THAN="90D" \
-e CONPLICITY_REMOVE_OLDER_THAN="365D" \
-e CONPLICITY_TARGET_URL=s3://s3-eu-west-1.amazonaws.com/<s3-bucket>/<directory> \
-e AWS_ACCESS_KEY_ID=XXXXXXXXXX \
-e AWS_SECRET_ACCESS_KEY=XXXXXXXXXX \
camptocamp/conplicity
Des nouvelles listes de mots créées par l'EFF pour remplacer la liste Diceware (cf https://julien.mailleret.fr/links/?eepA7w)
La gestion des datas dans une architecture microservices.
Ça parle de DDD, eventual consistency, CQRS, ...
C'est clairement orienté dev mais permet également d'introduire rapidement ses concepts à ceux qui y sont moins familiers.
Une autre comparaison de Kubernetes et SpringCloud pour une archi microservice
Une excellente explication du GELF driver Docker qui permet de centraliser les logs des containers dans un ELK, Graylog ou autre solution de centralisation de log du même type.
Un webhook listener en Python avec Flask pour exécuter des actions automatiquement après un push git sur GitHub ou BitBucket:
import os
from sys import platform as _platform
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def tracking():
data = request.get_json()
commit_author = data['actor']['username']
commit_hash = data['push']['changes'][0]['old']['target']['hash'][:7]
commit_url = data['push']['changes'][0]['old']['target']['links']['html']['href']
print 'Webhook received! %s committed %s: %s' % (commit_author, commit_hash, commit_url)
return 'OK'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
Une description plus détaillé de la métrique Memory Pressure.
Le Memory Pressure est une des principales métriques pour vérifier le sizing de son cluster ES sur Elastic Cloud.
- Tant que la Memory Pressure est en dessous de 75%, le cluster est bien dimensionnée au niveau mémoire.
- Entre 75% et 85%, le cluster va consommer de plus en plus de CPU pour faire des GC. Tant que les perfs et la conso CPU sont acceptables, pas de soucis, le cas échéant il faut upgrader le cluster.
- Au dessus de 85%, Le temps passé à faire des GC et le risque d'OOM sera trop important. Il faut absolument upgrader le cluster.
Pour aller plus loin: Understanding the Memory Pressure Indicator
Description des métriques de performance pour Elastic Cloud (la solution SAAS Elastic Search officielle)
Pour passer un Host Header au niveau du healthcheck d'un backend HAproxy, il est possible de parametrer le header dans la version HTTP utilisé par le check.
C'est utile quand on souhaite mettre un apache avec plusieurs vhosts derrière le HAproxy.
<version> is the optional HTTP version string. It defaults to "HTTP/1.0"
but some servers might behave incorrectly in HTTP 1.0, so turning
it to HTTP/1.1 may sometimes help. Note that the Host field is
mandatory in HTTP/1.1, and as a trick, it is possible to pass it
after "\r\n" following the version string.
option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www.example.com
Quand on gère un HAproxy avec beaucoup de backends, il est possible d'utiliser un fichier de map pour sélectionner vers quel backend router chaque appel. Cette configuration simplifie énormément la configuration par rapport aux acls.
Une série d'article présentant les bases d'une archi microservices utilisant les outils de SpringCloud (Eureka, Zuul & Hystrix)
DNS de FDN pour remplacer les DNS du FAI ou de Google:
ns0.fdn.fr : 80.67.169.12 ou 2001:910:800::12
ns1.fdn.fr : 80.67.169.40 ou 2001:910:800::40
Procédure pour booter son Raspberry Pi sur un disque USB
A chaque fois j'oublie comment configurer le Wifi sur mon Raspberry Pi:
$ cat << EOF > /etc/wpa_supplicant/wpa_supplicant.conf
country=FR
ctrl_interface=dir=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="MY_WIFI_NETWORK"
psk="My_Password!"
}
EOF
$ sudo ifdown iwlan0 && sudo ifup iwlan
xdg-open
permet d'ouvrir un fichier avec son application par défaut depuis le terminal.
Exemples:
- files pour un répertoire
- evince pour un pdf
- gedit pour un fichier texte
- firefox pour une url
- ...
Un framework de test unitaire pour les scripts bash