Welche Überlegungen sollten für und gegen „Super“ -Seiten angestellt werden?

9

Mein Unternehmen erwägt, alle Tier-1-Anwendungen und -Sites (dh Top-End-Produktionsanwendungen) in einer umfassenden Codebasis zusammenzufassen.

Die Theorie besagt, dass ihre Berechtigungen, ihr Design und ihre Gesamtfunktionalität homogenisiert und zentral verwaltet werden können.

Ich habe keine Bedenken hinsichtlich dieses Ansatzes, da die Datenstrukturen, auf denen jede Anwendung basiert, sehr unterschiedlich sind, die Geschäftsregeln für jede Anwendung komplex und einzigartig sind und die gesamten Codebasen für die vorhandenen Anwendungen äußerst unterschiedlich und sehr vernachlässigt sind.

EDIT :

Die aktuelle Umgebung besteht aus drei ASP.Net 1.1-Sites, die seit dem ersten Schreiben kaum eine echte Liebe erfahren haben (hauptsächlich aufgrund des Fehlens erfahrener Entwickler im Unternehmen), und einer MVC2-Anwendung, die zuvor auch eine ASP.Net 1.1-Site war letztes Jahr aktualisiert. Wir schreiben ausschließlich in C #.

Das Unternehmen ist mit etwa 50 Mitarbeitern recht klein. Drei davon sind echte Entwickler. Das Management (auch das IT-Management) verfügt über keinen anderen IT-Hintergrund oder keine andere Erfahrung als das Projektmanagement von IT-Projekten (und daher einige Kenntnisse über Terminologie und geschäftliche Auswirkungen).

Bei den Anwendungen handelt es sich hauptsächlich um Online-Dienste zur Unterstützung der vom Unternehmen verkauften Produkte. Das Unternehmen verkauft keine Software direkt.

Um diese ganze Situation in einer einigermaßen spezifischen und beantwortbaren Frage zu formulieren: Was sind einige zwingende Gründe für und gegen den Versuch, alle Ihre Systeme unter den gegenwärtigen Bedingungen (z. B. alte Codebasis, komplexe Geschäftssysteme und Regeln) zu einer übergreifenden Lösung zusammenzuführen? )?

Phil.Wheeler
quelle
4
Die hier vorgestellte Frage ist äußerst offen und zu weit gefasst. Wenn Sie es eingrenzen können, könnte es eine bessere Frage sein.
ChrisF
@ ChrisF - Ich werde es versuchen. Könnten Sie vorschlagen, welche Art von Details Sie bevorzugen?
Phil.Wheeler
@Phil Du bist der OP, wonach suchst du?
George Stocker
@Phil Sie möchten auch einige Einzelheiten zur Sprache angeben, da es viele Tools gibt, die die Verwaltung von Anwendungen externalisieren (z. B. Sicherheit, Protokollierung, Konfiguration, Datenbankverbindung usw.)
Gary Rowe
1
Auf diese Weise können sie einen großen Schlammballen anstelle von 3 - 4 kleineren Schlammballen vernachlässigen, was auf diese Weise viel effizienter ist!

Antworten:

10

Schlechte Idee

Diese Reaktion basiert auf folgenden Annahmen:

  1. Es gibt viele ziemlich unterschiedliche Anwendungen, die homogenisiert werden
  2. Es gibt viele Teams, die an den verschiedenen Anwendungen arbeiten
  3. Es gibt keinen angesehenen und maßgeblichen Softwarearchitekten, der die Anwendungen aktiv verwaltet

Was passiert, wenn Sie weitermachen?

Höchstwahrscheinlich wird es eine erste konsolidierte Anstrengung geben, um alles unter einem einzigen Entwurfsansatz zusammenzuführen. Dies zeigt den enormen Aufwand, der erforderlich ist, damit alles gleich funktioniert, und kann als nicht funktionsfähig eingestuft werden.

Wenn es gedrückt wird, ist eine Art zentrales Repository erforderlich, das Konfigurationsdaten enthält (z. B. Sicherheitszugriff, Protokollierungsstufen usw.). An diesem Punkt wird jemand auf das Offensichtliche hinweisen und sagen

"Hey, warum rüsten wir diesen ausgelagerten Konfigurationsansatz nicht einfach für die alten Anwendungen nach, er geht viel schneller?"

