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.
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.
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.
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. …
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. …
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.
After there is an answer with a brief for each.
Entering each of the following into your console would return a value, what is that value.
> typeof NaN;
> 0.1 + 0.2;
> ('b' + 'a' + + 'a' + 'a' + 's' + decodeURI('%21')).toUpperCase();
> ('Thats ' + typeof + 'Alexander ' + 'Wang').toUpperCase(); …
We started with the goal to use service worker to improve our performance metrics. We would do this in multiple ways:
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.