Blog & Artikel

Blog-Post

Per request debugging with Log4j 2 filters

Customers quite regularly call on me to support them when an application is not behaving as expected. On a development machine there are a lot of ways and utilities to analyse the situation. But troubleshooting the erroneous application behaviour in production environments quite often limits your tool belt to a minimum.

Blog-Post

Rollen- und Gehaltsmodell bei INNOQ Deutschland

Im Laufe der Jahre haben wir bei INNOQ mit einer Reihe unterschiedlicher Rollen- und Gehaltsmodelle experimentiert. In Deutschland haben wir mittlerweile ein relativ stabile Struktur, die in diesem Beitrag näher beschrieben wird.

Blog-Post

What’s in a Name: Reactive

Artikel

Ruby on Rails wird zehn Jahre alt

Das Webframework Ruby on Rails feiert sein zehnjähriges Bestehen. Dazu erscheint nun mit Rails 4.2 das zweite Minor-Release in diesem Jahr. Es bringt iterative Verbesserungen und einige neue Features mit.

Blog-Post

Using Vector Assets on iOS

Vector graphics provide numerous advantages, especially when developing for mobile devices in a constantly expanding array of different screen sizes and pixel ratios. How to get them to work in an iOS app?

Blog-Post

Functional Validation in Scala

Blog-Post

Why You Should Avoid a Canonical Data Model

As an enterprise architect, you might be tempted to strive for a canonical data model for your systems’ interfaces. That’s not a good idea.

Blog-Post

Docker images for developers

Docker seems to be all the rage lately. There are docker talks at every conference, hosting Docker containers has become a hosting option with most if not all PaaS providers, and there is hardly a technology left that is not supposed to run better and more flexibly if you wrap it in a Docker container. Well, except maybe for enterprise-level DBMSs, but you can’t have them all. This post provides an example how Docker can be used at the start of the software lifecycle, during development.

Blog-Post

Play Anwendungen mit Docker & AWS Beanstalk in die Cloud bringen

Blog-Post

Frontend Dependency-Management in Rails

Im letzten Blogpost über Bower sind viele Gründe für die Verwendung eines Dependency-Management Tools für Frontend-Komponenten genannt worden. Dieser Artikel soll dort anknüpfen, wo der letzte aufgehört hat, und eine Reihe von Möglichkeiten aufzeigen, mit denen Bower in ein fremdes Ökosystem integriert werden kann. Denn in der Regel trifft ein Webframework wie Ruby on Rails oder Play! eigene Vorgaben darüber wie Frontend-Artefakte von einer Webanwendung verwaltet und ausgeliefert werden. Im Folgenden wird Rails als populärer Vertreter eines Webframeworks für einige dieser Integrations-Strategien herhalten.

Blog-Post

Frontend Dependency-Management mit Bower

Paket Management hat sich in so ziemlich jedem populären Ökosystem der Softwareentwicklung in irgendeiner Form breit gemacht. Und das nicht zu Unrecht: In den seltensten Fällen wird in einem Software-Projekt bei null angefangen. Ob Frameworks oder kleinere Bibliotheken, ein Software-Projekt besteht in der Regel aus vielen einzelnen Bausteinen, die zu einem größeren Ganzen zusammen gesetzt werden. Die Abhängigkeiten von Bausteinen zu Anderen lassen sich bis zu einem bestimmten Grad zwar manuell verwalten, mit zunehmender Größe eines Projekts ist dies auf lange Sicht aber weder praktikabel noch wartbar. Genau an dieser Stelle helfen Dependency-Management Tools dabei Bausteine neu hinzuzufügen, bestehende zu aktualisieren oder deren Abhängigkeiten aufzulösen.

Blog-Post

Eureka Provisionierung mit AWS CloudFormation

Artikel

Logging konsolidieren und Performance gewinnen

Apache Log4j 2.0 ist eine Neuimplementierung von Log4j zeichnet sich vor allem durch einen höheren Durchsatz – dank asynchronem I/O – aus. Die Neuerungen des Frameworks machen Lust darauf, Log4j2 einzusetzen. Da drängt sich die Frage auf, wie die Vorzüge von Log4j2 in einem System genutzt werden können, wenn Teile noch Log4J 1, commons-logging oder Ähnliches verwenden.

Artikel

Von Markdown zu Published

