Samstag, 5. Mai 2007

SOA – warum APIs auch intern wichtig sind

Das Prinzip der Service Orientated Architecture (SOA) findet sich heutzutage in jeder wirklich skalierbaren und guten Webapplikation wieder. Auch sevenload setzt auf SOA. Bevor ich jedoch davon erzählen kann, möchte ich zunächst die SOA-Basics erklären.

Im Allgemeinen geht es dabei darum, einzelne Funktionen der Software so gründlich es geht voneinander abzukapseln und in unabhängige Services (Komponenten) zu verpacken. Diese kommunizieren dann über eine klar definierte Schnittstelle (API) untereinander und ermöglichen so eine sehr saubere und parallele Entwicklung.

Das ist ein bißchen wie bei großen Lego-Sets aus früheren Zeiten: Erst baute man den Dino-Kopf, dann den Dino-Rumpf, dann hat man beides zusammengesteckt. Das Gute daran war: Ich konnte den Kopf bauen, mein Sandkastenfreund gleichzeitig den Rumpf. Wir mussten uns nur auf die Verbindungsteile einigen.

Zurück zum Code: Lediglich die Schnittstelle (Input & Output) eines Service muss also geregelt und definiert sein – wie Vorgänge intern abgewickelt werden, ist dem Entwickler der einzelnen Komponente selbst überlassen.

Die API (Schnittstelle) der Services kann sehr vielfältig gestaltet sein – in ihrer einfachsten Form programmintern als Methoden, in ihrer ausgeprägten Form z.B. als XML-API. Protokolle wie XML-RPC oder SOAP sind speziell für die Kapselung/Übersetzung von Methodenaufrufen in XML entwickelt und optimiert worden. Eine XML-API bietet zwei große Vorteile:

  1. Sie ist sprachunabhängig und ermöglicht es, einzelne Services in völlig verschiedenen Programmiersprachen zu entwickeln (PHP, Ruby, Java, Python, C++, .NET, …)
  2. Sie vereinfacht das Verteilen/Skalieren der Services auf verschiedene Server und Umgebungen, da sie problemlos via HTTP transportiert werden kann.

Viele machen sich hierbei um den XML-Overhead Sorgen, denn XML-Daten (und im speziellen XML-RPC und SOAP) weisen gegenüber binären Formaten einen erheblich größere Datenmenge auf, da sie im Klartext (menschenlesbar) gefasst sind und nicht nur Daten, sondern jedes Mal auch Strukturinformationen beinhalten. On-The-Fly-Kompressionsmethoden wie gzip schaffen hier jedoch Abhilfe.

Doch Achtung – SOA ist ein Buzzword! Und wie üblich, werden diese oft falsch interpretiert oder hastig angeführt, ohne dass die Software dahinter ein ernsthaftig Service Oriented ist. SOA geht über die gewöhnliche Modularisierung hinaus und setzt wirklich auf strikt voneinander unabhängige und getrennte Services.

In den nächsten Tagen werde ich hier zeigen, wie und warum sevenload auf SOA setzt.

Ein Pingback/Trackback:

  1. Gravatar
    Thomas Bachem » Archiv » Die sevenload-Systemarchitektur | Blog

    […] Remo Puls: “Viele Dank für die transparente Erklärung…” zu SOA – warum APIs auch intern wichtig sind […]


Ein Kommentar:

  1. Gravatar
    Remo Puls

    Viele Dank für die transparente Erklärung von SOA. Als normaler User macht man sich keine Vorstellung darüber, was sich hinter diesen Begriff eigentlich versteckt.


Einen Kommentar schreiben


Abonniere ohne zu kommentieren

Powered by WordPress.