WEWNĄTRZ ŚRODOWISKA URUCHOMIENIOWEGO

Jeden proces.
Przejrzysta podstawa.

ContentLIBRE składa swoje środowisko uruchomieniowe w jednym procesie systemu operacyjnego. Granice są jawne, więc Twoje rozszerzenia mają wyraźne miejsce, do którego należą.

Środowisko uruchomieniowe w skrócie.

Diagram łączy wspólną podstawę opisaną w architekturze i README z typowanym API opisanym jako zbudowane w API-DESIGN.md. Nie zakłada klastrowania ani drugiego repozytorium publikacyjnego.

Żądania przechodzą przez granicę bezpieczeństwa do Sling i typowanego API, które współdzielą jedno repozytorium Jackrabbit Oak. Kompozycja wybiera magazyn TAR lub Mongo.
Uproszczony diagram z dokumentacji. Warianty magazynu to decyzje podejmowane przy kompozycji; nie są to dwa repozytoria w jednym procesie.

PODSTAWA

Każda warstwa ma swoje zadanie.

Apache Felix

Framework OSGi hostuje bundle i usługi środowiska uruchomieniowego. Rozszerzenia projektu dołączają do tego frameworka, zamiast tworzyć osobny stos aplikacyjny.

Apache Sling

Zasoby, rozwiązywanie servletów i renderowanie HTL łączą treści z HTTP. Standardowa warstwa treści pozostaje odrębna od typowanego API.

Jackrabbit Oak

Jedno repozytorium przechowuje treści. Uprawnienia repozytorium pozostają istotne nawet wtedy, gdy żądanie zostało dopuszczone na granicy HTTP.

Magazyn wybierasz w chwili kompozycji.
Kompozycja Magazyn repozytorium Istotna granica
libre-tar SegmentNodeStore / TAR Domyślna kompozycja opisana w dokumentach projektu.
libre-mongo DocumentNodeStore / MongoDB Osobny agregat; zweryfikuj jego rozruch i zachowanie operacyjne względem wybranego wydania.
libre-base Brak NodeStore Podstawa dla projektów pochodnych do wyboru magazynu; sama w sobie nie jest uruchamialną konfiguracją magazynu.

Zmiana magazynu to migracja.

Nie łącz funkcji magazynu TAR i Mongo. Przeniesienie istniejącego wdrożenia między nimi wymaga przeniesienia i zweryfikowania treści repozytorium oraz plików binarnych. To nie jest przełącznik w konfiguracji.

Zrozum kompozycję, zanim ją rozszerzysz.

Kontrole w czasie budowania

Analiza funkcji sprawdza importy pakietów, capabilities, zduplikowane nazwy bundle’i i składnię repoinit.

Kontrole w czasie rozruchu

Funkcja może się rozwiązać, choć nie każda usługa się aktywuje. Zimny rozruch i testy integracyjne odpowiadają na inne pytanie niż analizator.

Granice wdrożenia

Zainstalowany kod jest zaufany. Modułowość OSGi nie jest piaskownicą, a sama mniejsza liczba bundle’i nie jest gwarancją bezpieczeństwa.

Dopasuj środowisko uruchomieniowe do projektu.

Dodawaj jawnie, dokumentuj zależności i weryfikuj powstałą kompozycję.