Skip to content

Commit

Permalink
Componenten uitleg
Browse files Browse the repository at this point in the history
  • Loading branch information
rubenvdlinde committed Aug 5, 2024
1 parent 54fbfd2 commit e06a673
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 21 deletions.
32 changes: 24 additions & 8 deletions docs/Componenten.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,33 @@
## Basis Componenten
In de kern bestaad Open Catalogi uit een viertal basis componenten

- Een publicatie platform waarin de burger kan zoeken
- Een beheer interface waarin medewerkers publicaties en configuratie kunnen beheren
- Een beheer API die de beheer interfae faciliteerd
- Een zoeken API de het publicaite platform faciliteerd
- Een _publicatie platform_ waarin de burger kan zoeken
- Een _beheer interface_ waarin medewerkers publicaties en configuratie kunnen beheren
- Een _beheer API_ die de beheer interfae faciliteerd
- Een _zoeken API_ de het publicaite platform faciliteerd

De bijde API's maken daarbij gebruik van data opslag, in de meest simpele form is dat
- Objecten opslag voor publicaites, metadata over documenten, thema's, catalogi etc
- Zoek Index voor het lezen van zoeken functionaliteit
- _Objecten opslag_ voor publicaites, metadata over documenten, thema's, catalogi etc
- _Zoek Index_ voor het lezen van zoeken functionaliteit

Vanuit de architectuur doen we geen uitspraken over de dataopslag behalve dat er een harde scheiding moet zijn tussen het opslag van behandel gegevens (Objecten opslag) waar ook niet publieke informatie in kan voorkomen en de zoek gegevens (Zoek index) waar alleen publieke informatie mag voorkomen.

![Basis Componenten](../handleidingen/components_commonground.svg)

## Invulling van de Componenten
Bovenstaande abstracten componenten behoeven natuurlijk een concrete invulling, daarvoor heeft Open Catalogi een aantal open source oplossingen geraliseerd of hergebruikt.

