Sylvain DOIGNON

Technology enthusiast. Love to solve all kinds of problems.

You can find here some of my best projects I took part in during some of my jobs. In many of cases, I can't disclose the project name or details. Nevertheless, skills & technologies are exposed here.

WARNING: this page is completly outdated. I may update it at some point.

There are currently ? projects presented here with the following tags (click to filter): empty

Viewing the project with the tag :

Now
 May 2017

Virtual machines deployment automation

For Société Générale Bank & Trust.

Writing in progress, request for disclosure pending.

PowershellVMWareShell scriptsPXE

 More details

 April 2017

Centralized logging system

For Société Générale Bank & Trust.

Writing in progress, request for disclosure pending.

SyslogELKShell scriptsGrafanaInfluxDB

 More details

 June 2016 - April 2017

Automation with a Web App & API

For Société Générale.

On June 2016, I was welcomed by a functional specification describing the automation of accounts, groups and access management. I was designed to take care of everything: infrastructure choice, technologies used, etc.

The goal was to create an API to allow CRUD operations on Unix accounts, groups and machine access/authorization. Furthermore, an Web app had to be developped to facilitate the use of the API. I took a week to choose the ideal architecture: I had many choices. At the end, I retained a solution that obviously evolved a bit, but not too much!

Let's explain the project from the client perspective: first, you are welcomed by a login page on the web app. The authentification system use the entreprise OAuth SSO and deliver a JWT token. Now, that you're authenticated you're free to use the web app that's basically a website with many forms. On each page, as you type in input fields, the content is validated on the fly by the browser and displayed next to the field. This prevents users from submitting errors. To avoid duplicating the form/field validation system on the client and on the server, the client send its "incomplete" data to the server that returns a status. Thanks to this, the Web app can be kept as small as possible. The Javascript code for the client was wrote from scratch because it is basic and using React or Angular.js was overkill in my opinion. Obvisouly, I had to write my own small JS library, which was instructive.

Next, the API. Written in Node.js, it's probably the biggest app/program I ever wrote. First, express is used to handle requests. After that, ES6 classes (the API is written with cutting-edge JS: async/await, arrows functions, etc) are used to handle the request. The majority of those creates an LDAP request started by the native library ldap.js. Then the LDAP requests are added to a message broker that prevents the DDoS of the AD server. A lot of actions are available so this app had to be well organized and written. Additionally, an Swagger endpoint was created for documentation. As the code quality was important, I integrated a JS linter in the project that helped me write it consistently. Furthermore, some errors can be revealed thanks to the linter.

Speaking of infrastructure and redundancy, let's explain it bottom-up. The Web app and the API are hosted in a Docker container. Thanks to a Docker Swarm cluster, multiple API instances are created and are load-balanced/managed by a local reverse-proxy Nginx instance. Finally, a fontal TCP load-balancer distribute the request over two physical site with the infrastructure described above.

This project was amazingly instructive. My Node.js skills skyrocketed. Moreover, I enjoyed the responsibility of tooking care of everything in this project thanks to the trust of my superiors: code, hardware choices, security, deployment, etc.

To my pleasure, since February 2017, this project is in production.

Node.jsJSESLintBootstrapOAuthJWTLdapADDockerNginxLoad BalancerInfrastructureELKAPISwagger

 More details

 May 2016 - June 2016

VM as a service

For Société Générale.

I love to tweak everything for my computer setup. Unfortunately, in a big company some tools are mandatory. For my workflow, I dislike working on Windows as no great window managers are available and no terminals are great.

My stubborness decided to fix the problem one day. If having Windows on your comporate laptop is mandatory, nothing stops you from booting a Linux VM on it. For my own usage, I decided to revive an old project where this was possible thanks to VirtualBox. The original code was a bit messy so I cleaned it up and organized the code in such way that it was modular.

Few days later, as I discussed about this with my coworkers, they seemed interested too! That's how I decided to automate the creation of this Linux VM and make it usable for a new user as fast as possible. Some days later, the only thing you had to do was to install VirtualBox and launch a Powershell script that took care of everything: download my prepacked OVA (with corporate settings), deploy it locally and post-install it with the settings entered by the user. Then, it worked out of the box at the first boot.

Months pass by and one day I got a call from the internal Docker Team. For some reason not described here, they needed to offer to many developpers an Docker environment ASAP. With the standard proccess, they would have waited for weeks before they get anything. They wondered if I could add an Docker environment in those VMs and were very pleased to discover 24 hours later that... it was done & ready.

Since then, I improved this solution a lot. For example, a main monitoring server is used to supervise all (numerous!) installations and take care of updates and other security concerns for the VMs.

I love this project, because what stated as a initiative became a well used application unexpectedly!

DockerVirtualBoxPowershellShell scriptsPHPSQlite

 More details

 June 2015 - February 2016

Web portal & Shell Scripts

For Société Générale.

This project was for myself, the first time I worked in a team.

In fact, a team of two was set up some months earlier to build an API. They chose Python with the great Django REST Framework and began to create it. My role here was to develop a practical frontend to this API. In this way, I created a PHP website with some JS goodness with an authentification system, multiple roles, etc. Form submissions called shell scripts that called the API and performed other actions too.

This project was nice thanks to the team facet. I joined a team of two and after some months introduced a new coworker to this project. It was both rewarding and very instructive to work with such a thorough team.

PHPBootstrapShell scriptsJSAPITCL

 More details

 May 2014 - June 2014

WYSIWYG Website builder

For Gironde Numérique.

During this great internship, I learned the fundamental sysadmin tools that I mixed it with my Web experience.

My mission was to develop an centralized website manager for regional cities internal websites. Thanks to this Website builder, creating a custom website was only made through an easy drag'n drop experience. Batch updating the websites was also made simple with this tool.

Creating it by the side of an experienced sysadmin was enlightning and confirmed my interests in both back & front ends.

PHPBootstrapShell scriptsJS

 More details