Software Architektur als nicht-Entwickler verstehen - Quellen gesucht

thrillkill

Lieutenant
Registriert
Nov. 2004
Beiträge
762
Ich bin Produktmanager bei einem großen Web-Tech Unternehmen und will die Software Architektur als Ganzes besser verstehen.

Es geht mir nicht ums programmieren lernen. Basis Kenntnisse von Python o.ä. helfen mir nicht, ich will eher auf höherer Ebene verstehen, wie Softwarekomponennten bei großen System mit einander funktionieren.

Mir geht es um generelle Software Ansätze, also um Fragen wie: Warum sollte man Microservices nutzen? Was sind die Vorteile von AWS? Welche Komponennten wird Projekt X brauchen (und wie hoch ist entsprechend der Aufwand)?

Habt ihr Tipps?
 
thrillkill schrieb:
Welche Komponennten wird Projekt X brauchen (und wie hoch ist entsprechend der Aufwand)?

Habt ihr Tipps?

Lass das die Entwickler abschätzen, wie es in den agilen Entwicklungsstrategien üblich ist (z.B. Scrum)? Als Produktmanager sagst du, was du als Ergebnis haben willst (möglichst genau) und die Entwickler sagen dir was es "kostet" bzw. welche Varianten es gibt etc.

Ansonsten sind deine Fragen natürlich interessant, ich würde sie aber nur fallspezifisch beantworten wollen, da es immer Vor- und Nachteile von bestimmten Ansätzen gibt und Projekt X im Normalfall nicht für alle Ansätze ideal ist ;)

Bücher über diese Dinge idealisieren oftmals und verleiten dazu Ansätze falsch zu verwenden, einfach nur weil sie einem Glauben machen, dass der Ansatz das Non-plus Ultra ist.
 
Zuletzt bearbeitet:
Danke für deine Antwort.

Die Entscheidung, wie das gebaut wird, sollen natürlich die Entwickler weiterhin treffen aber es erleichtert die Kommunikation ungemein, wenn ich fundamental verstehe was warum gebaut wird und wie lange etwas dauert.

Beispiel: Entwickler entscheiden sich für mehr Microservices und APIs. Mit dem Wissen, dass man APIs auch gut für externe Partner verwenden kann, ergeben sich z.B. neue Business-Modelle. Ohne dieses Wissen würde das Thema von einem "tech-unwissenden" Produktmanager als Restrukturierung abgestempelt werden.

Selbst einschätzen zu können wie lange etwas dauert, erleichtert das Erwartungsmangement mit Stakeholdern ohne jedes Mal das Tech-Team bemühen zu müssen. Da geht es nur um grobe Erst-Einschätzungen (brauchen wir eine Woche oder ein Jahr dafür?).
 
Zuletzt bearbeitet:
max_1234 schrieb:
Das bringt mir als nicht-Entwickler leider nicht viel. Zu abstrakt.

Ich Suche sowas wie: Das ist eine aktuelle Onlineshop Architektur, das seine Komponennten, das tun die Komponennten, mit diesen Sprachen/Frameworks werden sie heutzutage geschrieben und so interagieren sie miteinander. Auf einem Level geschrieben, dass kein Wissen über programmieren erfordert zB über Objektorientierung.
 
Lass Dir von Deinen Entwicklern einfach immer erklären warum sie eine bestimmte Entscheidung getroffen haben. Im Laufe der Zeit wirst Du so ziemlich viel lernen und Hintergründe + Zusammenhänge verstehen.
 
Ich glaube nicht, dass Du so etwas finden wirst. Wieso sollte sich einer die Mühe machen und relativ komplexen Content für Laien aufschreiben. Entweder lernst Du entwickeln, um sowas auch nur halbwegs abschätzen zu können oder siehst ein, dass Du abhängig bist von den Entwicklern. Am Ende hat jeder Berufszweig seine Berechtigung und seine Aufgabengebiete.

Schuster, bleib bei deinen Leisten.
 
Zuletzt bearbeitet:
Ich sehe es auch skeptisch, dass eine erste grobe Abschätzung ohne Entwicklungskenntnisse funktioniert. Zumindest nicht ohne Erfahrung und technisches Know-How.

