TATA: Automatiser, Tester, Architecturer

Si au lieu de se concentrer sur les mauvais points distribués par thoughworks on regarde leurs recommandations on voit émerger un patern:

  • Automatiser
    • Continuous delivery: en lien avec devops, le boulot et terminé si et seulement si le code est en production
    • Infrastructure as code: c’est la révolution IAAS initié par Amazon EC2, poursuivie par les Chef et autre Puppet
    • DevOps: Mettre de l’agile entre les devs et les ops, à moins qu’avec les 2 points ci-dessus, ce soit que les devs vont enfin pouvoir se débarraser des ops?
    • Automated database deployment: voir flyway
  • Tester
    • Test Load Balancer: pour paralléliser les tests
    • Thoughtful caching : et oui le cache n’est pas une solution magique à tous les problèmes de perf.
    • Early performance tests : Je repéte: il n’y a pas de solution magique à appliquer à la fin du projet pour résoudre les problèmes de perf.
  • Architecturer
    • Evolutionary database: que les DBA nous laisse rajouter une colonne sans remplir un formulaire en 3 exemplaires.
    • Evolutionary architecture: A mort le big design up front.
    • Event API: pourquoi ce qui marche pour l’UI ne marcherait pas pour le backend ?
    • Event sourcing : L’idée est de conserver les logs transactionnels de la base pour l’audit, l’historique, le débuguage, à creuser…

Automatiser, Tester, Architecturer et recommencer je propose donc un acronyme récursif:

TATA: TATA Automatiser, Tester, Architecturer là maintenant vous pouvez vous mettre à coder.

ThoughtWorks Technology Radar 2011: the good parts

Le thoughtWorks Technology Radar 2011 a fait la une récemment en tapant maladroitement sur GWT:

GWT is a reasonable implementation of a poor architectural choice. GWT attempts to hide many of the details of the web as a platform by creating desktop metaphors in Java and generating JavaScript code to implement them. First, in many ways, JavaScript is more powerful and expressive than Java, so we suspect that the generation is going in the wrong direction. Secondly, it is impossible to hide a complex abstraction difference like that from event-driven desktop to stateless-web without leaky abstraction headaches eventually popping up. Third, it suffers from the same shortcomings of many elaborate frameworks, where building simple, aligned applications is quick and easy, building more sophisticated but not supported functionality is possible but difficult, and building the level of sophistication required by any non-trivial application becomes either impossible or so difficult it isn’t reasonable.

 

Mais il n’y a pas que GWT qui en prend pour son grade la base de données déguste elle aussi:

We often see problems caused by manual configuration of firewalls and load balancers, and especially by DBAs cutting and pasting SQL scripts to run against production databases

 

It is startling to us that we continue to find new systems in 2011 that implement significant business logic in stored procedures. Programming languages commonly used to implement stored procedures lack expressiveness, are difficult to test, and discourage clean modular design. You should only consider stored procedures executing within the database engine in exceptional circumstances, where there is a proven performance issue.

Ainsi que les portails java

 A continuing cause of delivery problems lies in the use of Java Portal Server packages. These problems occur in both open source and commercial portal platforms. The promised productivity of these platforms is hindered by their complex and unwieldy programming models and difficulty in automating deployment, data migration, and tests.

Concernant les portails on remarquera qu’en guise de portail Google avec Google + se contente d’une barre de navigation unifiée en haut de tous ses produits.

Ce ne serait pas Thoughworks s’ils n’ajoutaient pas un clou dans le cercueil de WS-*

Previously our advice has been to tread carefully when using the WS-* stack beyond the basic profile. Given the progress and acceptance of simpler web-as-platform techniques such as REST and OAuth and the known issues with the WS-*, it should only be used cautiously.

Dans le prochain billet on va regarder ce qu’ils mettent en avant

Des tweets et des plus n°2 – Post It war


Antepedia: search among  210 million files and 940,000 open source projects


The Git workflow:

  1. Create a private branch off a public branch.
  2. Regularly commit your work to this private branch.
  3. Once your code is perfect, clean up its history.
  4. Merge the cleaned-up branch back into the public branch.

Histoire de l’Internet et des télécoms: La France aurait pu inventer l’Internet… Mais Giscard (et ses conseillers) en ont décidé autrement


QUnit: QUnit is a powerful, easy-to-use, JavaScript test suite. Et oui J c’est pour Java 😉

De l’open source à l’open data

Alors que l’open source VS propriétaire est un sujet de troll débat qui n’en est plus un, que le débat desktop VS web est a été remplacé par mobile VS Web (quelle différence?). Le vrai sujet aujourd’hui c’est l’ouverture des données, la preuve avec deux petits acteurs qui communiquent, chacun à leur manière sur le sujet.

Microsoft :

tant que les interfaces d’accès au service(API), les protocoles et les standards pour le cloud sont ouverts alors le client n’a pas à se soucier du code sur lequel il repose.” 

 Google :

  1. Can I get my data out in an open, interoperable, portable format?
  2. How much is it going to cost to get my data out?
  3. How much of my time is it going to take to get my data out?

What we mean by open, interoperable and portable is that your data should be exported in a format that is:

  • Publicly documented and non-proprietary (i.e. it does not require a commercial license to use)
  • Easy for engineers to write a program that can import the data into another system
A vos APIs… Tiens l’occasion de relinker ma présentation Ressource Oriented Architecture (slide 57)

Des tweets et des plus n°1 – 20 millions


One Circle to rule them all, One Circle to find them,
One Circle to bring them all and in the Web bind them
Au moins dès que la croissance de google plus va s’affaisser on aura la réponse à une question cruciale: combien il y a t-il de geek  sur terre?


Programmation fonctionnelle: au coeur de ce paradigme se trouve la possibilité de passer des fonctions en paramètre d’autres fonctions.
D’ailleurs on appel “high order function” une fonction à laquelle on passe une autre fonction. On trouve des HOF en particulier sur les listes (tout est function ou list) les 3 principales sont:

  • reduce => d’une liste vers une seule valeur (trouve le max ou le min)
  • filter => d’une liste vers une autre (ne garder que les nombres pairs ou impairs)
  • map => transformer tous les éléments d’une liste (incrémenter toutes les valeurs)

On n’a pas besoin de boucle en PF le parcours d’une liste ce fait d’une manière recursive. Tout est fonction, liste, récursion.

Laziness: puisque tout est fonction, on ne les exécute que quand on en a réellement besoin.

Composition: Il est très facile de composer des fonctions entre elles.


Lisp: List Processing Originally specified in 1958 basé sur des fonctions récursives…  Mince rien de nouveau alors. Gros avantages du paradigme fonctionnel: il n’y a pas de variable, tout est immuable, si on veut changer une valeur il faut en créer une nouvelle. Ca réduit les risques de bugs et autres effets de bords. Les traitements sont facilement parallélisable.  Go de RAM pas cher, proc multi coeur… C’est peut-être pour ça le fonctionnel revient à la mode?


Prevalence: Un SGBDR ne sert qu’à une chose charger des données du disque vers mémoire de manière efficace. Si toutes vos données tiennent en mémoire vous n’en avez plus besoin. voir prevlayer en java


Pourquoi Google et Facebook sont-ils des concurrents: Si vous ne payez pas un service, c’est que vous n’êtes pas le client : vous êtes le produit vendu


Splunk Vous générez quelques Mo (marche aussi avec des Go) de logs par jour et ne savez pas quoi en faire? Essayez Splunk, c’est bluffant.