Cloud

Archi & techno

Asynchronous data exchanges, découpler avec classe – partie 1

Déporter des traitements lourds, transférer des logs, gérer des pics de charges, architecture réactive… Il existe de nombreux cas d’utilisation du design pattern Asynchronous data exchanges qui permet de gérer la communication de message en mode asynchrone.

De nos jours, plein de solutions existent pour l’implémenter :

  • Utilisation de méthode intégrée aux langages :
    • Futures en Java
    • Actors et Futures en Scala
    • Delegate en .Net
  • Utilisation d’outil comme Netty
  • Utilisation de serveur de message ou MOM (Message Oriented Middleware)
  • Etc.

Dans cette série d’articles, nous allons regarder l’utilisation d’un MOM.

Pour cela nous allons voir très rapidement la théorie, les points d’attention et finir avec des cas d’utilisations dans le deuxième article.

Lire la suite

Archi & techno

Circuit breaker, un pattern pour fiabiliser vos systèmes distribués (ou microservices) : partie 4

Nous voilà à la fin de cette série d’articles (disponibles ici, ici et ici) sur le circuit breaker.

Comment fais je pour le superviser en production ?

Notre application a passé tous les tests et il est temps de passer en production.

Si l’on reste sur Hystrix, il existe beaucoup de métriques.

La liste est disponible sur le site officiel.

Une des difficultés d’une bonne supervision est de réussir à obtenir des tableaux de bord où avec un simple coup d’oeil on peut obtenir le maximum d’information.

La première étape est de choisir les bonnes métriques.

Notre sélection est :

  • État du circuit breaker (ouvert, semi-ouvert ou fermé),
  • Ressenti utilisateur (pages en erreur ou non)
  • État du service appelé

Avec ces trois métriques, nous connaissons l’état de l’application rapidement.

Lire la suite

Archi & techno

Circuit breaker, un pattern pour fiabiliser vos systèmes distribués (ou microservices) : partie 3

Maintenant que nous avons vu la théorie sur les précédents articles disponibles ici et ici, penchons-nous sur la pratique.

Comment l’implémenter ?

Plusieurs solutions sont possibles pour l’implémenter.
Par exemple en Java il existe des librairies qui le font pour nous comme :

Focalisons-nous sur Netflix Hystrix.

Lire la suite

Archi & techno

Circuit breaker, un pattern pour fiabiliser vos systèmes distribués (ou microservices) : partie 2

Lors de l’article précédant, nous avons vu quelques solutions possible pour résoudre la gestion des dépendances (externe ou interne) qui peuvent (et le seront tôt ou tard) défaillantes lors de l’exécution de notre application.

Regardons d’un peu plus près le design pattern circuit breaker.

Une solution possible : le design pattern circuit breaker ?

Le circuit breaker permet de contrôler la collaboration entre différents services afin d’offrir une grande tolérance à la latence et à l’échec.

Pour cela, en fonction d’un certain nombre de critères d’erreur (timeout, nombre d’erreurs, élément dans la réponse), ce pattern permet de désactiver l’envoi de requêtes au service appelé et de renvoyer plus rapidement une réponse alternative de repli (fallback), aussi appelé graceful degradation.

 

 

Design pattern : circuit breaker

Lire la suite

Archi & techno

Circuit breaker, un pattern pour fiabiliser vos systèmes distribués (ou microservices) : partie 1

L’évolution des besoins (réductions des coûts et du time to market, concept d’ATAWAD (AnyTime, AnyWhere, AnyDevice)…) a mis en avant certaines architectures (architecture  applicative cloud ready, architecture microservices, architecture distribuée…).

Cela a engendré de nouvelles problématiques, en particulier l’augmentation du nombre de dépendances et donc potentiellement soumise au réseau.

C’est à ce moment qu’apparaissent à nouveau les “Illusions de l’informatique distribuée” :

  • Le réseau est fiable.
  • Le temps de latence est nul.
  • La bande passante est infinie.
  • Le réseau est sûr.
  • La topologie du réseau ne change pas.
  • Il y a un et un seul administrateur réseau.
  • Le coût de transport est nul.
  • Le réseau est homogène.

Et ces illusions ne prennent pas en compte la partie dépendance et leurs lots de problèmes (crash, temps de réponse lent, réponse non conforme…).