Im Jahr 2012 begann innoQ, mit der Published-Reihe ein jährlich zu Weihnachten erscheinendes Buch herauszugeben, welches die Artikel von Mitarbeitern des vergangenen Jahres beinhaltet. Wurden die ersten beiden Ausgaben noch von einer Agentur per Hand erstellt, haben wir uns für 2014 das Ziel gesetzt, eine eigene Pipeline zu bauen, mit der das Buch erstellt werden kann. Dieser Artikel beschreibt nun den Aufbau und die Arbeit an der Pipeline und hinter der dritten Ausgabe von Published.

Artikel

Die Renaissance von Erlang

99,9999999% Verfügbarkeit über 20 Jahre

Artikel

Scalable Software Systems

Scalability has long been one of the hallmarks of quality IT systems. When we hear this term we usually associate it with an upward scalability of the system. Generally, it seems to be about how much more throughput and load our system can sustain through additonal RAM, CPU or extra machines. Often, however, downwards scalability is just as interesting, that is, the behaviour of the system when only very few resources are available. Such flexibility is very useful, for instance, if a complex system has to go through a variety of differently sized development, test and acceptance environments before it is provisioned in the live system.

Artikel

Grenzenlose Freiheit?

„Die Grenzen meiner Sprache bedeuten die Grenzen meiner Welt“, stellte schon Ludwig Wittgenstein fest. Auch wenn zwei Programmiersprachen Turing-vollständig sind und somit die gleichen Probleme lösen können, beeinflussen ihre Eigenschaften dennoch die Art und Qualität der Problemlösung. Mit der JVM steht uns heute eine Plattform zur Verfügung, bei der wir für jedes Problem die am besten geeignete Sprache wählen können. Auch wenn sich prinzipiell jede JVM-Sprache mit jeder anderen kombinieren lässt, gibt es einige Stolpersteine. In diesem Artikel wollen wir analysieren, wie gut sich Clojure mit Java verträgt.

Artikel

Kanonische Architektur-Evolution

Stereotypen, Konzepte und Konstruktionsregeln

Artikel

Wissen, was läuft

Mit gutem Logging kann man eine Menge über laufende Anwendungen oder gar Anwendungsverbunde erfahren. Eine entscheidende Einschränkung geht mit Logging einher: Logs sind nur ein Strom von eingetretenen Ereignissen. Um herauszufinden, wie gut eine Anwendung läuft, ist jedoch deren Zustand interessanter.

Artikel

Durchbruch

Der Markt für Heimautomatisierung erlebt derzeit große Veränderungen, denn die Zahl der Geräte der neuen Gattung „IoT-Gadgets” wächst von Tag zu Tag. Im Jahr 2022 wird jeder Durchschnittshaushalt mit ungefähr 50 solcher Gadgets ausgestattet sein, die sinnvolle kleine Teilaufgaben erledigen. Fraglich ist, wie nützlich deren Einsatz ist, wenn keine übergreifenden Anwendungsszenarien möglich sind. Die gute Nachricht ist: Es gibt Lösungen, um diese neuen Geräte nahtlos in ein umfassendes Smart Home zu integrieren.

Artikel

Welten verbinden

Einführung in die Heimautomatisierung mit openHAB

Artikel

Knigge für Softwarearchitekten

Diese Folge unserer Kolumne skizziert mögliche Reaktionen, die Sie bei Reviews (auch genannt Bewertung, Analyse oder Audits) von Softwaresystemen erleben können. Wir beschäftigen uns mit Gegnern und verschiedenen Stufen der Ablehnung.

Artikel

Service-oriented Architecture (technisch)

Mit dem Advanced Level standardisiert der iSAQB Module aus unterschiedlichen Bereichen, die Teilnehmer nach ihren Bedürfnissen kombinieren können. Dieser Artikel erläutert das Modul „SOA-T“, das für Softwarearchitekten mit einem Fokus auf den technischen Aspekten serviceorientierter Architekturen entwickelt wurde.

Artikel

Wie Sie effektive Webarchitekturen bauen

Ein Lehrplan für Architektenwissen rund ums Web

Artikel

Endlich viel erben?

Im Fahrwasser der Lambda-Funktionen werden in Java 8 Default-Methoden eingeführt, um Interfaces aus dem JDK abwärtskompatibel um neue Methoden zu erweitern. Hier schließen wir an den Artikel von Christian Robert (Default-Methoden in Java 8, JavaSPEKTRUM 03/2013) an. Wir klären bis zu welchem Grad Mehrfacherbung in Java einzieht und wie wir die Möglichkeiten und das Risiko für bestehende Systeme einschätzen.