und einen Moment später wird sich jemand anderes melden

"Und da wir sowieso umgestalten, warum wenden wir nicht einfach einen Designstandard für jede der Anwendungsdomänen an - die Webverarbeitung sieht so aus, die Verarbeitung von Geschäftsregeln wie diese und der Datenbankzugriff wie folgt."

bis endlich

"Oh, und es gibt hier eine Menge gemeinsamen Codes, warum nicht ein paar einfach gemeinsam nutzbare Bibliotheken zusammenstellen? Wir werden wahrscheinlich eine Art Integrations-Build benötigen, der beispielsweise in regelmäßigen Abständen ausgeführt wird, beispielsweise jede Nacht."

An diesem Punkt atmet jeder erleichtert auf, dass kein riesiger Monolith gebaut wurde.

Gary Rowe
quelle
(+1) nur für (1), der Rest der Beschreibung ist auch gültig ...
umlcat
3

Daran haben wir in meiner Firma gearbeitet. Ich denke, es ist möglich und es gibt offensichtliche Vorteile (Sie haben sie erwähnt), aber dies wird wahrscheinlich ein 5 bis 7-jähriges Projekt mit einem absoluten Minimum sein und erfordert im Grunde, dass alles neu geschrieben wird. Wenn Sie sich für so etwas abmelden können, dann würde ich sagen, machen Sie mit. Wenn nicht, dann machen Sie sich bereit für einen albtraumhaften Todesmarsch.

Morgan Herlocker
quelle
3

Google macht es, also ist es sicherlich möglich .

Dieser Link ist übrigens eine interessante Präsentation eines Googlers darüber, wie er seine Codebasis verwaltet, kontinuierlich integriert, testet usw.

Ohne ein ähnlich starkes Engagement für Tools, wie es Google getan hat, werden Sie wahrscheinlich in eine Welt voller Verletzungen geraten.

Die Schlüsselfrage hier ist warum ? Warum will die Geschäftsleitung das tun? Welche Einsparungen, Hebel oder sonstigen Vorteile erhoffen sie sich?

Wenn Sie genug von diesen Problemen so angehen können, dass Sie ihre Ziele erreichen, vermeiden Sie möglicherweise die einzelne Codebasis, die Sie betrifft, und erzielen dennoch das gleiche effektive Ergebnis.

sdg
quelle
Danke für diesen Link. Das Video hat mich überrascht, weil es sehr interessant war. (Obwohl diese Seite klarer machen muss, dass das Video mit der folgenden Diashow synchronisiert ist. Ich war fast frustriert, weil ich die Diashow nicht gesehen habe.)
Amy B
InfoQ bietet dort oben einige ziemlich gute Präsentationen. Sie sind eine Top-Site in meiner RSS-Liste.
SDG
2

Wir haben einen ähnlichen Prozess durchlaufen. Wir hatten ein Produkt, das es schon eine Weile gibt. Letztes Jahr haben wir ein weiteres Produkt eingeführt, das zu 95% dem ersten entspricht, mit 5% manchmal subtilen, aber signifikanten Unterschieden, wobei diese Unterschiede von einem separaten Team entwickelt und gepflegt werden müssen.

Als wir mit der Arbeit an dem neuen Produkt begannen, nahm das alte Team immer wieder Änderungen vor, die sich negativ auf diese 5% auswirkten, weil sie das neue Produkt nicht verstanden. Also haben wir diese 5% des Codes komplett gegabelt, wodurch wir die erste Version pünktlich fertigstellen konnten.

Dann wurden weitere Wartungsarbeiten eingeleitet, und wir stellten fest, dass wir häufig nahezu identische Änderungen an nahezu identischem Code vornahmen. Das alte Team hat jetzt auch ein viel besseres Verständnis für das neue Produkt, sodass wir das, was wir gegabelt haben, schrittweise wieder integrieren und effizientere architektonische Wege finden, um die Unterschiede auszudrücken.

