Lynn Langit & Martin Thompson: Keynote - Engineering You
This was a general talk about how software developers can improve themselves through continuous learning and practice. There seems to be a trend among developers to look up a problem at StackOverflow and simply copy & paste the solution instead of trying to understand the problem in the first place.
This keynote was mainly presented by Martin Thompson. Lynn Langit jumped in occasionally by giving some notes/anecdotes from her daily work as an architect. It was an entertaining presentation but missing new insights.
Kinshuk Mishra: Architectural Overhaul: Ad Serving @Spotify Scale
Spotify has 50,000,000 members with full subscription and 100,000,000 active members (both free and paid) per month. The Ad Service targets the users that are listening for free.
The Ad Service has to support both streaming and batching and has been completely outsourced to Google Cloud Platform to meet the growing demand. The transition took about 18 months.
Luke Marsden: Continuous Delivery The Hard Way With Kubernetes
In this presentation Marsden used GitLab and Kubernetes to deploy a shop selling socks based on a microservices architecture. GitLab was used for version control and Docker registry as well as building the deployment pipeline.
The shop itself is an open source project created for demonstration purposes and can be found at https://github.com/microservices-demo/microservices-demo.
Marsden pointed out that it is very important to split the source and configuration code in two separate repositories. Having an automated and versioned infrastructure available makes a rollback possible if an error happens.
Colin Hemmings: Why We Chose Erlang Over vs. Java, Scala, Go, C
Outlyer is a monitoring software and they started out with a “structured monolith” originally developed in nodejs. That is a highly modularized monolithic application that can be easy migrated to services.
They switched to Erlang because it has fault tolerance and distributed execution in its core.
Drawback of Java was the existence of the GC and the motivation of the team. Other alternatives like Go, Scala or C were also dismissed.
Quite interesting was the switch to the time series database DalmatinerDb instead of popular alternatives like InfluxDb.
Patrick Kua: Building High-Performance Team
This was a very interesting talk about team culture and the issues teams face. Kua made a clear distinction between the terms group and team: a team has a shared goal where a group does not. Unfortunately leadership can go very wrong - especially if individual incentives logically hinders the shared goal.
The positive effect of having a discussion culture was underlined even though it is really hard to bring people to let go of their opinion in favour of a solution that fits better the shared goal.
Armin Ronacher: A Practical Road to Saas’ in Python
In his presentation Armin Ronacher shows the benefits of Python’s “Thread Local“ feature. It allows developers to access and inspect the whole context.
A use case was shown in the Flask framework where one can manipulate sql queries to add conditions to select only rows that belong to the user without passing the userid around.
In the second part he went into more detail about how thread local can implement multi-tenancy. It lets multiple customers access a single application, only work on their data, and have specific features enabled. This is one of the main requirements of the SAAS model.