How to build an incredibly fast internet application

I just received two bits of good news about an internet-application that was built under my management. I have to be a bit mysterious about the project itself as I’ve signed a NDA but it’s an application that will be visited extremely often with a totally unpredictable planning. Luckily I love a challenge.

NOTE: This project has gone live since the writing of the blog . It was for the Dutch Monarchy and the Orange Foundation, the largest charity of the Netherlands, on occasion of the inauguration of the new Dutch King Willem-Alexander.

So the good news was:

  1. Our stress tests showed we are over-performing by 10-100 times.
  2. The company that audited us (KPMG) said: “The application was made with love and we don’t see that very often’. They actually said LOVE and  the L-word is not used lightly by this large consultancy firm (and they hardly had any critical points at all).

So I’m a happy camper and thought I would share our approach with you. I’m focusing on performance issues here even though we paid just as much attention to usability, security, browser compatibility, etc etc.

Let me be fair and tell you that I’m just the person that comes up with concepts, knows a bit about the technology and manages things, so who am I to take credit for such a monster of an application? I worked with my Maximonster team:  Marc Worrell, Arjan Scherpenisse and Joost Faber and together with the brilliant team at my former company ICATT interactive media.

First of all, what is  fast?

To test the application, we’re using a scenario that simulates a user going through the application. It’s a simulation of many different types of browsers in about the same percentages as the real world (x% IE, Y% Firefox etc).  We ran tests of up to 400 people doing a complete task in 0.8 seconds. We were serving 120 Megabit/second.
In our case this compares to about 30.000 concurrent users. Enough to run 150.000 users in an hour. And all this while the application runs as smoothly as when it runs with 10 users.  We ran this on two servers, while we will be using at least three and can quickly  deploy more if needed. Why not test further? Well… our test server just can’t do it right now and for now it’s enough – we underpromised anyway. We estimate that we can double or triple this easily.

So here’s how to do it from a birds eye view.

The obvious things

Build a light application and pay attention to performance issues all the time. Every query, every piece of script is going to count. Don’t use images if you don’t need to, don’t add design to things that don’t need it. If you are working for a client, keep stressing the performance issue even if you get on there nerves. They never will be grateful: if there are no problems, nobody will thank you. If there are problems, you will be remembered so you might as well point out the risks ahead of time.

Architecture

In the past year we have built “Elastic Zontonic”, an architecture developed in Erlang that makes it possible to add nodes (virtual servers or hardware) on the fly. Zotonic is a framework built in Erlang which makes it possible for us to build applications and offers us a backend which gives a lot of controls out of the box.

Each Zotonic nodes does the same as the next one and can fail. We don’t even care if it does. If nodes go down, the others will consolidate missing data. If the node comes back up, it’s great but if not, the others will be just as happy.

Have a stress tester with some good software

In our case we used Visual Studio running off a virtual server running at Rackspace. Rackspace sells servers time by the hour, so you can do this quite easily. Stress testing itself is complicated and hard to understand. You’ll need time from the developers to help build a stress-script and you’ll need to do it several times. Some user scenarios really can’t be simulated and you’ll have to make some guesses. Though we haven’t used it yet there are some interesting cloud based testing products being launched. If you haven’t invested in time and money into offline web-stress-software, you should definitely go that way.

Work with extremely flexible, cheap hosting

Now I’ll start this by saying: I don’t get commission from Rackspace. I compared several hosters at the start of this project and found their pricing to fit the project (our client kept part of the planning a secrete so charging by the hour makes things easier). Rackspace isn’t all perfect (some of the DNS software had some problems) but their service was great, the pricing easy to understand and they won my heart when I called them about stress testing. I had been warned that if we do extreme testing at a virtual server provider, you could get kicked out. So I called Rackspace to check this and they told me; “Oh… do what you like. We probably won’t even notice it.”  What a bold thing to say.

We actually developed a module to automatically configure servers with the Rackspace DNS API, so we might just come back.

Content delivery network

Now I’m old enough to remember the days that bandwidth was a problem for websites. Those days are over for most sites but not for high performance situations like this one. So that’s why Amazon and Rackspace offer storage for files, be it images, video’s or just documents. It takes some extra work to use a cdn (it’s a bit more complicated than just a remote ftp site) but once you’ve got it running, it takes all the stress out of storage.

