Architecture
Enterprise architecture (operating model for leadership) exists in Finnish only.
Julkisen hallinnon kokonaisarkkitehtuuri (JHKA) on rakenne, jonka avulla koordinoidaan ja kehitetään hallinnon organisaatioiden ja palveluiden välistä yhteentoimivuutta. Kokonaisarkkitehtuuri tukee johtamista, strategian toimeenpanoa, toiminnan ja palvelujen jatkuvaa kehittämistä, muutosten ja monimutkaisuuden hallintaa, digitalisaation hallittua hyödyntämistä sekä yhteentoimivuutta.
Lajitietokeskuksen kokonaisarkkitehtuuri on kuvattu täällä: https://laji.fi/about/1357
System architecture
Architecture from point of view of services and systems.
The image bellow shows some (but not all) FinBIF services and some of their relationships with each other and the user.
Key services, systems and components
Name | Type | Techniques | Description | State | Repository | Documentation |
---|---|---|---|---|---|---|
HTTP-API, Web-UI | Loopback node.js framework Swagger / OpenAPI specification Swagger UI | api.laji.fi is the "frontend" of other APIs that provide most of it's services behind the scenes. The API also impelements some functionality by itself. | Production, version v0 beta | |||
Laji.fi | Web-UI | Angular2 JS framework | Frontend for Laji.fi and its sister sites. | Production |
| |
Laji-Form.js | Component | React JS framework | Laji-form is responsible for creating forms of Vihko Notebook. | Production |
| |
Laji-Form | Component | PHP | ?? | Production | ||
Laji-Map | Compontent | Javascript | Laji-Map is build on top of Leaflet map library and provides map services used by laji.fi, Vihko Notebook, etc. | Production |
| |
LajiStore | HTTP-API | PHP | Provides JSON storage for example for Vihko Notebook (used via api.laji.fi) | Production |
| |
Laji-DW | HTTP-API Web-UI | Java, Freemarker, jQuery | Data Warehouse system provides ETL processes for observation, taxonomy, quality annotation data. It provides API for observation data primary sources to push data to the warehouse and "Pull readers" that read observation data from primary sources. It also implements several customized methods to fetch observation data from primary sources. Laji-DW provides query API that is used through api.laji.fi /warehouse endpoint. Finally it provides a management console for admins and citation viewer for performed observation data file downloads. | Production |
| |
Laji-Auth | HTTP-API Web-UI | Java Jersey | login.laji.fi provides authentication methods for FinBIF services. | Production |
| |
Laji-Backend | HTTP-API | Java | Internal API that provides some functionalities of api.laji.fi, for example /news, /information, taxon search and api related features. | Production, internal use only (Will be partially phased out) |
| |
Triplestore-API | HTTP-API | Java | Rest HTTP API for managing an querying contents of Triplestore Ontology database, that contains information for example about taxonomy, persons, image metadata, etc. | Production, internal use only |
| |
Triplestore Editor | Web-UI | Java, Freemarker, jQuery | Web UI for managing contents of Triplestore Ontology database for IT-admins. | Production, admin tool |
| |
Taxon Editor | Web-UI | Java, Freemarker, jQuery | Web UI for managing taxonomy content of Triplestore Ontology database. | Production |
| |
tun.fi / id redirect servce | HTTP-API | Java | Provides machine readable and human readable redirect service for HTTP URI Identifiers used by FinBIF for all things such as taxa, observations, persons, areas, collections. https://www.w3.org/TR/ld-bp/#HTTP-URIS | Production |
| |
Kotka | Web-UI | PHP | Kotka collection management system | Production (will be reimplemented using laji.fi/notebook technologies) |
| |
Pyha | WEB-UI | Python Django | Data request service that is used to request and provide access to closed/not-coarsed observation data. | Production |
| |
Multimedia-API
| HTTP-API | Java, Imagemagick | Provides HTTP API to post images (in future audio, videos?) and their metadata and to query images. Converts thumbnails etc. Used by api.laji.fi. | Production |
| |
Image-Storage | Web server | Nginx (hosting), Python (API) | Provides physical image storage | Production | internal only |
|
GIS | WFS / WMTS | Geoserver | Provides several layers and in future observation data in GIS formats | Production | internal only |
|
GIS converter | HTTP-API | R | Transforms downloads to GIS formats | Production |
| |
FinBIF 2 GBIF | HTTP-API | R | Shares FinBIF data to https://www.gbif.org/ | Production |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Data storage architecture
Architecture from point of view of data strorage.
System | Data | Technique | Data type |
---|---|---|---|
Kotka | Specimen primary data storage | Oracle | Triplets/Ontology |
Kotka | Kotka internal search | ElasticSearch | JSON |
Vihko | Observation primary data storage | Oracle | JSON |
Master data | Taxonomy, Area, Collection metada etc storage location | Oracle | Triplets/Ontology |
Multimedia-API | Image (+3d, audio) storage | Disk | Files |
Laji-DW | ETL process and metadata | Oracle | Relational database |
Laji-DW | Observation Search Engine | Vertica | Column storage relational database |
Taxa | Taxonomy endpoint | ElasticSearch | JSON |
Geo | Georeferencing and geo queries | ElasticSearch | JSON |
GIS | Geoserver data | PostgreSQL | Relational database |
Long-term archiving
FinBIF preservation strategy involves maintaining biodiversity occurrence data in the FinBIF data format, aligned with the international ABCD (Access to Biological Collections Data) standard. Metadata adheres to the EML (Ecological Metadata Language) standard, promoting compatibility and standardized data curation. In instances of format changes, FinBIF oversees necessary data migrations.
Primary data responsibility resides with FinBIF, while data owners retain responsibility for secondary copies. Data owners, however, retain control over their data, including the right to request removal. In such cases, citable downloads are preserved indefinitely in text format to maintain persistent citation. Identifiers, once assigned, are kept persistent and are never reassigned.
Data is currently hosted and backed up by the University of Helsinki IT services. We are in the process of extending collaboration with CSC's (Finnish IT Center for Science) Finnish National Digital Preservation Service.
Server architecture
FinBIF services are hosted by Helsinki University IT Center and CSC Pouta cloud and OpenShift Kubernetes services.