Wenn Sie also sagen, dass Datenstrukturen unterschiedlich und die Codebasis insgesamt unterschiedlich ist, würde ich die Frage stellen, ob sie so sein müssen oder wie sie sich aufgrund der Zweckmäßigkeit des Augenblicks entwickelt haben. Natürlich müssen Sie unterschiedliche Geschäftsregeln und -anforderungen berücksichtigen, aber der Schlüssel besteht darin, diese Unterschiede in einem möglichst kleinen Modul zu isolieren. Wenn Sie häufig feststellen, dass Sie genau dieselbe Funktion für mehrere Kunden auf leicht unterschiedliche Weise für unterschiedliche Codebasen implementieren, kann die Konsolidierung wirklich hilfreich sein, und ich vermute, dass dies der Fall ist, oder das Management würde dies wahrscheinlich nicht vorschlagen.

Karl Bielefeldt
quelle
Einige gute Punkte. Der Code ist die Art und Weise, wie er größtenteils auf die Evolution zurückzuführen ist und nicht unbedingt auf Notwendigkeit oder bewährte Verfahren. Das Verständnis des Managements für das tatsächliche technische Umfeld ist jedoch nahezu gleich Null: Sie wissen ehrlich gesagt nicht, wie Programmierung und Software funktionieren. Sie haben keinen Einblick in die Unterschiede im Code, sodass ihre Entscheidungen nicht auf dem basieren, was für das Unternehmen architektonisch am besten ist.
Phil.Wheeler
2

Sie werden höchstwahrscheinlich nicht eine Vielzahl von Anwendungen in die gleichen Code konsolidieren können , Basis , weil das ganz etwas Mühe nehmen und für alte, vernachlässigte Programme könnte dies viel mehr Arbeit als zunächst erwartet.

Es ist jedoch nichts Falsches daran, alle Ihre Anwendungen im selben Code- Repository zu haben , in dem jede Anwendung einen eigenen Bereich hat. Auf diese Weise können Sie beispielsweise Online-Dokumentationen für die gesamte Codebasis in einer einzigen, konsistenten Ansicht erstellen lassen. Dies ist im Allgemeinen eine gute Sache, da Sie so viel Sichtbarkeit wie möglich wünschen.

Diejenigen, die dies entscheiden, sollten nachdrücklich überlegen, WARUM sie es tun möchten und wie viel Arbeit sie dafür aufwenden möchten, dorthin zu gelangen.


quelle
2

Wenn es eine einzige Sache gibt, die die Unternehmensentwicklung so ineffizient und teuer macht, ist es die Illusion, dass es möglich ist, ein einziges System zu entwickeln, das alles kann. Wenn Sie einen einzigen Produktbesitzer hatten, der alle Details des Systems versteht und alle Entscheidungen treffen kann, ohne eine Woche Besprechungen zu benötigen, könnte dies funktionieren, aber ich habe das noch nie gesehen.

Im Allgemeinen sind Sie besser dran, wenn Sie es eher wie eine Entwicklung für das Internet behandeln - erstellen Sie einfach Ihre eigene App und geben Sie zu, dass Sie in der Praxis keine Kontrolle über irgendetwas außerhalb Ihres eigenen Codes haben. Mit OAuth und einer einfachen API für Benutzereinstellungen und ein bisschen gemeinsam genutztem CSS erhalten Sie so ziemlich die Konsistenz, die Sie wahrscheinlich wünschen.

Dies ist der ursprünglichen Absicht von SOA ziemlich ähnlich, aber wenn Sie es so nennen, werden Sie am Ende nur eine andere Art von großem, kaum funktionierendem System haben, das versucht, alles zu tun.

Tom Clarkson
quelle
1

Mein erster Gedanke ist, dass dies eine totale PITA für Veröffentlichungen wäre.

Die Aufteilung in überschaubare Funktionsblöcke ist viel sinnvoller, wenn auch nur um alle Ebenen der Verwaltung und Genehmigung zu vermeiden.

Es wäre meiner Meinung nach viel einfacher, gemeinsame Dinge in Komponenten / Services aufzuteilen und auf diese Weise zu standardisieren.

ozz
quelle
0

Sie können dies anders angehen, indem Sie eine Integrationstechnologie wie Deliverance verwenden, um alle Ihre Webanwendungen auf ähnliche Weise zu thematisieren. Grundsätzlich ist jede Anwendung noch getrennt; Deliverance verwendet XSLT-Regeln, um ihre Ausgabe in eine statische HTML-Vorlage zu integrieren, die Sie entwerfen. Auf diese Weise kann ein relativ einfaches statisches HTML / CSS-Thema mit einem Minimum an Weh auf eine ganze Suite von Anwendungen angewendet werden.

asthasr
quelle