Perl and the Elasticsearch percolator

Quote

Intro

For our most recent hack day, I worked with my colleagues Antonio Barone and Nelio Nunes to implement an alert-me-when function for our site. In production, we use Solr at the moment as the search engine to serve our frontend. Unfortunately, implementing alerting functionality with it means you have to go down a do-it-yourself route.

Continue reading

Announcements

NAP::Messaging – glue and policies for interacting with ActiveMQ

As part of our service oriented architecture, our Perl applications send messages over ActiveMQ; a few of them also consume those messages and act on them.

All these consumer applications are based on Catalyst. Initially, we used Catalyst::Engine::Stomp and a rather complicated set of in-house libraries to wrap it.

Those in-house libraries have, in time, grown to incorporate more and more responsibilities, including testing, logging, message serialisation, plugin loading… it was time to break them apart and write something cleaner.

Continue reading

Hack Days

Promoting team rivalry through Fantasy Football

Robin have you played your wildcard yet!?

As soon as I joined NET-A-PORTER I was absorbed into the company Fantasy Football League by equal parts peer pressure and wanting to look cool. The first season took its toll. Forget lying in on a Saturday — I needed to triple-check my captain selection, I wouldn’t dare to take a holiday in case a player got injured while I was away, never mind the fear of forgetting about double-game weeks. After a respectable lower-middle-half-table finish, I needed a break — a long break.

The NAP Tech team consists of multiple sub-teams, so naturally there is some friendly competition; when a company-wide league was announced, I knew I had come out of retirement.

We have two main leagues: one strictly for NAP Tech; and NET-A-LIGA (a.k.a. big boy school), the company-wide league for people who know what they are doing.

If we were going to make this a real success, we had to amplify the rivalry and the potential for gloating — that is what this post is about.

Continue reading

Performance

Maximising Cache Hit Rates for REST APIs

Lovell previously mentioned improved cache time relevancy in his post about how we scaled the NET-A-PORTER website. My team is responsible for the product API used during the sale and currently being adopted by other applications across the organisation. I thought I’d reveal a few techniques we’ve used to maximise our cache hit rate.

Continue reading

Architecture

Net-A-Sparkle

At NAP, our code bases have organically grown as we’ve added more capabilities in order to support the rapid growth of our business.

From Monolithic to Microservices

The microservices architecture is an alternative pattern that addresses the limitations of the monolithic architecture. With Microservices the ambition is to be small. The flexibility that comes from Microservices is driven largely because of their size, so to keep these benefits we need to fight against the urge to add more and more lines of code.

Continue reading

Conferences

Lessons From Continuous Delivery and the Pipeline Conference

"Sponsor: NetaPorter" by Chris O'Dell is licensed under CC BY 2.0"

“Sponsor: NetaPorter” by Chris O’Dell is licensed under CC BY 2.0″

What Is Continuous Delivery?

Here at Net-a-Porter we take our software delivery very seriously, and are moving increasingly towards Continuous Delivery. For those of you who have not heard much about Continuous Delivery, or want to learn more then I’d certainly recommend reading Jez Humble’s website Continuous Delivery, and in particular taking a look at the Visualisations of Continuous Delivery which really help explain what it’s all about.

Continue reading