Über Dominik Liebler

Dominik arbeitet seit 2011 als Vollmatrose mit an Bord der Mayflower GmbH. Er interessiert sich besonders für mobile (Web-)anwendungen und skalierbare Softwarearchitekturen. Neben PHP und JavaScript programmiert er in seiner Freizeit auch mal gerne in Ruby, Java oder Erlang.

A sane architecture for Android apps

Building native Android apps is fairly simple: just throw some Java code together, add some XML to it and there you have it: a cool new Android app. But also sadly in most cases an unmaintainable Android app in the long run.

For many developers this seems to be just fine but I often asked myself why the code I wrote got more and more messy with every feature I added. I refactored a lot of the code step by step but it still felt very ugly.


Consistent Hashing – intelligentes Sharding

Stellen Sie sich folgendes Szenario vor: Sie betreiben eine Webapplikation, die noch relativ jung ist, aber die Userzahlen explodieren und vor allem die Datenbank hinter der Anwendung ächzt schon unter der Last – vor allem der vieler Lesezugriffe. Die Lösung für dieses Problem ist allgemein bekannt: Caching.

Doch damit die Caching-Architektur horizontal skalieren kann, müssen gleich mehrere Server die Last übernehmen. Damit besteht ein neues Problem darin, wie man am besten die Daten speichert, so dass sie sich auf beide Nodes gleichmäßig verteilt speichern lassen. Eine clevere Lösung möchte ich Ihnen hier mit auf den Weg geben. Weiterlesen

DomniklStatsdBundle: Monitoring mit statsd in Symfony2-Projekten

Während mit klassischen Monitoringlösungen wie Nagios Systemdaten überwacht werden können, eignet sich die Kombination aus statsd und Graphite hervorragend für effektives Monitoring von Businessprozessen in Webanwendungen. Auch für Symfony2-Projekte wäre so eine Lösung praktisch – eine Variante stellt der Artikel vor. Weiterlesen

Message Queues for web applications with STOMP

Just like human beings, machines need to communicate with each other – and they do this by passing messages around. The simplest form is to use a protocol like TCP and build some sort of API on top of it. But sometimes this just isn’t enough, especially if you want the connection to be reliable and you can’t afford to loose a single message.

Many people tend to implement it with the use of a database. They just save all messages to a table and let the other system fetch those messages and process them. But there are many pitfalls in such implementations and that’s why it’s considered an anti-pattern to use a database for these tasks. Better use a message queue system, these are particularly built for these types of tasks!


Grunt – a JavaScript build tool

Build systems have a long tradition in software development infrastructures. They allow for easy automation of tedious tasks that have to be run often while a software product is in development. And there is a great variety of such tasks: compiling source files, running unit tests, gathering metrics from the code and finally deploying it.

This article will introduce Grunt, a build tool for JavaScript projects.

15.12. Using custom annotations in PHP

When developing enterprise software one should always keep an eye on writing code that is easily maintainable, testable and extendable. Design patterns already propose a way to implement a loosely coupled architecture. With annotations you can take a step forward to make your code look even more expressive, focusing on the primary problem instead of writing a lot of boilerplate code. A single comment line can save you many more lines of code but as it is written in the project’s domain language it will be much more meaningful to the developer. Weiterlesen