Wie zerlegt man eine Rails-App in ein kleines Ökosystem von kleinen Apps?

8

Mein Team hat eine Reihe von Modulen in einer monolithischen Rails-App für den internen Gebrauch entwickelt. Die Module sind zum Beispiel Urlaubsantrag, Mitarbeiterinformationen, Aufgaben / Aufgaben usw. Jedes Modul hat seinen eigenen Zweck, ist aber irgendwie mit allgemeinen Informationen wie Mitarbeiterprofil und Benutzerauthentifizierung verknüpft. Jedem Modul ist ein Entwickler zugewiesen, und sie stellen Code für die gleiche Rails-App fest. Derzeit ist es sehr schwierig, den Code und die Skalierung zu verwalten. Jetzt forsche ich daran, die App in kleine verteilte Apps zu zerlegen und sie zu einem Ökosystem zu machen. Hier ist das Konzept, nach dem ich suche:

  • Es sollte eine Master-App geben, die die Ansichten anderer Client-Apps verwaltet. Besser noch, es fungiert als Plattform für andere Client-Apps, um sich daran anzumelden. Das Personal meldet sich bei dieser Master-App an, um auf die Client-App zuzugreifen.
  • Die Master-App sollte Ansichten der Client-App mit AJAX oder anderen Methoden darstellen (nicht festgelegt).
  • Obwohl ich die Apps zerlegen möchte, sollte jede App dennoch in der Lage sein, Ressourcen / Daten wie das Mitarbeiterprofil von anderen Client-Apps im Ökosystem abzufragen.
  • Eigentlich habe ich mich nicht über die Interaktion der einzelnen Apps entschieden. Denken zu uns RESTful (nicht entschieden).
  • Es sollte eine Entwicklungsumgebung unterstützen, in der jeder Entwickler jede App unabhängig entwickeln kann. Daher sollten sie ihren eigenen Code in ihrem eigenen Git Repository aufbewahren. Dies ist wahrscheinlich der Hauptzweck der Zerlegung der App an erster Stelle.

Ich lese Service-Oriented Design mit Ruby on Rails Buch, aber es scheint, als ob sie sich darauf konzentrieren, eine App in kleine verschiedene Dienste zu zerlegen, während ich kleine verschiedene Apps haben möchte. Ich frage mich nur, ob es noch andere Möglichkeiten gibt.

Entschuldige eine lange Frage und bitte zu viel. Ich möchte nur wissen, ob du in der gleichen Situation warst und mich zu einigen Artikeln, Gemeinschaften und Büchern führen kannst, damit ich weiter an meiner Forschung arbeiten kann.

    
chawarong 27.03.2012, 15:32
quelle

1 Antwort

4

Ah die Freuden des Refactorings. Es kann ein schwieriger Tanz sein, eine Anwendung in logische Gruppen zu strukturieren, so dass Teile entkoppelt werden können.

Ich würde dringend vorschlagen, Engines mit dem Engines vs Mountable ist sehr informativ. Auf diese Weise können Sie eine Mini-Rails-App (auch als Engine bezeichnet) erstellen, die als Schmuckstück verpackt werden kann. Die benutzerdefinierten Engine-Edelsteine ​​werden in einer Rails-App gebündelt und bieten eine vollständige Reihe konfigurierbarer Funktionen (Modelle, Controller, Ansichten usw.).

Die Nützlichkeit von serviceorientierter Architektur hängt stark davon ab, welche Art von Daten Sie herumschieben und ziehen. Das heißt, Rails ist wirklich für RESTful verdrahtet, so dass Sie mit dieser Route viel Geld für das Geld bekommen.

    
mguymon 28.03.2012, 02:12
quelle