Trucs et astuces DevOps, vu du côté Ops

Après avoir travaillé plus d’une année sur la partie production / infrastructure d’un projet en mode DevOps, voici, en anglais, les quelques règles qui nous semblent primordiales afin de garantir le succés de l’expérience. La suite est ici.

Métro Boulot Dodo

Signal sonore de fermeture des portes

- Ah salut ! Tu prends la ligne 7 toi aussi ? Alors c’est pour bientôt la mise en prod’ ?
- M’en parle pas, c’est dans 10 jours.
- Dis donc je vois passer une tonne de mails sur le projet..
- Oui, on n’a pas accès au bug tracker du client donc il nous envoie les bug reports par mail.
- Mince, ça en fait un paquet!
- Tout est relatif. Il y a surtout des demandes d’évolutions. Heureusement, Hubert monte au créneau pour renégocier ça avec le client.
(Lire la suite…)

Et si nous définissions l’Internet des objets ?

Le concept

L’Internet des objets repose sur l’idée que tous les objets seront connectés un jour à Internet et seront donc capables d’émettre de l’information et éventuellement de recevoir des commandes. On parle aussi d’ “ubiquitous computing”, c’est à dire informatique omniprésente, ambiante, ou pervasive. Ce nouveau paradigme informatique est basé non plus sur le PC, mais sur des objets quotidiens intégrant des capteurs et des capacités de communication.
L’internet des objets propose de créer une continuité entre le monde réel et le monde numérique : il donne une existence aux objets physiques dans le monde numérique.

(Lire la suite…)

Comment ne plus avoir de NullPointerException en Java ?

NullPointerException : l’erreur la plus courante dans un programme Java. On est tous à un moment ou à un autre tombé sur cette exception. Malheureusement, ce n’est qu’en production à 4h du matin qu’elle arrive. On corrige donc le bug suivant :

MonObjet monObjet = null;
…
monObjet.maMethode(); // => NullPointerException

Par un rapide :

if(monObjet != null) {
  monObjet.maMethode();
}

Ce correctif est tout à fait honorable, mais pourquoi ne pas essayer de ne plus avoir aucune exception de ce type ?

Il existe plusieurs méthodes validées par le compilateur pour l’éviter, et donc avant la mise en production. Aucune n’est nouvelle, certaines controversés, mais elles sont toutes étudiées dans la suite de cet article.

(Lire la suite…)

Quelques niouses (en) Ruby du mois de Juillet

C’est quoi cet article ? Facile ! Un résumé de l’actualité autour de Ruby du mois passé, pour les techos et les geeks pressés. Retrouvez moi sur ce blog pour des infos de techos à techos.

Pour les plus pressés, une seule chose à retenir pour cette brève : Ruby 1.8 et Ruby 1.9 ont été mis à jour, pensez à upgrader.

(Lire la suite…)

Quelques niouses (en) Ruby du mois de Juin

C’est quoi cet article ? Facile ! Un résumé de l’actualité autour de Ruby du mois passé, pour les techos et les geeks pressés. Retrouvez moi sur ce blog pour des infos de techos à techos.

Pour les plus pressés, une seule chose à retenir pour cette brève : Mettez à jour vos Rails 2.3 et 3.0.

(Lire la suite…)

La programmation haute performance n’est-elle réservée qu’à une élite de développeurs C++ ?

Récemment un papier d’étude de Google UK a été publié sur la performance des langages de programmation JAVA, Scala, C++ et Go (Loop Recognition in C++/Java/Go/Scala). Dans ce papier, les performances des langages sont comparées sur la base d’un algorithme de recherche de boucles dans un graphe (Algorithme de Tarjan).

Principalement basé sur la performance d’exécution d’instructions séquentielles (boucles), la gestion de la mémoire, le temps de compilation et le nombre de lignes de code écrites cette étude montre que pour arriver à des hautes performances en C++ les optimisations techniques (au niveau du langage) deviennent trop compliquées pour le résultat produit. Comme le dit Robert Hundt :

 

We find that in regards to performance, C++ wins out by
a large margin. However, it also required the most extensive
tuning efforts, many of which were done at a level of sophistication
that would not be available to the average programmer.

Cependant, cet article a été critiqué sur son use-case peu pertinent et sur la validité des résultats. Quand même, C++ est le ++ fort ! Bien qu’il ait été maladroit, ce cher Robert a soulevé un point très intéressant : la programmation haute performance n’est-elle réservée qu’à une élite de développeur C++ ? Le développeur moyen peut-il espérer développer des applications haute performance ?

(Lire la suite…)

L’open space m’a sauvé

Un responsable de département d’étude avait fait venir un consultant afin d’identifier les obstacles à une meilleure productivité pour son nouveau projet développé en agile. Après quelques échanges à la machine à café, il lui proposa : “le mieux est que je vous accompagne pour faire le tour des bureaux. Vous verrez qu’il y a sacrément du monde sur le projet Neutrino !”
(Lire la suite…)

A la recherche de nouveaux vaccins

Il y a peu, je participais à une réunion de travail impliquant une trentaine de personnes et j’ai fait une observation qui m’a intrigué. Avez-vous remarqué ce qui se produit lorsqu’un téléphone portable sonne au cours d’une réunion ?

  • La personne propriétaire du portable l’éteint rapidement
  • Tous ceux qui ne l’avaient pas encore fait vérifient leur portable et activent discrètement le mode silence.

Voilà un exemple de mesure préventive particulièrement efficace! Dans les entreprises où l’on respecte un certain standard de réunion, l’exception que constitue la sonnerie d’un portable ne se produit qu’une seule fois, pas deux. La première “infraction” protège le groupe de toute nouvelle occurrence. Elle agit en quelque sorte comme un “vaccin” sur le fonctionnement du groupe en réunion.

Quelles conditions faut-il réunir afin de créer d’autre vaccins de ce type au sein d’une équipe ? (Lire la suite…)

Rails += Tests

Si vous avez déjà créé une application Ruby on Rails, vous avez déjà dû voir un étrange répertoire : tests.

N’ayez pas peur, tout a été fait pour faciliter la mise en place de tests de bout en bout avec Rails.

Je vais donc vous donner les méthodes que j’apprécie et que je considère efficaces pour l’écriture de tests en Rails. Que vous soyez novices ou expert, j’espère pouvoir vous en apprendre un peu.

Tous les exemples donnés seront pour Rails 3, mais ils sont pratiquement tous compatible Rails 2.

Le code source des exemples est disponible sur ce github.

(Lire la suite…)