Welche Fragen können bei den meisten Cases gestellt werden?
Art der Anwendung
Ist es eine mobile App, eine Web-App oder beides?
Wichtige Funktionen
Was sind die Hauptfunktionen der Anwendung?
Benutzerinteraktionen und -anzahl
Wie viele tägliche oder monatliche aktive Nutzer gibt es?
Welche Funktionen werden am häufigsten genutzt?
Skalierung und Leistung
Wie viele Benutzer/Freunde/Kunden/Mitglieder/etc. kann ein Nutzer haben?
Wie viele Transaktionen oder Interaktionen werden täglich erwartet?
Datenmanagement
Werden die Daten in Echtzeit verarbeitet oder gibt es Verzögerungen?
Welche Art von Daten (Text, Bilder, Videos) wird verarbeitet?
Kommunikation zwischen Diensten
Wie kommunizieren die verschiedenen Dienste (synchron, asynchron)?
Sicherheit und Datenschutz
Gibt es besondere Sicherheitsanforderungen?
Müssen Datenschutzgesetze wie GDPR oder CCPA beachtet werden?
Zuverlässigkeit und Fehlerbehandlung
Wie gehen wir mit Dienstunterbrechungen oder Fehlern um?
Wie stellen wir sicher, dass das System auch bei Teilausfällen funktionsfähig bleibt?
Zusätzliche Features und Anforderungen
Gibt es spezielle Anforderungen wie Echtzeit-Updates, Caching, Ratenbegrenzung?
Anwendungsbeispiele
Welche spezifischen Szenarien und Use Cases müssen unterstützt werden (z.B. Gruppenchat, Zahlungen, Reservierungen)?
Worauf sollte geachtet werden?
Architekturansätze
Skalierbarkeit
Datenbanken
Sicherheit
Fehlerbehandlung und Zuverlässigkeit
Leistung
API Design
Benutzerschnittstellen
Was kann bei der Skalierbarkeit beachtet werden?
Horizontale Skalierung: Hinzufügen weiterer Instanzen von Diensten oder Servern, um Last zu verteilen.
Vertikale Skalierung: Hinzufügen von Ressourcen (CPU, RAM) zu einer bestehenden Instanz.
Load Balancing: Verteilung des Traffics auf mehrere Server, um die Last zu verteilen und die Verfügbarkeit zu erhöhen.
Caching: Verwendung von Caches (z.B. Redis, Memcached) zur Verringerung der Latenz und Entlastung der Datenbanken.
Was kann bei Datenbanken beachtet werden?
SQL-Datenbanken: Strukturierte Daten, ACID-Eigenschaften, gut für relationale Daten.
NoSQL-Datenbanken: Schemaflexibel, gut für unstrukturierte oder semi-strukturierte Daten, hohe Skalierbarkeit.
Sharding: Aufteilen der Datenbank in kleinere, unabhängige Einheiten zur besseren Skalierung.
Was kann bei der Sicherheit beachtet werden?
Authentifizierung und Autorisierung: Sicherstellen, dass nur berechtigte Benutzer Zugang haben (OAuth, JWT).
Datenverschlüsselung: Sicherung der Daten bei der Übertragung und Speicherung.
Rate Limiting: Begrenzung der Anzahl von Anfragen pro Zeiteinheit, um Missbrauch zu verhindern.
Was kann bei der Fehlerbehandlung und Zuverlässigkeit beachtet werden?
Retry-Mechanismen: Automatisches Wiederholen fehlgeschlagener Anfragen.
Circuit Breaker Pattern: Verhindert, dass ein Fehler in einem Dienst das gesamte System beeinflusst.
Fallback-Strategien: Bereitstellen von Alternativen, wenn ein Dienst ausfällt.
Was kann bei der Leistung beachtet werden im Bezug auf Caching?
Definition: Temporäre Speicherung von Daten, um schnelleren Zugriff auf häufig genutzte Daten zu ermöglichen.
Techniken:
In-Memory Caches: Verwendung von Lösungen wie Redis oder Memcached.
CDNs (Content Delivery Networks): Verteilen von statischen Inhalten (Bilder, Videos) auf Servern weltweit, um die Latenz zu reduzieren.
Was kann bei der Leistung beachtet werden im Bezug auf Datenbank-Optimierung?
Indexing: Erstellen von Indizes auf häufig abgefragten Spalten, um die Abfragegeschwindigkeit zu erhöhen.
Query Optimization: Analysieren und Optimieren von SQL-Abfragen zur Reduzierung der Ausführungszeit.
Database Sharding: Aufteilen einer großen Datenbank in kleinere, besser handhabbare Teile, um die Last zu verteilen.
Read Replicas: Erstellen von Replikaten der Datenbank, um Leseanforderungen zu verteilen und die Schreiblast zu reduzieren.
Was kann bei der Leistung beachtet werden im Bezug auf Asynchrone Verarbeitung?
Definition: Verarbeitung von Aufgaben im Hintergrund, ohne den Benutzer warten zu lassen.
Message Queues: Verwendung von Systemen wie RabbitMQ oder Apache Kafka, um Nachrichten zwischen Diensten asynchron zu übermitteln.
Task Queues: Verwendung von Systemen wie Celery, um Aufgaben im Hintergrund zu verarbeiten.
Was kann bei der Leistung beachtet werden im Bezug auf Load Balancing?
Definition: Verteilung von eingehenden Anfragen auf mehrere Server, um die Last zu verteilen und Ausfallsicherheit zu gewährleisten.
Round Robin: Einfacher Algorithmus, der Anfragen der Reihe nach auf Server verteilt.
Least Connections: Verteilt Anfragen auf Server mit den wenigsten aktiven Verbindungen.
IP Hash: Verwendet die IP-Adresse des Clients, um einen Server auszuwählen, was zu einer besseren Sitzungskohärenz führt.
Was kann bei der Leistung beachtet werden im Bezug auf Content Delivery Networks (CDNs)?
Definition: Ein Netzwerk von Servern, die geografisch verteilt sind und statische Inhalte bereitstellen.
Vorteile: Reduzierung der Latenz, da Inhalte vom nächstgelegenen Server zum Benutzer geliefert werden.
Was kann bei der Leistung beachtet werden im Bezug auf Compression?
Definition: Reduzierung der Größe von Daten, die über das Netzwerk gesendet werden.
HTTP Compression: Verwendung von Gzip oder Brotli zur Komprimierung von HTML, CSS und JavaScript.
Image Compression: Optimierung von Bildern durch Formate wie WebP.
Was kann bei der Leistung beachtet werden im Bezug auf Database Connection Pooling?
Definition: Wiederverwendung von Datenbankverbindungen, anstatt bei jeder Anfrage eine neue Verbindung zu erstellen.
Vorteile: Reduzierung der Latenz und des Overheads durch Verbindungsaufbau.
Beispiel Design einer Social Media App?
Fall: Design einer Social Media App
Caching: Implementieren eines Caching-Mechanismus mit Redis, um häufig angezeigte Beiträge und Benutzerprofile zwischenzuspeichern.
Datenbank-Optimierung: Indizieren der Tabellen für Benutzerprofile und Beiträge, um schnelle Abfragen zu gewährleisten.
Asynchrone Verarbeitung: Verwendung von RabbitMQ, um das Hochladen und Verarbeiten von Bildern und Videos asynchron zu gestalten.
Load Balancing: Einsatz eines Load Balancers (z.B. NGINX oder AWS ELB), um den eingehenden Traffic auf mehrere Backend-Server zu verteilen.
CDN: Nutzen eines CDN wie Cloudflare, um statische Inhalte wie Bilder und Videos schneller zu den Benutzern zu bringen.
Compression: Aktivieren von Gzip-Komprimierung für HTML, CSS und JavaScript, um die Ladezeiten zu reduzieren.
Database Connection Pooling: Implementieren eines Connection Pools für die Datenbank, um die Effizienz der Datenbankzugriffe zu verbessern.
Optimierung der Anwendungslogik: Verwenden von Profiling-Tools, um Engpässe im Code zu identifizieren und zu optimieren.
Welche fragen können oft in Cases gestellt werden?
Last changed6 months ago