Don’t have a server too far away (Ping!)

One reason you might think that hosting at a hoster like Rackspace is a bad idea is that they are far away and the responstime (measured by the ping time) is much lower if the server is far away. Luckily we found out that Rackspace has a datacenter in the UK, making it much faster for us (in Amsterdam) that it would be in the USA.  Most of the visitors will be coming from the Netherlands so that’s important. The difference can be quite dramatic. Before (!) we started, we checked a few sites hosted at the site in the UK and found a ping of 7-8 ms which is fine compared to a server in the US.

Unlimited loadbalancing

Loadbalancing is a tricky subject. You have to configure things and it’s quite common that things go wrong if a loadbalancer looses track of the server. One thing we got from Rackspace is for all practical purposes and unlimited loadbalancer. It’s not free and all data is charged for but it’s cheap enough and it’s one less thing to worry about. What we did to make things a lot simpler is to have a sessionless application. This certainly not always possible but if you can, there are lots of reasons for it.

Underpromise

From a less technical perspective: really underpromise. What ever an individual developer will think, combining technology in general makes things go slower. And if you’re talking hundreds of thousands or millions of users, things will be really massively slower. So – be smart and under promise, add extra hosting budget to your plan, add redundancy and expect the worse.  We actually expected our application to run on one third of the hardware that we are using. And when one of the nodes did actually crash during our first major stress test, we were happy to see everything kept running smoothly. Your client will be totally impressed when things are even faster than they expected.

Michiel Klønhammer

Thanks to Marc Worrell and Arjan Scherpenisse!

So looking for an Erlang dream team? Check out www.maximonster.com and get in touch.

Advertisement

What’s in a name? The story of MaxClass.

When started MaxClass last year we invested time – a great deal of time – in researching and testing the brand name. I would be embarrassed to tell you which names I came up with and tested with a list of people across Europe and the states. I even came up with one name that every single person in my test panel had complaints about. Too hard to pronounce, too hard to remember, sounds like a swear word in my language, makes me think of ….

I have already thanked all the people in the US, Italy, France, the Netherlands and England for  all the candid reactions I got. But the thing was: every time we actually had to go and buy the domain and it was starting to cost money.

In the book Getting Real by 37Signals.com, they say that a weak domain like BasecampHQ.com is not really a bad thing. I guess they are successful enough to have a point but I just didn’t want a name like that. So let’s say that this is one of the few things I disagree with in that great book.

So name after name bit the dust and our working title “Klas.nl” (nice in in the Netherlands where we were going to launch) was getting too well known. I think I would have liked to have read the research by T. Clifton Green and Russell E. Jame , two scientists who show that short names which contain of recognizable words lead to better valuated companies. So it better to be called MaxClass than SSalcXam. You can download the paper here: http://papers.ssrn.com/sol3/papers.cfm?abstract_id=1777256

So how did that end? As our company is called Maximonster Interactive Things (after the French and Dutch translation of Where the Wild Things Are – a brilliant children’s’ book), it now doesn’t seem unlikely that we would use the Max.. somehow – especially as I wanted a name that contained ‘class’ to reflect the importance of the class and to be slightly recognizable). Still, I just didn’t come up with it and kept testing weaker names. One day I walked into the office and Marc Worrel, the main architect, noted (not even looking up) that we might as well call the whole thing MaxClass…

Now anyone that has claimed a domain name knows that a nice name like that would be owned by some domain-reseller that wants to make a profit. In this case it was just being auctioned off and I discovered that there were automatic biddings being done of 65 USD. So being Dutch and stingy (and smart J)  I bid 70 USD and beat five automatic bids. And so, we had a name which every single person in the test panel loved.

www.maxclass.com

It’s a launch! Private Beta starts now.

After months of hard work and more recently 15 hour days, we made it. MaxClass went live for our private beta and we celebrated at NEMO, the science museum in Amsterdam. The director of the museum Michiel Buchel said many very nice things about us. Thank you NEMO!

We received great pictures from Peete Sneeks. http://www.flickr.com/photos/p8/sets/72157625370699906/with/5170621904/

MaxClass launch with Marc Worrell
MaxClass launch with Marc Worrell

