Zum Inhalt

API-Architektur

SystemΓΌbersicht

  ╔═══════════════════════════════════════════════════════════════════════╗
  β•‘                            Internet                                   β•‘
  β•‘                                                                       β•‘
  β•‘  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β•‘
  β•‘  β”‚    Sachpool-Portal     β”‚         β”‚  Drittsysteme            β”‚     β•‘
  β•‘  β”‚    sachpool.de         β”‚         β”‚  (Partner, Tools)        β”‚     β•‘
  β•‘  β”‚                        β”‚         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β•‘
  β•‘  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚                    β”‚ Port 443 (HTTPS)    β•‘
  β•‘  β”‚  β”‚  MySQL           β”‚  β”‚                    β”‚                     β•‘
  β•‘  β”‚  β”‚  (Portal-DB)     β”‚  β”‚                    β”‚                     β•‘
  β•‘  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚                    β”‚                     β•‘
  β•‘  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β”‚                     β•‘
  β•‘              β”‚ Port 443 (HTTPS)                β”‚                     β•‘
  β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•ͺ═════════════════════════════════β•ͺ═══════════════════╝
                 β”‚              API-Key             β”‚
                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚ Port 80 / 443
               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
               β”‚                Ubuntu Server                         β”‚
               β”‚            api.sachpool.de                           β”‚
               β”‚                                                      β”‚
               β”‚    nginx (Port 80/443) Β· PHP Β· Let's Encrypt         β”‚
               β”‚                                                      β”‚
               β”‚    Eingehend erlaubt: 22 (SSH), 80 (HTTP), 443       β”‚
               β”‚    Kein weiterer eingehender Traffic                 β”‚
               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                        β”‚ Port 2638 (ausgehend)
               ╔════════════════════════β•ͺ════════════════════════════╗
               β•‘    Internes Firmennetz  β”‚                            β•‘
               β•‘                        β”‚                            β•‘
               β•‘        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β•‘
               β•‘        β”‚                                  β”‚         β•‘
               β•‘  β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”     β•‘
               β•‘  β”‚  Salia-DB        β”‚   β”‚  Salia-DB          β”‚     β•‘
               β•‘  β”‚  (Produktiv)     β”‚   β”‚  (Test)            β”‚     β•‘
               β•‘  β”‚  SQL Anywhere    β”‚   β”‚  SQL Anywhere      β”‚     β•‘
               β•‘  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β•‘
               β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

Netzwerk & Ports

Richtung Port Protokoll Zweck
Eingehend 22 SSH Administration / Deployment
Eingehend 80 HTTP Let's Encrypt, Redirect auf HTTPS
Eingehend 443 HTTPS API-Traffic
Ausgehend 2638 TCP Verbindung zur Salia-DB im Firmennetz

Kein weiterer ein- oder ausgehender Traffic ist erlaubt.

Datenbanken

Datenbank Umgebung Verbindung
Salia-DB Produktiv Produktion Port 2638 ins interne Firmennetz
Salia-DB Test Entwicklung / QA Port 2638 ins interne Firmennetz

Komponenten

Komponente Beschreibung
nginx Reverse Proxy, TLS-Terminierung (Let's Encrypt)
PHP API-Logik, SQL→JSON-Mapping
Salia-DB SQL Anywhere-Datenbank, erreichbar ΓΌber Port 2638 im internen Firmennetz
MySQL (Portal-DB) Eigene Datenbank des Sachpool-Portals – getrennt von der Salia-DB
API-Key Authentifizierung pro Drittsystem/Client

Aktuell implementierte Schnittstellen

Endpunkt Zweck
POST /token/validate Login-Token eines Drittsystems prΓΌfen

Ausblick: Erweiterung der API

Datenbankentlastung von Transconnect

Perspektivisch soll der API-Server Datenbankverwaltungsaufgaben ΓΌbernehmen, die derzeit von Transconnect erledigt werden. Ziel ist es, Transconnect zu entlasten und Datenbankoperationen zentral ΓΌber die API zu kapseln:

  • Einheitliche Zugriffskontrolle auf Datenbankebene
  • Versionierbare Schnittstellen statt direkter DB-Verbindungen aus Drittsystemen
  • Bessere Nachvollziehbarkeit (Logging, Fehlerbehandlung an einem Ort)

TODO

Konkrete Aufgaben, die von Transconnect auf die API migriert werden sollen, noch festhalten.

BiPRO-UnterstΓΌtzung

FΓΌr Partneranbindungen nach Branchenstandard: siehe BiPRO-Integration.