What is Coolblue?
Last week I was invited to go visit Coolblue behind the scenes in Rotterdam, NL. Coolblue has always been one of my favorite online dutch/belgian webshops because of their great customer service, their clear but simple websites, and most important, their great range of products at very affordable prices.
They roughly have about 50k unique products in 150-200 different webshops (they launch 2 new webshops per week on average), which they all have in stock at all time in one of their huge warehouses. Their biggest warehouse is more than 40.000 square meters which is about 10-20 FIFA football fields! How big is that! Ordering before 23.59 means it’s delivered at your doorstep for free the next day, or the same day when paying additional shipping costs. Also on sunday!
Why would they organise behind the scenes events?
The main idea behind this ‘Behind the scenes’ is that they are looking for talent programmers. They’re looking for roughly 100 new developers. They have about 40 right now so it seems they have big plans. Are they going international? Who knows! But their CEO didn’t really deny it. Their global employee basis is about 750 people.
Since I’m a freelancer I won’t be able to work for them so why did I go to this event? Well.. because their main dev talk was about scalability. I find this a very interesting and challenging topic so getting insights from one of the biggest webshops in the Benelux was a great opportunity for me to learn.
So what did I learn at Coolblue?
- use microservices / hypermedia api’s to flatten out your infrastructure. This allows you to easily isolate bugs and/or maintain those API’s without having to retest stable services on every deploy.
- every microservice uses an isolated datastore. CouchDB for customer data, PostgreSQL for order+payment information, ElasticSearch for the product catalog.
- RabbitMQ as a central state change notification mechanism. This is the glue between your microservices.
- use git pull requests to review & validate your team members changes
- CentOS RPM packages to distribute everything
- Puppet labs or Chef to install & maintain your (virtual) servers
- Statsd + Graphite for advanced reporting
- Nagios for alerting
- Create a “Chaos Monkey”. It’s single purpose is to once in a while kill your live environment. Your devs should then come with solutions to auto-fix these downtimes. This is how Netflix stayed online during the massive AWS outage a while ago: http://techblog.netflix.com/2012/07/chaos-monkey-released-into-wild.html
Have a look at the slides from their software architect.
Why should you attend one of these meetings?
- If you want a developer job @ Coolblue obviously.
- If you want to learn more about scalability.
- If you want to network with hundreds of other devs.
Inform yourself on this page: http://www.coolblue.nl/behindthescenes
Here’s a nice dutch article about the same event: http://www.dailybits.be/item/coolblue-behind-scenes/