| Component | Invulling |
| ----------- | ----------- |
| _publicatie platform_ | [NlDesign app](https://github.com/OpenCatalogi/web-app) |
| _beheer interface_ | [NextCloud app](https://github.com/ConductionNL/opencatalogi) |
| _beheer API_ | [NextCloud app](https://github.com/ConductionNL/opencatalogi) |
| _zoeken API_ | [NextCloud app](https://github.com/ConductionNL/opencatalogi) |
| _Objecten opslag_ | [mongodb](https://github.com/mongodb/mongo) of [Objects API](https://github.com/maykinmedia/objects-api) |
| _Zoek Index_ | [Elastic Search](https://github.com/elastic/elasticsearch) |

Daarnaast hebben diverse projecten zo als de software catalogus en open woo hun eigen aanvullende over vervangende componenten gerealiseerd. Kijk daarvoor bij [projecten](Projecten).

## Data Opslag
Hoewel erg geen archtiecturele eis is met betrekking tot hoe documenten en objecten worden opgeslagen kiesen we er zelf bij de uitvoering voor om documenten (bestanden) en gegevens over documenten de scheiden. Voornaamste overweging hierachter is dat je documenten een spel appart zijn dat je graag in een [DMS](https://en.wikipedia.org/wiki/Document_management_system) speelt.

Expand All @@ -24,9 +38,11 @@ Daarmee word de structuur zo als we die doorgaans zien
![Basis Componenten](../handleidingen/components_commonground_dms.svg)

## Scheiding van architectuur en uitvoering
Vanuit commonground plaatsen we binne [het 5 lagen model](https://componentencatalogus.commonground.nl/5-lagen-model) API's als losse laag en teken we ze in als losse componenten. Of dit in de uitvoering ook moet leiden tot losse applicatie componenten (zoals beschreven door archimate) is nog maar de vraag.
Vanuit commonground plaatsen we binnen [het 5 lagen model](https://componentencatalogus.commonground.nl/5-lagen-model) API's als losse laag en teken we ze in als losse [application components ](https://pubs.opengroup.org/architecture/archimate301-doc/chap09.html#_Toc489946066).



Vanuit Open Catalogi hanteren we één next cloud applicatie die bijde api's kan uitleveren, hiermee laten we de keuze aan overheden of zij wel of geen losse installatie willen per API.
We zelf Open Catalogi als [application collaboration](https://pubs.opengroup.org/architecture/archimate301-doc/chap09.html#_Toc489946067) bestaande uit hanteren we één next cloud applicatie die bijde api's kan uitleveren, hiermee laten we de keuze aan overheden of zij wel of geen losse installatie willen per API. Hoewel een functionele scheiding tussen de API's dus mogenlijk is, zien wij bijde api's als één applicatie component dat naast de API's ook een (technisch) beheers interface, logging en andere randvoorwaardenlijke functionaliteiten voor haar rekening neemt. Hiermee lijnen we uit op andere commonground applicaties zo als [open zaak](https://openzaak.org/).

## Alternatieve naamgeving van componenten en applicaties
Vanuit commonground maken we een verschil tussen architecturele componenten (API's databases etc) en instaleerbare componenten. Een goed voorbeeld hiervan is [open zaak](https://openzaak.org/) waarbij één applicatie meerdere
Expand Down
6 changes: 2 additions & 4 deletions docs/handleidingen/components_commonground.puml
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ header: Componenten Matrix


package "Layer 5 (interactie)" {
[Beheer Interface] as adminUI
[Publicatie platform] as userUi
[Beheer Interface] as adminUI
}


package "Layer 2 (api)" {
[Beheer API] as beheerAPI
[Zoeken API] as searchAPI
[Beheer API] as beheerAPI
}

package "Layer 1 (data)" {
Expand All @@ -25,6 +25,4 @@ userUi <.down. searchAPI: Opzoeken
beheerAPI .down.> ORC: Opslaan
searchAPI <.down. elastic: Zoeken
ORC .right.> elastic: Updaten


@enduml
16 changes: 7 additions & 9 deletions docs/handleidingen/components_commonground_dms.puml
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@ header: Componenten Matrix


package "Layer 5 (interactie)" {
[Beheer Interface] as adminUI
[Publicatie platform] as userUi
[//Publicatie platform//\nOC Web App (Conduction)] as userUi
[//Beheer Interface//\nOC Next Cloud App (Conduction)] as adminUI
}


package "Layer 2 (api)" {
[Beheer API] as beheerAPI
[Zoeken API] as searchAPI
[//Zoeken API//\nOC Next Cloud App (Conduction)] as searchAPI
[//Beheer API//\nOC Next Cloud App (Conduction)] as beheerAPI
}

package "Layer 1 (data)" {
database "Zoek index" as elastic
database "Objecten opslag" as ORC
database "Documenten opslag" as DMS
database "//Zoek index//\nElastic Search (Elastic)" as elastic
database "//Objecten opslag//\nOverige Objecten (Maykin)" as ORC
database "//DMS//\nOpen Zaak (Maykin)" as DMS
}

adminUI .down.> beheerAPI: Opslaan
Expand All @@ -27,6 +27,4 @@ beheerAPI .down.> ORC: Opslaan
beheerAPI .down.> DMS: Opslaan
searchAPI <.down. elastic: Zoeken
ORC .right.> elastic: Updaten


@enduml
30 changes: 30 additions & 0 deletions docs/handleidingen/components_commonground_woo.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
@startuml
title: Open Catalogi
footer: Open Catalogi | Components
header: Componenten Matrix


package "Layer 5 (interactie)" {
[//Publicatie platform//\nOpen Tilburg (Acato)] as userUi
[//Beheer Interface//\nBeheer Tilburg (Acato)] as adminUI
}


package "Layer 2 (api)" {
[//Zoeken API//\nOC Next Cloud App (Conduction)] as searchAPI
[//Beheer API//\nOC Next Cloud App (Conduction)] as beheerAPI
}

package "Layer 1 (data)" {
database "//Zoek index//\nElastic Search (Elastic)" as elastic
database "//Objecten opslag//\nOverige Objecten (Maykin)" as ORC
database "//DMS//\nOpen Zaak (Maykin)" as DMS
}

adminUI .down.> beheerAPI: Opslaan
userUi <.down. searchAPI: Opzoeken
beheerAPI .down.> ORC: Opslaan
beheerAPI .down.> DMS: Opslaan
searchAPI <.down. elastic: Zoeken
ORC .right.> elastic: Updaten
@enduml

0 comments on commit e06a673

Please sign in to comment.