In recent posts I have talked about our adoption of Kubernetes, in this post I’m going to talk about how we release our applications into our cluster.

I recommend making a brew because we are going down the rabbit hole, as before I even start, I think I need to answer an important question.

Why Kubernetes?

Image for post
Image for post

I think the best answer to this can be found within the comic “Smooth Sailing”, but we have all been given the sales pitch, I want to give you a real world example. Why did the YNAP frontend team adopt Kubernetes?

It all came about during the Mr Porter re-platforming. The new frontend architecture was built around Microservices each handling a different part of the website. Each application had their own pipeline to terraform the infrastructure and environment; another pipeline for build, test and deployment of a Docker image to ECR and finally a third pipeline to deploy the image to Elastic Beanstalk. …


Well, where did those last two years go? Apologies for my tardiness, time really got the better of me. The good news is, we’ve had a further two years of production experience, improving performance, catching bugs, adding features and completely changing our infrastructure.

In the final part of this series I’m going to run a retrospective on Locer (Localisation, Errors and Routing), what went well, what we had to improve and what I would do differently.

If you have just come into this series I recommend catching up on Part 1 and Part 2 first.

What went well 😃

Locer is now routing frontend requests for the following…


This week YOOX NET-A-PORTER turned twenty and within a month I will have been there for half of it. I was asked if I would write about my time here, any favourite memories or stories I wanted to tell over that time. I thought I would focus on one, something that means a lot to me and how I want to remember the company.

Launching Mr Porter*

Image for post
Image for post
An early Mr Porter homepage from 2011

I joined NET-A-PORTER having previously worked at two different web agencies — I owe a thank you to both of these companies who gave me a foot in the door and an opportunity. I was used to releasing websites and helping to launch new companies but come go live day, it would be out the door and I would hardly give a glance over my shoulder, it was on to the next billable hour. …


Image for post
Image for post
Photo by chuttersnap on Unsplash

At YOOX NET-A-PORTER GROUP, we build and deploy thousands (literally!) of containers daily. To keep our Kubernetes environments safe, we strive to follow best practices. However, securing Docker containers is a broad topic.

We follow best practices such as never allowing them to run as root, only using official base images, and reducing the attack surface by avoiding the presence of unneeded packages. On top of that, we implemented image security scanning via AWS ECR.

By default, every image gets scanned when pushed to the repository. Still, unless we force everyone to check the scanning results, we need a way to be sure we do not deploy images with vulnerabilities in our environments. …


Image for post
Image for post
Do they know its quizmas time again

It’s that time of the year again, Christmas party season and I’m starting to write this year’s YOOX NET-A-PORTER GROUP Pub Quiz.

Last year I included an extremely unpopular round of weird and (maybe) interesting JavaScript quirks. Below are five of the questions, give them a go and see how well you get on.

After there is an answer with a brief for each.

Questions

Entering each of the following into your console would return a value, what is that value.

Question 1

> typeof NaN;

Question 2

> 0.1 + 0.2;

Question 3

> ('b' + 'a' + + 'a' + 'a' + 's' + decodeURI('%21')).toUpperCase();

Question 4

> ('Thats ' + typeof + 'Alexander ' + 'Wang').toUpperCase(); …


Over the last year we have been building the new MR PORTER website (currently available in many of our markets) and THE OUTNET on our new brand-agnostic micro-frontend architecture.

An overview of our frontend architecture
An overview of our frontend architecture
An overview of our frontend architecture, taken from a previous article: Solving a problem like routing

Although we had not done a complete discovery phase around Progressive Web Apps we knew service worker offered us features we could rollout iteratively.

We started with the goal to use service worker to improve our performance metrics. We would do this in multiple ways:

  • Caching css and js
  • Improve third party script caching
  • Using app shell architecture to cache html
  • Use navigation preload to improve the performance of the service worker…


This is the second part in a series around how we designed, build and introduced a new routing tier at YNAP, Part 1 is available here.

Doing our homework

We knew what we wanted to build now we needed to make sure, whatever we did, this new application could handle our peak traffic on sale.

First we looked into a couple of available options:

Although all looked great and worth a look if you have a similar issue, they didn’t quite match our requirements. …


If you’ve never heard of YNAP, we are an online retailer averaging a billion page-views per month. I work within the In-Season team, we are responsible for both NET-A-PORTER and Mr Porter. Our frontend teams love Microservices, however for all their advantages they have also bought us new challenges.

The one I want to talk about today, is how we route a request to the correct frontend application. Before talking about where we are, I think it’s important to explain how our architecture has evolved.

A little bit of history…

When I joined NET-A-PORTER, our brother brand Mr Porter didn’t exist and our website architecture was fairly straightforward. …

About

Robin Glen

Principal developer @ynap

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