Fähigkeiten

Wir sehen Software Entwicklung als Handwerk. Weil das so ist, legen wir besonderen Wert auf die Werkzeuge, die wir nutzen. Das Arbeiten mit Software erfordert ein kontinuierliches Weiterentwickeln und Lernen, da die gesamte Branche in stetigem Wandel ist. Das gilt sowohl für unseren Blick auf die Oberflächen, mit denen die Nutzer mit Computersystemen interagieren, als auch für die gesamte Systemarchitektur.

Während es vor 25 Jahren noch reichte, als Frontend ein bisschen HTML zusammenzufügen, erwarten wir heute Interfaces, die sich nahtlos und flüssig in den jeweiligen Kontext eingliedern. Dies wird durch moderne Tools ermöglicht wie beispielsweise react und react native, meteor, angular2 und ionic2 - um nur ein paar zu nennen.

Um benutzerorientierte Frontends ständig weiter zu entwickeln und ggf. durch zeitgemäße Technologien zu ersetzen, fokussieren wir uns beim Erstellen von Backends auf eine serviceorientierte Systemarchitektur. Auf technischer Ebene benutzen wir dafür Sprachen wie golang, node.js, PHP und Python zusammen mit Frameworks wie TensorFlow, Express.js, Symfony2 , Backendtechnologien wie Redis, Elastic Search oder RabbitMq oder auch Blockchainlösungen wie Ethereum oder Hyperledger. Diese Zusammenstellung von mehr oder weniger bekannten Schlagworten kann für den Nicht-Programmierer so übersetzt werden, dass wir uns nicht auf spezielle Technologien, Frameworks oder Sprachen beschränken, sondern immer die entsprechenden Tools zur bestmöglichen Problemlösung benutzen. Darüber hinaus glauben wir auch, dass erprobte, architektonische Strukturen als starkes Fundament dienen um Software zu kreieren, die sich weiter entwickeln kann und so über eine lange Zeit den Anforderungen des Marktes oder veränderten Ansprüchen gerecht werden kann.

Auf eine der stärksten dieser Strukturen, mir denen wir arbeiten, möchten wir noch etwas genauer eingehen:

Microservices

In der traditionellen Software Entwicklung waren wir gewohnt, eine einzelne Anwendung aus einem Guss zu erstellen, die gleich alle erforderlichen Funktionen und Module beinhaltet hat. Gerade bei umfangreichen Anwendungen ergeben sich hieraus aber Probleme bei der Skalierbarkeit, Möglichkeiten der Integration mit anderen Anwendungen und Wartbarkeit. Die Lösung ist, eine modulare Struktur ohne starke Bindung der einzelnen Komponenten zu nutzen: die Microservice-Architektur. Hierbei werden einzelne Backend-Funktionalitäten in voneinander unabhängig betriebene Softwaredienste aufgeteilt, die alle eine abgegrenzte Verantwortlichkeit im Gesamtsystem haben, die

- eine HTTP-Schnittstelle für die Kommunikation bereitstellen
- geringe Übertragungsraten durch Datenformate wie JSON haben
- Authentifizierung und Autorisation nutzen zB über JWT ermöglichen.

Durch die Aufteilung in unabhängige Dienste ist es nicht nur einfacher geworden, neue Komponenten hinzuzufügen, sondern es wurde auch einfacher, Software zu
- skalieren
- zu warten
und
- zu erweitern.

Gleichzeitig wurden Anwendungen damit auch weitaus robuster. Wenn ein Dienst ausfällt, betrifft das nicht mehr die gesamte Software, sondern nur ein spezielles Feature. Genau diese Architektur erlaubt Unternehmen wie Amazon und Netflix, sich so rapide zu entwickeln und immer neue Erweiterungen zu testen.

Typische Services, die anwendungsübergreifend verwendet werden könnten wären zum Beispiel:
- Authentifizierung
- Verwaltung von Benutzeraccounts
- Datenspeicherung
- Bildbearbeitung
- Benachrichtigungen (bspw. mobile Push Notifications / Emails / etc.)
- Bewertungen
- Kommentare
- und viele weitere...

Inside delodi

//Was uns beschäftigt

Besuche uns auf Medium

Unser Chat

//Lass uns gemeinsam etwas entwickeln

Kontaktiere uns