BT

InfoQ Homepage News Rebuilding Wunderlist Using Microservices

Rebuilding Wunderlist Using Microservices

Bookmarks

After spending years doing big rewrites and seeing how much time people spend building software that they throw away, Chad Fowler at the GOTO Berlin Conference declared that he believes we should be thinking of legacy as something positive that we want to leave for coming generations, not as a bad thing that is so common today.

When Chad joined 6Wunderkinder, the company behind Wunderlist, as CTO, he saw a large monolithic Rails application, a large monolithic database and a monolithic deployment process. One of the big problems contributing to building monoliths that Chad sees is that we let it grow and as it gets more complicated we build abstractions around it, trying to maintain that one growing thing. If we instead want to keep things separate and replaceable, Chad thinks we must bring in some level of decoupling by making everything heterogeneous, and this has led him into a Microservices architecture.

Instead of rewriting the whole system they begun building new functionality implemented as new services. At the same time they started prototyping for a new system and also worked with splitting the large database into smaller databases including migration of all data. After all this work they had proof that the new architecture would work and they then did a big rewrite creating a whole new architecture for the backend and partially for the clients. This did work, even though Chad is not proud of that.

In their new architecture all requests come in through a top-level server, a web-socket server accepting requests from the web browsers then streaming content back as it becomes ready. Below there is a more traditional HTTP server that deals with authentication and authorization at one level. Chad notes that these first two layers are fundamental, when breaking a system up into a number of services you still need one way to talk to the system. They today have around 60 services making up the system backend and they found it important to expose one API instead of forcing developers using the API having to considering these 60 services figuring out where to find certain functionality.

Inside these two top layers they have two inner layers of services, one with no database connection whatsoever where a check is made that a user is allowed to perform the request, and a second layer which basically acts as the database. Every time a change happens a mutation record is generated with information about what changed and on which item, e.g. a task changed its title. This record is then picked up and fanned out to all services in the second layer that might be interested in the event. A risk in this is that a change might create an event that creates the same type of change, effectively creating a loop; this is avoided using aggressive monitoring.

Monitoring is for Chad extremely important in this sort of architecture and one advantage he has found when using microservices is that they make it possible to see exactly what is wrong; with a monolith it’s hard to separate out what the problem is.

The GOTO Berlin Conference 2014 is the second GOTO conference in Berlin, with around 550 attendees and 80 speakers.

Rate this Article

Adoption
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • Interesting... would like to have heard more detail on the types of micro-services

    by Kishore Reddy /

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Interesting.... i had a feeling that todo lists are deceptively complex, especially when factoring in collaboration, sharing/ownership, change management, backups, offline mode, etc. However, it still seems that 60+ micro-services sounds like a lot.

    It would be good if the article discussed some of the purposes of the micro-services.

  • Re: Interesting... would like to have heard more detail on the types of mic

    by Jan Stenberg /

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Chad didn't go into the details of all services, he just mentioned a few examples like tasks and lists. Maybe there are some blog posts that will reveal more.

    Thanks,
    Jan

  • How about communication between services

    by Ye James /

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Thank you for the post!

    Would like to know more about how they handle inter-service communication.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

BT

Is your profile up-to-date? Please take a moment to review and update.

Note: If updating/changing your email, a validation request will be sent

Company name:
Company role:
Company size:
Country/Zone:
State/Province/Region:
You will be sent an email to validate the new email address. This pop-up will close itself in a few moments.