I wanted to drop one here and I think this one is great and it’s much deserved that Marc Worrell our senior architect would be posted here. He’s watching one of the thirty people cutting the 20 meters of ribbon we had (purple of course). I promised that anybody that hung onto the piece of ribbon untill we have one million users, gets 100 Euro. This must be a 1000% increase of value!

We hope to be going live (as in really live January)

MaxClass, LinkedIn, Facebook

I guess it isn’t really good Dutch modesty to compare our MaxClass to LinkedIn and Facebook, while we’re just starting off.

And why? Well we think that MaxClass is a fundamental idea, something that will be useful at school and at home.  We love both LinkedIn and Facebook and think they have changed how we do business and deal with friends. MaxClass should really change communication at schools.  It is about time it does anyway – and the internet is ready for it!

And it also isn’t a simple get-rich-quick-scheme. You need a lot of users to run a social network – so we also aim at quite high volumes of users – especially as we’re going to give most of it away for free.

For the time being we need to launch and that we will be doing!

It’s happening at NEMO in Amsterdam on November 12th!

Www.maxclass.nl

The perfect web 2.0 application

While analyzing office 2.0 software, I had a deep insite. I found the single factor connecting all successful web 2.0 applications.

I’ll let you have a look at several very interesting applications and give you a chance if you see it too:  Highrise (CRM by 37Signals – also the writers of some brilliant web2.0 businessbooks), Funella (online CRM), Xero (online accounting), CapsuleCRM, Batchbook, and Relenta.

This slideshow requires JavaScript.