Pour répondre à ces défis, la philosophie de design for failure (les traitements applicatifs doivent, dès leur conception, prévoir le cas où les composants qu’ils appellent pourraient tomber en erreur) a pris encore plus d’importance.

Et donc nous somme passé de « prévenir toutes les défaillances » à « les défaillances font partie du jeu ».

Parmi toutes les solutions composant le design for failure, nous allons nous pencher sur le design pattern “Circuit Breaker” popularisé par Michael Nygard dans le livre “Release It!”.

Mais avant cela, faisons un tour rapide sur d’autres solutions permettant de gérer des problèmes de dépendances.

Lire la suite

Archi & techno

Concevoir pour le Cloud avec notre dernier livre blanc Cloud Ready Applications

5 enjeux fondateurs pour tirer parti du Cloud

#AWSSummit Werner Vogels : In reality there is always an unexpected event

couverture-readyapp-why

La conception logicielle est depuis 18 ans l’un de nos cœurs de métier.  Aujourd’hui il n’échappe à personne que la révolution du cloud s’accélère :  vos applications arrivent massivement chez Amazon Web Service (AWS) et sur le cloud en général. Mais sont-elles prêtes? Prêtes à fonctionner avec de l’auto-scaling ? À utiliser des services comme ElastiCache ou SNS ?

Lire la suite

Archi & techno

Cloud Ready Applications

Les jours des serveurs traditionnels sont comptés. La flexibilité des plateformes de cloud est en train d’avoir raison des datacenters traditionnels. En tant que développeur, la question n’est plus « où mon application sera-t-elle déployée ? » mais « sur quelle plateforme de cloud ? ». Et concevoir une application pour le cloud est plus complexe que dans un datacenter classique. En tant que développeurs nous devons être prêts, nous devons désormais écrire du code qui est prêt pour le cloud. Mais, qu’est-ce que cela signifie exactement? N’est-ce pas simplement un simple clic pour déployer sur Heroku ? Oui, le cloud peut rendre la vie des développeurs plus facile. Mais, de façon à en tirer tous les bénéfices, vous devez concevoir en tenant compte de ses spécificités. Et cet article en anglais vous expliquera pourquoi et comment à travers 3 étapes marquantes du passage d’une architecture traditionnelle à une architecture pour le monde du cloud.

Pour aller plus loin, notre nouveau livre blanc sur le sujet vient de sortir :

TELECHARGER LE LIVRE BLANC

 

Archi & techno

Devoxx France 2016 – Compte Rendu

Encore cette année, Octo a participé à Devoxx France 2016 en tant que speaker et visiteur.

Devoxx est une conférence qui parle de Java, BigData, DevOps, IoT, Mobile, Performance…  sous divers formats de conférences (keynote, university, quickie, tools-in-action, hands-on-lab).

Tous ces thématiques et formats contribuent à la richesse de l’événement.

Vous trouverez dans cet article un tour d’horizon des conférences que nous avons pu suivre et aimer.

Cette sélection vous permettra, je l’espère, de faire un choix sur les nombreuses heures de vidéos disponible sur la chaîne YouTube de Devoxx France.

 

Lire la suite

Infrastructure et opérations

Nous étions à la KubeCon Europe (1/2)

The Kubernetes Community conference

Nous y voyons plus clair, Kubernetes est pour le moment la solution de Container as a Service que nous recommandons. Nous l’avons déjà déployé en production, packagé avec Openshift Origin pour proposer une Platform as a Service du meilleur effet. C’est fort de notre expérience que nous avons voulu voir ce qui se fait ailleurs, dans le monde des containers. Et quoi de mieux que la Kubecon Europe pour satisfaire notre soif d’apprentissage…

La Kubecon Europe a eu lieu cette année à Londres et s’est déroulée les 10 et 11 mars 2016.

C’est l’occasion de découvrir :

  • La vision et les nouveautés de Kubernetes 1.2 et 1.3
  • L’ensemble des solutions gravitant autour de l’écosystème Kubernetes
  • Les retours d’expériences et différents cas d’usages

Les grands thèmes abordés lors de cet événement ont été nombreux, nous avons pris le parti de nous concentrer sur deux sujets :

  • La Roadmap et la vision de Kubernetes
  • Kubernetes en production (qui fera l’objet d’un second article)

Dans cet article, nous traiterons le premier point sur la vision et les nouveautés de Kubernetes qui nous ont été présentées. Il s’adresse aux amateurs confirmés de Kubernetes.

Lire la suite