“We don’t have time to refactor.”

“Our managers won’t let us implement automated tests!”

“This app is really old. No one knows how it works since Peter left the company 3 years ago, and people are scared to make changes to it.”

“This piece of software is buggy. We know it, but don’t have time to invest in it. So we just have a manual process to work around the bug when it happens.”

“Nope. I’m not working on that crappy piece of sh*t.”

It’s safe to say that every software engineer has heard one or more of these examples during his or her career. And most probably has already pronounced something approaching. We know we have. …


Back in early 2016, we decided here at Younited to transition to a microservice architecture. We have learned a great deal since. And one thing we learned is how to substitute a microservice by a new one without downtime, and without requiring to update all callers at the same time.

Image for post
Image for post

A bit of context

You have a piece of software that provides a service to other parts of a larger system. For instance, a service that tells you if a customer on your website is a returning customer. This piece of software can be a feature of an existing monolith or a stand-alone component. Whatever. And this component is coming up to the end of its life, for any reason, be it technical or functional. …


Laissez moi vous narrer une histoire palpitante, captivante et tout un tas d’autres adjectifs en -ante. C’est l’histoire du développement de Youniversalis, notre outil d’auto-documentation de notre système d’information composé de microservices.

Younited Credit a beau avoir commencé son activité à peine en 2011, on a tout de même réussi à créer très très rapidement un monolithe. Celui-ci, dans un contexte d’hypercroissance, a rapidement donné des signes de fatigue; puis a commencé à s’écrouler sous son propre poids. Pour faire simple, nous avions un gros front office, un gros back office et une multitude de batchs. …


Image for post
Image for post

C’est tout bête, mais ça peut servir : on peut en 3 clics générer des classes C# depuis un morceau de Json directement dans Visual Studio :

Edit > Paste Special > Paste Json as classes


Image for post
Image for post

Ce 23/01/2018 avait lieu la date parisienne du Red Shirt Dev Tour. « Red Shirt ? » me demanderez-vous — à raison. Le nom de cette tournée mondiale de conférences est en hommage à l’emblématique polo rouge particulièrement affectionné par le speaker principal, Scott Guthrie.

Ce dernier est aujourd’hui Executive Vice President of the Cloud and Enterprise group chez Microsoft. On le voit très régulièrement en keynote speaker dans un nombre assez impressionnant de conférences. Il est le patron de Microsoft Azure et est accessoirement un excellent développeur. La légende veut d’ailleurs qu’il ait écrit le socle technique d’ASP.NET Webforms en un week-end. …


Comme tout le monde, j’ai parfois envie de me frapper. Pas méchamment. Pas trop violemment non plus. Mais j’ai parfois envie de me frapper. Le plus souvent le front avec ma paume. Un peu comme ce bon vieux Capitaine Picard.

Image for post
Image for post

Parfois, c’est parce que j’ai (re)fait une erreur. Mais c’est souvent quand on me fait me rendre compte de quelque chose où — a posteriori — je me dis que j’aurais dû le voir tout seul. « BON SANG, MAIS C’EST BIEN SÛR ! »

Dans le cas qui nous intéresse, c’est une conférence qui m’a aidé à ouvrir les yeux sur un sujet que j’entrevoyais sans le voir dans sa globalité. …


Il y a quelques mois, Microsoft a exposé la première mouture de son implémentation de WebAssembly (wasm pour les intimes) en early preview (très) expérimentale : Blazor. Dans le jargon moderne, une preview expérimentale c’est une version alpha. C’est un peu comme si le petit lapin de la RATP te sussurait de ne pas mettre tes doigts trop près de la porte, car oui, tu peux te faire pincer très fort. Pas de Blazor en production, donc. En tout cas, pas encore. Ceci étant dit, voyons voir comment tout ça fonctionne.

WebAssembly

La genèse de WebAssembly est née des limites de Javascript. Les mauvaises langues diront qu’on aura beau compenser artificiellement des défauts structurels de Javascript avec de l’outillage, des moteurs JS sur-optimisés, des sur-ensembles et des grosses machines, la fuite en avant a ses limites. Mais l’idée est là. Javascript est né pour faire clignoter des balises dans Netscape, pas pour faire tourner des applications extrêmement complexes. C’est pourtant ce qu’on fait aujourd’hui tant bien que mal. …

About

Nicholas Suter

Chief architect @younited

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store