Bzgl. Online-Shops gibt es verschiedene Anbieter, die Sprachen wie JavaScript, J2EE, Python, etc. verwenden.
Ein Buch darüber ist mir auch nicht bekannt. Und beim Einsatz eines neuen Systems ohne Kenntnisse darüber zu haben ist die Zeitabschätzung wahrscheinlich sowieso fast nicht sinnvoll machbar. Der relative Fehler kann dabei mehr als 100%


Mein Tipp wäre ggf. eine Datenbank aufzubauen um das Schätzen zu erleichtern. Die Aufgabe ist aber zeitintensiv, komplex und auch kostspielig. Was in der Datenbank in etwa reinkommen würde wäre eine liste von Anforderungen, deren geschätzten Aufwände, die verwendete Technologie und letztendlich der Ist-Vergleich. Die Daten könntet ihr dann im nächsten Projekt abrufen.

Ansonsten kann ich nur den Begriff "E-Commerce" mal in den Raum werfen. Vielleicht findest du darunter ein zutreffendes Buch.


Zu Vor- und Nachteilen von AWS oder anderen Technologien dürftest du aber leicht fündig werden.
 
Zuletzt bearbeitet:
Cloud bei netflix: http://de.slideshare.net/adrianco/netflix-global-cloud
Microservices@Netflix: http://de.slideshare.net/stonse/microservices-at-netflix

Generell wirst du relativ viel Informationen finden, aber da das Richtige zu finden ist extrem schwer.
Ansonsten setz dich doch mit den Entwicklern zusammen und sprich das mit Ihnen durch. Du willst verstehen warum sie das so machen und warum diese Technologie (Wertschätzung der Mitarbeiter *hust*) Und frag ob sie dir Input liefern können damit du es besser verstehst.

Am besten du suchst dir mal die aktuellen global Player raus und suchst speziell nach Vortägen von Ihenen oder Slides zu dem Thema. So bekommst du schnell einen Überblick.

mfg

EDIT: der d.punkt-Verlag hat in seiner Adventsaktion auch ein Buch über Microservices zum freien Download. http://www.dpunkt.de/advent.php
 
Zuletzt bearbeitet:
error schrieb:
Cloud bei netflix: http://de.slideshare.net/adrianco/netflix-global-cloud
Microservices@Netflix: http://de.slideshare.net/stonse/microservices-at-netflix
EDIT: der d.punkt-Verlag hat in seiner Adventsaktion auch ein Buch über Microservices zum freien Download. http://www.dpunkt.de/advent.php
Danke, das ist von der Tiefe her was ich suche!

Warum mit Entwicklern reden nur bedingt hilft:
- Ich will mich intensiv weiterbilden, sprich 10-20% meiner Arbeitszeit, soviel kann/ will ich die Entwickler nicht in Beschlag nehmen.
- Ich habe oft Team-übergreifende Projekte und muss erst herausfinden, welche Teams betroffen sein könnten. Bei fast tausend Entwicklern ist Durchfragen nicht effektiv - eine allgemeine Gesamtübersicht (insbesondere für potentielle neue Themen) ist hilfreich.

Mein rudimentäres Wissen über html/css, javascript etc. hat mir in den letzten Jahren kaum etwas gebracht. Zu verstehen wie die Komponennten arbeiten und was sie können dagegen schon. Wenn ich bei einem neuen Projekt grob weiß, welche Teams betroffen sind und abschätzen kann (selbst drei Mal schlechter als ein Entwickler), wie lange etwas dauert, hilft das enorm.
Ich glaube, dass das coden selbst für nicht-coder überschätzt wird. Fundamentale Zusammenhänge verstehen ist mMn wichtiger, das ist zumindest meine Erfahrung.
 
Wenn es davon mehr sein soll:
Twitter-Architektur: http://highscalability.com/blog/2013/7/8/the-architecture-twitter-uses-to-deal-with-150m-active-users.html
Google-Technik: http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en/us/people/jeff/Berkeley-Latency-Mar2012.pdf
Yegge's rant (Über Google-Architektur Vs Amazon): https://gist.github.com/chitchcock/1281611

Ansonsten kannst du dir gerne ansehen, wie Amazon und Google arbeiten. Beide haben unterscheidliche Auffassung von Ihren "Diensten". Dazu mehr in Yegges rant.
TL;DR: Amazon macht alles sofort über API nutzbar. Google nicht.

EDIT: Highscalability zielt genau darauf ab, hoch skalierende System zu modellieren und zu beleuchten. Es wird sehr technisch teilweise, aber das musst du selbst entscheiden.
 
Zurück
Oben