Get Rolling – Anschubentwicklung für Start-ups

Wir haben unseren Firmensitz in Berlin, der Startup-Metropole Europas (https://www.mckinsey.de/berlin-gruendet). Daher haben wir auch häufig Kontakt mit Kunden aus der Gründerszene. Wir konnten beobachten, dass Startups häufig die Herausforderung haben, schnell ein Entwicklungsteam aufzusetzen und hoch zu skalieren. Je anspruchsvoller die zu erstellende Software ist, umso herausfordernder der Aufbau einer Entwicklungsmannschaft.

Ein Herausgeben der Entwicklung an externe Dienstleister, wie z.B. an uns, ist für ein Startup durchaus heikel. Erstens muss es eine ausreichende Kapitalversorgung haben, um sich eine externe Entwicklung überhaupt leisten zu können. Zweitens gehört meistens neben der eigentlichen Geschäftsidee das Entwicklungs-Know-How zu dem Kernvermögen des Unternehmens. Ein Halten und Ausbau der Entwicklungskompetenzen ist daher im Interesse des Unternehmens.

Ein möglicher Ausweg aus diesem Dilemma ist eine externe Projektentwicklung, die von Anfang an darauf ausgelegt ist, vom Auftraggeber übernommen zu werden.

Dies klingt einfach und ist es nach unserer Erfahrung auch, wenn ein paar Dinge beachtet werden.

Weiterlesen

Vaadin und AngularJS – glücklich vereint

Sie haben sicherlich schon viel über xJS Frameworks, allen voran AngularJS, gehört. Als Vaadin Entwickler haben Sie sich vielleicht auch schon die Frage gestellt, wie Sie mit diesen Frameworks umgehen sollen. Ignorieren? Das wäre ein Jammer, denn die Frameworks eröffnen eine Menge großartiger Möglichkeiten. Ein kompletter Wechsel? Wäre auch schade, da Sie dann auf Vaadin verzichten müssten.

Glücklicherweise muss es aber nicht zwingend Vaadin oder AngularJS heißen. Vaadin und AngularJS klingt doch schon viel besser, oder?

Weiterlesen

PostgreSQL: Tabellenpartitionierung und Hibernate

Die Beiträge PostgreSQL: Partitionierung großer Tabellen Teil 1 und Teil 2 beschreiben die datenbankseitige Umsetzung dieser Performanzverbesserung. In einer Enterprise Java Umgebung ist eine Datenbank meist über ein JPA-Framework eingebunden und damit eng an die Anwendung gekoppelt. Dieser 3. Teil zu partitionierten Tabellen in PostgreSQL zeigt Ergänzungen, die beim Einsatz von Hibernate nötig werden.

Weiterlesen

OptaPlanner hilft bei verteilten Schulstandorten (Teil 4/5)

Die vorigen Teile dieser Serie haben beschrieben, wie das Optimierungsproblem modelliert und das Modell mit Hilfe von OptaPlanner umgesetzt wird. Dieser Teil beschäftigt sich mit dem eigentlichen Lösungsverfahren des Problems.

Ablauf der Optimierung

Der Solver übernimmt die Optimierung des Problems und durchläuft dabei mindestens zwei Phasen. In der ersten Phase wird eine Ausgangslösung erstellt. Diese wird in der oder den darauf folgenden Phase(n) inkrementell optimiert. Für beide Phasen stellt OptaPlanner unterschiedliche Heuristiken zur Verfügung, die je nach Art des Optimierungsproblems auszuwählen sind. OptaPlanner bietet zudem eine Benchmarkingfunktionalität, welche die Evaluation verschiedener Heuristiken durch automatische Läufe und Gegenüberstellung verschiedener Konfigurationen des Solvers mit grafischen Reports zu Performance und Skalierbarkeit unterstützt.

Weiterlesen

Integration von JBake in Maven – Statische Websites

JBake ist ein „Java-basierter, open source Generator für statische Seiten“ (http://jbake.org/, auf github https://github.com/jbake-org/jbake). Bestens geeignet, um statische HTML-Seiten zu erstellen. Das langsame Laden von dynamischen Inhalten entfällt. Ebenso Probleme, die bei der Indexierung und Suchmaschinenoptimierung/SEO auftreten können, wenn die Seite erst beim Laden per JavaScript zusammengesetzt wird. Gleichzeitig bieten verschiedene Template Engines, wie bspw. FreeMarker (http://freemarker.org/) den Vorteil der Modularisierung. Menü und Footer müssen nur einmalig definiert werden und können durch verschiedene Vorlagen automatisch eingefügt werden.

Weiterlesen

OptaPlanner hilft bei verteilten Schulstandorten (Teil 3/5)

Modellierung des Problems

Eine Zuordnung von verfügbaren Schulstunden zu Unterrichtsstunden ist mit dem Datenmodell aus Teil 2 dieser Serie nun prinzipiell möglich. Für eine sinnvolle Optimierung mit Hilfe von (Meta-) Heuristiken fehlen jedoch die Restriktionen des Zuordnungsproblems sowie eine Möglichkeit zur Bewertung verschiedener Lösungen. Umgesetzt werden können diese innerhalb von Optaplanner mit Hilfe der Regelengine Drools Expert oder Java Prozeduren. Der Einsatz einer Regelengine bringt zum einen bewährte Techniken zur Erkennung von Mustern out of the box (z.B. die Verteilung der Berechnungen auf mehrere Kerne). Zum anderen lassen sich die Restriktionen in Form von Drools Regeln leichter sukzessive und granular an veränderte Modelleigenschaften anpassen.
Weiterlesen

OptaPlanner hilft bei verteilten Schulstandorten (Teil 2/5)

Nachdem der erste Teil dieser Blogserie das fachliche Problem beschreibt, folgt hier der erste Teil der Modellierung.

Modellierung des Problems

In unserem Beispiel muss der Stundenplan nicht komplett neu erstellt werden. Wir können von einem bereits erstellten Stundenplan ausgehen und diesen optimieren. Zur Erstellung der Stundenpläne wird am ONG das weit verbreitete Stundenplanprogramm Untis genutzt. Der damit von der Schulleitung erstellte Stundenplan wird den Schülern und Lehrern u.a. über einen HTML-Export zur Verfügung gestellt. Zur Weiterverarbeitung in externen Programmen stellt das Modul Infostundenplan einen sogenannten Datenbank-Export zur Verfügung.
Weiterlesen

OptaPlanner hilft bei verteilten Schulstandorten (Teil 1/5)

Aufgrund von Baumaßnahmen muss der Unterricht an einer Berliner Schule auf zwei Standorte aufgeteilt werden. Die Wechsel zwischen den Standorten führen zu einer zusätzlichen Belastung des Lehrkörpers. Die Software, die für die Erstellung der Stundenpläne eingesetzt wird, kann diese Wechsel leider nicht minimieren. Als wir das hörten, kamen wir schnell auf die Idee, die Java Planning Engine OptaPlanner darauf anzusetzen.

In dieser Blogserie berichten wir davon, welche Schritte notwendig waren, um das Problem mit OptaPlanner angehen zu können und wie wir somit letztendlich eine Verbesserung um 70% erreichen konnten.

Weiterlesen