Mit dem immer stärker werdenden Wandel hin zu Microservice Architekturen in der Cloud (z.B. Amazon Web Services) kann man nicht mehr von "der" Architektur für ein "E-Commerce"-System sprechen. Du kannst eigentlich nur noch die rein funktionalen Bestandteile nennen, die du meist dafür brauchst. Wie diese aber zusammen komponiert/orchestriert werden, da ist jeder mehr oder weniger frei in der Gestaltung, je nachdem, was die konkreten Anforderungen an Skalierbarkeit, Performance, Verfügbarkeit, Konsistenz der Daten, Mengengerüst, ... sind. Du hast z.B. immer die folgenden funktionalen Bestandteile:
- eine oder mehrere Datenbank(en) mit Produktdaten
- eine oder mehrere Datenbank(en) mit Produktrelationen
- eine oder mehrere Datenbank(en) bzw. Suchindizes optimiert für User-Suchanfragen und um Produktlisten zu berechnen/generieren
- ein Endpoint, auf den User HTTP-Requests aufschlagen (z.B. meist "Gateway" genannt) zum Weiterleiten an die funktionalen Services zum Ausliefern von Seiten-Ressourcens (HTML, CSS, JavaScript, ...) und für AJAX Requests
- einen odere mehrere Services, die die User HTTP-Anfragen entgegennehmen und sich anderer Services/Datenkbanken bedienen, um diese zu verarbeiten und ein Ergebnis zu generieren
Wie das konkrete Deployment der einzelnen funktionalen Aspekte angeht, bist du auch wiederum frei. Bei sehr kleinen Systemen kann das alles ein einziger Monolith sein und eventuell nur horizontal skaliert sein. Bei komplexeren Systemen, wird sowohl horizontal als auch vertikal skaliert und du hast hunderte Services irgendwo laufen, die miteinander kommunizieren.
Dann ist noch die Frage, ob du Architektur "im Großen" oder "im Kleinen" meinst. Im Großen wäre genau das, was ich gerade beschrieben habe. Im Kleinen wäre dann z.B.: Wie sieht innerhalb eines der genannten funktionalen Aspekte das Design der Lösung aus. Also z.B.: Hab ich ein Data Access Object Layer vor der Persistenzschicht, benutze ich überhaupt relationale Persistenz, habe ich Data Transfer Objects, benutze ich Inversion of Control oder verdrahte ich alle Abhängigkeiten selbst im Code, wie teste ich das ganze, etc. etc. etc.
Also: "Architektur" ist ein seeeeeeeehr breiter und weiter Begriff.