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

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

Open Source

Asynchronous web services with PSGI and IO::Async

Some of our internal web applications are low-traffic enough that a
preforking server can handle them without difficulty. Some others, on
the other hand, can really benefit from a non-blocking implementation,
so that each server process can serve multiple requests “at the same
time”, by working on a request while waiting for other services to
return data for other requests.

Up to now all our non-blocking web services were written for the JVM,
usually with the Akka framework, but I wanted to see how hard would it
be to build something similar in Perl.

Turns out, it’s not very hard at all, if you use the right libraries
and pay attention at a few tricks.

Continue reading

Javascript

Assembler released

We just released Assembler – a plugin for Backbone that makes it easy to manage nested views.

Assembler was initially written to solve the need for rendering nested views server-side and re-attaching them client-side in a node.js/Backbone application. However, we also found it useful for quickly mocking up apps and prototypes as well, so we’ve decided to release it as a standalone library.

Continue reading

Education

Scala at Net-a-Porter

Recently, Ariel announced that we will be presenting our experiences of using Scala at Scala eXchange 2013. We will save all the best bits for that talk, but suffice it to say we have really enjoyed working with the language. Scala is increasingly being adopted at NET-A-PORTER for new projects, and we have been working to ease the transition in a number of ways:

Continue reading

Akka

NET-A-PORTER at Scala eXchange 2013

We are delighted to announce that NET-A-PORTER will be taking part in Skills Matter’s Scala eXchange 2013 in London on the 2nd and 3rd of December, 2013.

Ian Forsey and I have been invited to talk about our practical experiences building Scala projects. On top of that, NET-A-PORTER will be sponsoring the event as a gesture of support to the Scala community.

Continue reading

Open Source

DBIx::MultiRow – Updating multiple database rows quickly and easily

A requirement arises in many systems to update multiple SQL database rows. For small numbers of rows requiring updates, it can be adequate to use an UPDATE statement for each row that requires an update. But if there are a large number of rows that require an update, then the overhead of issuing large numbers of UPDATE statements can result in the operation as a whole taking a long time to complete.

Continue reading