Did you see it? It’s the green button. Every web2.0 application seems to need a green button. I’m not sure but I think that the people at 37Signals might have defined the green button first and it seems everyone agrees this will lead to more sales. Well… not everyone as CapsuleCRM chose orange (very bold) and Relenta doesn’t have a button at all (what are they thinking 🙂

Actually the range of applications Ive been looking at, show that the online office is really a real option for anyone trying to avoid costs and cumbersom local servers.

Alles “in the cloud”

Wie mij volgt, weet dat ik onlangs de transitie heb gemaakt van een goed georganiseerd internet bureau met flink wat personeel naar een fonkel nieuwe start-up. Het is niet mis wat je dan allemaal niet meer hebt. Geen systeembeheer, geen inhuis administratie, geen inkoop van lunch. Gelukkig kon ik vandaag met mijn ex- collega’s (ze zitten in het gebouw) vandaar nog wel WK kijken, want zelfs een megagroot flatscreen heb ik niet. Wat een armoede.
Nu heb ieder nadeel een voordeel – om in voetbal-termen te blijven praten (waarom keek Cruyff eigenlijk zo zorgelijk  tijdens Nederland-Denemarken?). Nu dat ik weer klein moet beginnen, moet ik ook slim zijn. Ik formuleer voor de nieuwe groei een aantal strategische principes. Een van de belangrijke daarvan is Everything in the cloud.
Dus (op een espresso-apparaat na) niets meer fysiek op kantoor. En alles moet elders worden gehost. Bij iedere beslissing wordt de cloud-lat streng gehanteerd.
Hier even de oplossing tot nu toe op een rij:
E-mail in the cloud: geen Exchange meer maar Google Apps. Voor 40 Euro per gebruiker/per maand biedt Google een exchange-vervanger die het ook nog prima doet samen met Outlook. Onderschat niet dat je veel werk in de instellingen en configuratie moet investeren (en Exchange heeft ook wel tal van voordelen), maar je kunt het als je een beetje handig bent zelf doen. In the cloud.
Telefoon in the cloud: Vergeet die lompe en dure centrale maar neem een virutele VOIP centrale. Kost 14 euro + tikken per toestel per maand bij BelCentrale. En de nerd in mij wordt aangesproken door met zo’n degelijk Cisco toestel te bellen.
Domeinregistraties in the cloud: geen eigen DNS meer (ieder Internet bedrijf moet de volledige controle over domein instellingen hebben), maar een hosted partij. Ik ben uitgekomen bij EuroDNS, een Luxemburgse partij die in tegenstelling tot partijen zoals ENOM of GoDaddy ook Nederlandse domeinen host. OXXA – een Nederlandse partij viel af wegens technische fouten.
File sharing & backup in the cloud: zoals velen van jullie heb ik op korte termijn daarvoor DropBox ontdekt. Dropbox biedt een onwaarschijnlijk stabiele oplossing. Google Apps (waar ik dus al voor betaal) biedt wel 25 Gb ruimte per persoon I (ik gebruik nu 3%) maar daar heb je weer zoiets als MemeoConnet http://www.memeoconnect.com  voor nodig  – het werd mij te veel gedoe. Als code-repository gebruiken we BitBucket. Mooi spul.
Code Distribution in the cloud: voor het verspreiden van de code die wij teruggeven aan de community gebruiken wij Google Code.
Remote beheer in the cloud: ik gebruikte al jaren LogMeIn voor het remote beheer van de computers van mijn ouders. Voor 5 gebruikers is dat gratis. Werkt ongeloofelijk goed.
VPN in the cloud – ik heb ontdekt dat LogMeIn (die mij dus al iets gratis gaven) ook virtuele VPN biedt. Dus veilige netwerken zonder de technische complexiteit. Ik heb er nog geen ervaring mee dus laat weten als je het gebruikt.
Administratie in the cloud:  ik heb met mijn administratiekantoor afgesproken dat we dit eind dit jaar rond hebben. Zij gebruiken het Multivers maar ook Multivers biedt nu een hosted versie zodat ondernemingen betere toegang hebben tot de diensten van hun administratiekantoren. Er zijn al tal van goede concurrenten zoals Reeleezee van internetpionier Jan Jacobs.
Kantoor in the cloud: ik heb nu het geluk om een kantoor te gebruiken dat plug&play is op een geweldige locatie in het centrum van Amsterdam. Met alles in de cloud heb ik bijna geen ruimte meer nodig.
Hosting in the cloud: dit heet eigenlijk virtualisatie. Dit zette ik al eerder in voor een datacentrum via Uniserver – en was daar zo tevreden mee dat zij een portret maakte over mijn nieuwe nachtrust.
Papier in the cloud:  ik ben nog niet zo ver maar een ex-collega gooit met gemak ieder stuk papier in een lowcost HP scanner die direct naar PDF scant. Weg mappen en gedoe. Bij een bedrijf zoals Stork hebben zij een service centrum waar twee man full time alles inscannen zodat alles in de cloud beschikbaar wordt.
Ja – het begint er een beetje op te lijken. En wat gaan wij dan doen met dit alles? Wij maken KLAS.NL. En ja, KLAS.NL wordt aangeboden in the cloud. Zoals het hoort.
En wat kost eigenlijk zo’n megagroot flatscreen? Nu dat alles in de cloud staat heb ik nog wel een plekje over 🙂

De docent als enzame podiumkunstenaar moet het doen zonder ICT

Tijdens de zesde en laatste bijeenkomst van De Onderwijsagenda, een door de Volkskrant georganiseerde reeks discussies, werd de lastige vraag ” Welke eisen stellen we aan docenten?” gesteld.

Docent economie en ex-Volkskrant journalist  (en sterke spreker) Ferry Haan zette het puntig neer: een docent moet boeien, goede toneel spelen, zichzelf zijn, vakkennis hebben en ook nog af en toe in de buitenwereld komen.

De avond verliep met horten en stoten – het is ook een moeilijk onderwerp en tijdens onderwijsbijeenkomsten heb je altijd wel een gek die gaat razen.
Mij viel  vooral op dat de kennis van ICT niet een keer werd genoemd gedurende de lange discussie. Kennelijk wordt kennis van ICT of inzicht in e-learning nog niet als prioriteit gezien…
Wat we allemaal weten is dat er een gierend lerarentekort gaat komen. Rinnoy Kann (voorzitter van de commissie die het lerarentekort onderzoekt) spreekt over 100.000 FTE voor 2015. Wat we ook weten is dat in iedere bedrijfstak er sinds jaar en dag efficiënter wordt gewerkt door ICT. Vroeger had ik een secretaresse – nu doe ik het allemaal zelf. Vroeger was een boekhoudafdeling een zaal voor keurige rekenaars – nu heb je een boekhoudpakket. Maar een docent wordt  – als we afgaan op dit debat – als eenzame podiumkunstenaars gezien.
Boeien moet ie. Vakkennis hebben ook.
Ik zou graag pleiten voor de slimme inzet van ICT voor zowel het didactische proces als voor de communicatie in- en rond school. En  natuurlijk denkt u: maar ICT leidt niet altijd tot een effienter proces en zo zal het gebruik van e-learning of social media niet altijd tot beter maatwerk leiden in het onderwijs. Zeker dat is waar maar wel zullen wel ons best moeten doen want met toneelspel toveren we niet zomaar 100.000 leerkrachten erbij.

If apple would make espresso machines…. (en we zoeken collega’s)

Jura!

If apple would make espresso machines this would be it.

En nu dat wij de koffie goed hebben geregeld, zoeken we mensen. Om te beginnen met een Front-end developer maar ook een aantal stagiairs (zowel programmeurs als marketing).  Laat je niet afschrikken door de Engelse advertenties. Het is gewoon in Amsterdam – maar als je toevallig geen Nederlands spreekt, is dat OK.

Zie www.maximonster.nl/work

Facebook als maatschappelijk risico

Het zal wel mijn leeftijd zijn (nog net niet 45 – wat toepasselijk voor dit stukje) maar ik ben mij er dagelijks van bewust dat het vrijelijk weggeven van persoonlijk informatie niet zonder risico is. Een jaar of wat geleden ontmoette ik een vrouw (jonger dan ik ja) die het verschikkelijk overdreven vond dat er organisaties waren die zich zo druk maakte over privacy op internet. Ik zei (hier spreekt opa) dat je toch de tweede wereld oorlog niet moest vergeten.

Vandaag hoorde ik een verhaal van een kennis wiens joodse oma net voor de oorlog in Amsterdam ging wonen. Zij kwam uit Rusland en weigerde zich als Jodin te registreren. Zij overleefde zo de oorlog.

Vandaag werd ik gewezen op de site over Facebook privacy van Matt McKeon, een ontwikkelaar bij IBM die op persoonlijke titel dit onderwerp bestudeerde. Hij kwam tot een schokerende conclusie. In 5 jaar tijd heeft Facebook nagenoeg alle gegevens die privé waren, openbaar gemaakt. Dus als je dacht dat je alleen voor je vrienden (of misschien de vrienden-van-je-vrienden) gegevens invoerde en niet zo goed hebt opgelet, dan heb je ongewild je privacy totaal opgegeven.

Natuurlijk kan je zeggen dat je dan moet opletten. Dat deed de joodse oma tenslotte ook. Maar de meeste oma’s realiseerde zich destijds ook niet dat zoiets gewoons als je joodse identiteit op een formulier invullen tot zulke verschrikkelijke uitkomsten zou leiden.

En ja, ook ik heb een Facebook profiel…

Noot: blauwe gebieden geven aan dat informatie in principe openbaar is. Zie voor meer info: http://mattmckeon.com/facebook-privacy/

Bizarre verhalen bij Social Strategy Talks

Social strategy talks – de door Sogeti en Crowd Sourcing gesponsorde bijeenkomsten over social media -had een vreemd thema: “bizarre verhalen”. Het leverde een onrustige middag met een allegaartje aan verhalen waar de diepte wat te zoeken was.
Een beetje uit de oude doos was Let me for stay for a day http://www.letmestayforaday.com/ het verhaal van Ramon Stoppelenburg. die meer dan 3000 logeeradressen rondselden via met een website en bijzonder veel (tradionele) media aandacht. En dat zonder sociale media.
Echt bizar werd het toen twee dames kwamen vertellen over corporate storytelling waarbij verhalen worden gebruikt om in organisaties veranderen door te voeren. Niet echt ouderwets zou je zeggen. De zaal begreep het niet. De dames gaven in een omgeving van special media adepten een schoolles over ‘hele verhalen’. Tweets zijn dat niet. Vonden zij. De beledigingen vloegen over twitter heen. Ze werden net niet uitgejoeld.
Zo’n moment zou je over een paar jaar moeten herinneren. Wat zullen wij van twitter dan gaan vinden? Ik ben oud genoeg om te weten dat het nu niet te voorspellen is.
Toch de moeite waard: http://www.socialstrategytalk.com/
Op twitter: #sst