How GOTO: Berlin 2015 confirmed FOODit is adopting Microservices the right way.

Jοachim
Devs @ FOODit
Published in
6 min readJan 7, 2016

GOTO Berlin is a two day annual conference “for developers, by developers”. I was able to attend thanks to FOODit’s learning budget, given annually to each developer to enhance their skills and knowledge through courses, seminars or conferences.

This year’s theme was space, and going to the moon!

Greeted by a space man — Photo https://twitter.com/ukmadlz/status/672817899648770048

Often the highlights of a dev conference are learning about some new bleeding edge technology that will make your life easier, or finding a better technique for using existing tools in a whole new way.

However, at GOTO Berlin the two seemingly non development related keynotes were my highlights.

The first keynote, To The Moon given by Russ Olsen was a fascinating story about the previous generation, the value of belief and how to make great things happen. A look at what led to the Apollo mission and what it took to get to the moon, both from a technical perspective, and from a cultural perspective.

Russ Olsen asking the audience who knows the name of the third Apollo 11 astronaut.

The video is really worth making time to watch in full.

The second keynote, Space Shuttle given by Stephen Carver, was about the space shuttle, and how just like with other large projects, the reasons for failure were down to human decisions and management.
A lot of the content can be paralleled to development work, and how without competent management, and open communication even the smartest workers cannot create a successful outcome.

Stephen Carver showing that problems within NASA sound similar to large development project problems.

Again this is a fascinating video well worth a watch.

GOTO Berlin isn’t a language-specific conference. Throughout the two days there were multiple tracks on various topics including IOT (Internet of things), Mobile, Agile, Microservices and Security. More often than not selecting the most useful or interesting option was very difficult.

Of particular interest to me was the microservices track. Here at FOODit we are adopting the Microservices patterns for any new features, and slowly migrating anything that is practical.

The first session on microservices was “Fred George — More than microservices”.

As the title of his talk suggests, implementing microservices doesn’t just change the technology of an organisation, it changes the organisation itself.

Moving from being project-based Java monoliths heavy on bureaucracy, to small agile teams made up of cross disciplinary people who are trusted to innovate, experiment and deliver.

For fast moving organisations microservices allow them to build small components that perform one function well, independent of the rest of the organisation.

One example of this that Fred George talked about was data storage. Previously databases were expensive and required high maintenance - now things are cheap and often operated by an external service. This allows each Microservice to use the Database that is best suited.

This confirmed some of the decisions we have made here at FOODit.

  • We perform searches using ElasticSearch because of its speed and configurability.
  • Store analytics and events in Google BigQuery due to its scale and cost.
  • Update critical information within Google DataStore because of its reliability.
  • Use Google Cloud SQL for relational non customer facing information.
  • etc..

Many organisations use one datastore as their source of truth and are then limited by its capability when using it across multiple services.

These points were also echoed later by Kevin Goldsmith with “Microservices at Spotify”.

The organisation and the technology are structured in a similar way, both as small, focused elements, somewhat self sufficient, aware of its surrounding but focused on its own problem and results.

Spotify have:

  • 810 active services.
  • 10 services per squad.
  • 6–10 mixed discipline people within each squad.

This number of services allows the single application to be broken down into many parts with very few points of failure. It allows for services to be swapped in and out for A/B testing. It also allows a single service to remain unaffected by services changing around it, so previous versions can stay in place for backwards compatibility.

Erick Evens continued this with his session on “DDD and Microservices: At Last, Some Boundaries!”, reiterating the fact that servers should be “Cattle not pets”, meaning our servers should not be something that we name, educate and lovingly care for. Rather, they should be scripted, set-up to do a single task and run and run until they die, only to be replaced by another.

Google App Engine provide the cattle here at FOODit, so we have very little DevOps or even traditional servers. However, I am sure there are some things that we can learn from this analogy in terms of our applications and its microservices.

GOTO Berlin wasn’t just on microservices. Dr. Nicole Forsgren presented research into the benefits of organisations adopting continuous delivery:

  • 2x More likely to exceed Profitability, Market share, and Productivity goals
  • 30x More frequent deployments
  • 8000x Faster lead times than peers
  • 2x Change Success Rate
  • 12x Faster Mean time to recovery

Along with that, the members within the organisation are happier because they feel like they are achieving more, and they can see their work becoming a reality.

“DDD & REST — Domain Driven APIs for the Web” by Oliver Gierke.

One of the most interesting technical talks was “DDD & REST — Domain Driven APIs for the Web” by Oliver Gierke. He is the lead of the Spring Data Project.
At FOODit we use Spring Data and have embraced the use of HATEOAS within our APIs, especially when communicating workflow to apps. It was interesting to learn about Oliver’s experiences consulting on Spring Data implementations, as often the adoption problems aren’t purely technical and it requires an organisation to view their data differently.

“Table structure does not mean model.” — Oliver Gierke

This quote reflects a common misunderstanding when designing systems, where Spring Data (or other frameworks) are essentially used as layers for CRUD database operations, when in reality they should allow the abstraction away from the database into Domain objects.

The closing Keynote by Chris Atherton was on usability and how, “You Can’t Always Get What You Want”, when building software.

Often this is because what you want is not what the end user needs, and how the end user approaches the software can be completely different.

Through her talk she used examples from her consulting where what seems like a logical decision to product owners can be completely misunderstood by users; and how various techniques, mostly involving user testing can be used to find the optimum outcome.

As a developer I feel like this is one of the most common problems with software and it is often overlooked by developers as something they aren’t involved in. To me, your technical implementation is pointless unless it is used to complete the intended task.

This is why UX and design should be involved in or considered throughout every stage of development.

Although Restaurant related technology isn’t the same as the quest for landing a man on the moon, many of the learnings at GOTO Berlin can be used at FOODit. From the communication issues at NASA, the MVP & incremental improvement shown through Project Gemini, the technical insight of Spring Data, to the importance of UX and design.
This was a fascinating conference and one that we will look out for in the future.

Joachim Davies is a Senior Java Developer at FOODit — a young startup with a passion for food and tech, creating software to help independent restaurants grow. FOODit is always on the lookout for talented developers and is currently hiring. Connect with us via LinkedIn and Twitter.

--

--