Website - Maitrise Orthopédique

Views: 68

What is Maitrise-Orthopédique?

Maitrise Orthopédique is a monthly magazine (available in print and digital format) for orthopedic surgeons. It enables surgeons to keep abreast of the latest news (techniques, methods...) concerning their profession. Videos are also available (of congresses, operations, etc.).

When did I start working on the Maitrise-Orthopedique website?

I'm not the original developer of Maitrise-Orthopedique, I started working on this project in September 2017, there were specifications on what needed to be changed on the site.

What work was carried out on the site?

An update of the technical base.

The version I took over was running PHP 5.1, a version that was becoming obsolete and no longer maintained, so I had to migrate PHP to a version that would last in the long term, namely PHP 7.*, I had to go into the code to modify all the parts that used functions that had been removed or modified in depth in PHP, a job that took time to ensure the site's longevity.

A search engine.

The site used "MYSQL" for searching, but MYSQL is a relational database system, not a database system.MYSQL is a relational database system, not an indexed database system, so it was not designed for searching. In the case of Maitrise-Orthopédique, my choice fell on Algolia, a SAAS "Software as a service" search engine."This means excellent search performance without the hassle of maintaining an indexing server cluster (such as Elasticsearch).

Moteur de recherche - Maitrise Orthopédique

A recurring payment system.

At the time, the credit card payment system didn't allow for recurring payment, but Maitrise-Orthopédique's customers wanted such a system, so they wouldn't miss an issue (the journal is also sent out in paper format, so if a customer isn'tI used Stripe and their subscription systems to set up a subscription system with automatic renewal, which the customer can of course cancel at any time.

A well-formatted routing file.

I'm not talking about computerized routing here, but postal routing, as the site has a function for outputting a CSV with subscribers' addresses, to be transmitted to the postal router for correct delivery of newspapers to subscribers. The Symfony team's "Serialisation" component is perfectly suited to this task.

A promotion system

Like all businesses, Maitrise-Orthopedique runs special offers on the occasion of certain events, so we need to offer a discount on payment and highlight the special offer on the site via responsive banners, a "régiAn internal advertising system was therefore developed, as well as a system for reducing the price of the first year's subscription.

A fault-tolerant infrastructure.

It's a fact that hardware can break down, hard disks can become inoperative, a power cut can occur, and so on.
At the end of 2017, OVH had a major network failure that put the site offline for a long time, so I started thinking about a solution to this problem.
In order to maintain 100% uptime, an infrastructure using several servers was set up.This cluster is connected via a VPN (virtual private network) so that the servers can be located in different data centers and at different hosting providers in complete security.
For the Web part, the problem was that the project's basic code (CodeIgniter) required requests to always be sent to the same server to maintain the session ("statefull" requests).session data was stored on disk (as is the case with most PHP applications), so we had to modify the session-saving method of saving the session so that it would be independent of the web server responding to the request.This was the easiest thing to do, as the "Galera" cluster was already fully operational.
Finally, the front-end that redistributes requests to the various web servers is none other than Cloudflare, having worked with their services for years before I knew it would do the job perfectly.


Overall, these are the biggest jobs I've done on the Maitrise-Orthopédique site. Of course, there were also the day-to-day tasks such as maintenance, updating software dependencies to avoid security holes and so on.