Best Practices pour utiliser les pipelines avec Jenkins 2.0
La gestion des environnements ante-prod est source de coût, de perte de temps et de risques liés aux différences entre les environnements.
L'auteur propose de supprimer tous les environnements anteprod:
- les développeurs dev en local, et on déploie direct en prod avec des feature flags
- les nouvelles features sont activées uniquement pour la qa qui se fait donc sur la prod
- et quand c'est go on active pour tout le monde
Les feedbacks sont ici:
https://dzone.com/articles/staging-servers-are-dead
Playbook pour tester des plays ansible dans un container Docker:
ansible-playbook main.yml --extra-vars '{"tasks":["./task_file1.yml","./task_file2.yml","other_var":"value"]}'
Pour activer l'authentification Two-Factor sur un serveur Debian:
$ apt-get install libpam-google-authenticator
$ echo "auth [success=done new_authtok_reqd=done default=die] pam_google_authenticator.so nullok" >> /etc/pam.d/sshd
$ echo "ChallengeResponseAuthentication yes" >> /etc/ssh/sshd_config
$ echo "AuthenticationMethods publickey,keyboard-interactive" >> /etc /ssh/sshd_config
$ apt-get install ntp
$ service ssh restart
$ google-authenticator -l 'username@servername'
ATTENTION:
auth [success=done new_authtok_reqd=done default=die] pam_google_authenticator.so nullok
doit être placé au tout début de /etc/pam.d/sshd- Si
AuthenticationMethods publickey,keyboard-interactive"
n'est pas ajouté, il est possible de se connecter au serveur avec le pin uniquement. Cette ligne nécessite d'avoir la clé privée et le pin. - L'installation de NTP est importante pour avoir a même heure sur le client et le serveur.
EDIT:
Playbook Ansible: twofactorssh.yml
Pour analyser le contenu d'un thread dump
Pour générer un thread dump:
jstack -l <JVM_PID>
Ce guide explique le fonctionnement interne de la JVM et des différents Garbage Collectors et donne des piste de troubleshooting et de profiling avec VisualVM et autres outils d'analyse de dump.
pour gérer des serveurs avec ansible en passant par un bastion SSH:
- Créer le fichier
ansible.cfg
[ssh_connection] ssh_args = -F ssh.cfg control_path = ~/.ssh/mux-%r@%h:%p
- Créer le fichier ssh.cfg:
# Connexion directe avec le bastion. # Pensez à adapter le User et le IdentityFile selon vos besoins. Host bastion Hostname 84.39.41.33 User admin IdentityFile /home/you/.ssh/your_key.pem # Pour toutes les machines de la zone privée : # Vous pouvez renseigner un range d’IPs ou une zone dns, exemple: # *.eu-west-1.compute.amazonaws.com Host 192.168.47.* # Proxifier la connexion au travers du bastion. ProxyCommand ssh -F ssh.cfg -W %h:%p bastion # A adapter à votre cas : le User et la clé pour les connexions aux machines privées. User admin IdentityFile /home/you/.ssh/your_key.pem # Directives de multiplexing SSH Host * ControlMaster auto ControlPath ~/.ssh/mux-%r@%h:%p ControlPersist 15m
2 astuces pour accélerer et simplifier les connexions SSH à travers un bastion:
- Utiliser
ControlMaster
pour que toutes les connexions SSH au bastion passent par la même connexion TCPcat << EOF >> ~/.ssh/config ControlMaster auto ControlPath ~/.ssh/ssh_control_%h_%p_%r EOF
- Utiliser ProxyCommand pour se connecter aux serveurs à travers le bastion:
# Use the bastion to connect to internal resources Host *.internal.example.com ProxyCommand ssh bastion nc %h %p
Pour gérer les releases Maven avec du Continuous Delivery, l'article propose de préparer la release à chaque build mais de pusher les tags uniquement si la pipeline de test est OK:
1. Do a local checkout in a detached head
2. Use the Maven release plugin to prepare a release with pushChanges=false (we are not going to push the release commits back to master) and preparationGoals=initialize (we don't care if the tag is bad as we will only push tags that are good)
3. Run your stages release through your test pipeline
4. When you are ready to push to production (or if you prefer when ready to push to testing) you push the tag and release the staging repository
7481 mixtapes de rap US en free download sur archives.org
Avec Java8, la PermGen est remplacée par la Metaspace.
Alors que l'espace occupé par la PermGen faisait partie de la Heap (memoire allouée à la JVM avec les parametres -Xms et -Xmx), la Metaspace fait partie de l'espace mémoire du process (en dehors de la Heap).
Avant de mettre en production, il faut limiter la taille max de la Metaspace avec -XX:MetaspaceSize.
Lors d'une migration depuis Java7, il peut être nécessaire de réduire la Heap comme la Metaspace sera en dehors de la Heap
Système ingénieux pour porter son enfant sur ses épaules tout en ayant les mains libres
A performance budget is just what it sounds like: you set a “budget” on your page and do not allow the page to exceed that. This may be a specific load time, but it is usually an easier conversation to have when you break the budget down into the number of requests or size of the page.
(...)
Once those goals are set, you stick to them. Anytime you want to add something to a page, you need to ensure it stays within budget. Steve Souders talked about the three options you have if something does not fit within the budget:
- Optimize an existing feature or asset on the page.
- Remove an existing feature or asset from the page.
- Don’t add the new feature or asset.
Le budget performance correspond à la valeur max autorisée pour une métrique de performance (temps de chargement, nombre de requêtes ou poids de la page). On peut ensuite tester le "budget" au cours de l'intégration continue avec un outils comme SiteSpeed.io et remonter une alerte en cas de dépassement.
Les métriques à mesurer pendant un test de performance:
- Errors over load (“results valid?”)
- Bandwidth throughput over load (“system bottleneck?”)
- Response time over load (“how does system scale?”)
- Business process end-to-end
- Page level (min-avg-max-SD-90th percentile)
- System resources (“how’s the infrastructure capacity?”)
- Server cpu over load
- JVM heap memory/GC
- DB lock contention, I/O Latency
Pour analyser la performance d'un site web. Pas mal de fonctionnalités intéressantes:
- Dashboard Graphite/Grafana (procédure avec Docker incluse)
- Check Performance Budget
- Intégration WebPageTest et Google PageSpeed Insights
- Intégration CI avec Jenkins & Travis
Description des Headers HTTP utilisés pour mettre en cache du contenu
Paramètres JVM pour loguer l'activité du Garbage Collector dans un fichier:
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:<file-path>
Plus de 400 services proposants des plans gratuits.
Au menu:
- Source Code Repos
- Collaboration Tools for Teams
- Code Quality
- Open Source
- Code Search and Browsing
- CI / CD
- Automated Browser Testing
- Security and KPI
- Management System
- Log Management
- Translation Management
- Monitoring
- Crash and Exception Handling
- Search
- CDN and Protection
- PaaS
- BaaS
- Web Hosting
- DNS
- IaaS
- DBaaS
- Stun, WebRTC, Web Socket Servers, and Other Routers
- Issue Tracking and Project Management
- Storage and Media Processing
- Design and UI
- Data Visualization and Maps
- Package Build System
- IDE and Code Editing
- Analytics, Events, and Statistics
- International Mobile Number Verification API and SDK
- Payment / Billing Verification
- Docker Related
- Vagrant Related
- Miscellaneous
- APIs, Data, and Machine Learning
- Other Free Resources
Optimisation et Troubleshooting de JVM pour Java mises à jour pour Java8