Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Summary :

Both architecture approaches are designed to work in the cloud environment.

Both architecture approaches rely on open-source components and frameworks.

The digital registry platform operates with instances that are similar to the GovStack Digital platform, which provides services to citizens.

There is no global Service Registry component introduced in the registry platform. Each platform instance is only aware of the registries deployed in it. There is no global discover/registry component that is aware of all registry instances in a country.

The registry platform is not responsible for the information mediator, but its components can communicate through it.

It is not possible to deploy each component separately without communicating with other required building blocks. Therefore, each registry instance is independent of another registry instance, but all registry instances are dependent on core common platform components (components required for operating the platform instance).

For now, there is no self-owned certificate authority management.

Introduction :

SDG Digital Investment Framework

Reusable software components

Implemented

Same approach

Licensed as open source, proprietary, or freely available with Open Access to data

Implemented

Same approach

Facilitates one or more generic Workflows

Implemented

Same approach

Applicable to multiple SDG Use Cases across multiple sectors

Implemented

Same approach

Interoperable with other ICT Building Blocks

Implemented

Same approach

Designed for Scalability

Implemented

Same approach

Designed for Extensibility

Implemented

Same approach

Standards Based Conformance or Compliance

Implemented

Same approach

Digital Public Goods Alliance (DPGA)

Refers to software code, platforms, and applications that are interoperable, provide a basic digital service at scale, and can be reused for multiple use cases and contexts.

Implemented

We are providing digital service (digital registry platform) at scale, and it can be reused for multiple use cases by developing separate registry-regulation configurations for each use case.

Serves as a component of a larger system or stack.

Implemented

Same approach

Can be used to facilitate the delivery of digital public services via functions, which may include registration, scheduling, ID authentication, payment, data administration, and messaging.

Could be implemented

Payments not implemented yet

Building blocks can be combined and adapted to be included as part of a stack of technologies to form a country’s DPI.

Implemented

Set of components included in an installation package

Building blocks may be open source or proprietary and therefore are not always DPGs.

Implemented

Only opensource based components

“Building blocks can be as simple as a common set of rules or protocols (for example email programs like Simple Mail Transfer Protocol - SMTP), or complex (for example an open-source health information system like the DPG, District Health Information Software - DHIS2)“

Implemented

The Registry platform components could be simple and complex. But in real life, all of them are simple.

Autonomous: building blocks provide a standalone, reusable service or set of services, they may be composed of many modules/microservices.

Implemented

The responsibility of a single BB could be represented by a set of components in the registry platform.

Generic: building blocks are flexible across use cases and sectors.

Implemented

Same approach

Interoperable: building blocks must be able to combine, connect, and interact with other building blocks.

Implemented

Components could communicate with each other using RestAPI within a single platform instance.

Iterative evolvability: building blocks can be improved even while being used as part of solutions.

Implemented

Components could continue developing while already in prod.

Open API, Open API Specifications, Rest API

Implemented

Same approach

Packaged in a container

Implemented

Same approach

Include a information mediator where communication flows between services that are not co-located

Not the same approach

Information mediator BB is not a part of the registry platform distribution and responsibility in general.

2.3 Building Blocks

A Central Operator is responsible for maintaining a registry of members, the security policies for building blocks and other member instances, a list of trusted certification authorities and a list of trusted time-stamping authorities. The member registry and security policies MUST be exposed to security servers over HTTP.

Implemented

An owner of the registry platform instance managing the keylock instance.

Building blocks are software modules that can be deployed and combined in a standardized manner. Each building block is capable of working independently, but they can be combined to do much more:

Not the same approach

Components utilising standard platform components and dependent on them. Registry level platform requires platform components to be deployed beforehand to operate with. Also, there could be some dependencies between registry-level components (let's say some features could depend on the DataFactory component).

Certificate authorities are responsible for issuing and revoking certificates used for securing and ensuring the integrity of federated information systems. Certificate authorities MUST support the Online Certificate Status Protocol (OCSP) so security servers can check certificate validity.

Not the same approach

We do not have explicit self-CA up and running. We are using LetsEncrypt and internal CA capabilities by OKD (OKD and Istio internal mechanism)

Building blocks are composable, interoperable software modules that can be used across a variety of use cases. They are standards-based, open source and designed for scale.

Implemented

Same approach

Each Building Block represents, as much as possible, the minimum required functionality (MVP) to do its job. This ensures each Building Block is usable and useful on its own, and easily extensible to support a variety of use cases.

Implemented

Same approach

A Building Block is composed of domain-driven microservices, modeled as closely as possible on existing roles and processes. This helps ensure each building block is as useful as possible in the real world.

Implemented

The responsibility of a single BB could be represented by a set of components in the registry platform.

Building Blocks exchange data using lightweight, human-readable data that can easily be extended where needed. Data models and APIs are described in a lightweight manner that’s human-readable, allowing them to be easily and quickly understood and validated.

Implemented

RestAPI OpenAPI description and additional model description in documentation

2.3.1 Building Blocks and UI/UX

An admin-only form builder which facilitates building user interfaces (e.g., select questions to be displayed in a maternal-and-child-health registration process)

Implemented

Form.io web-based form modeller within admin-tools component

User interfaces (i.e., forms) which can be used in lieu of individual end-user apps building their own forms (e.g. I’m building a new maternal and child health application; I’d like to use a registration screenflow that’s been pre-built in the registration building block as part of a larger, composed application.)

Implemented

Each form from a registry-regulation repository can be used in any BP definition within the same registry instance.

A public API which exposes the critical back-end services performed by this BB (adding a mom to a database; checking for a mom’s enrollment status in a program) to be used (as a microservice) by existing or new applications with legacy/bespoke needs (e.g., i’ve already got a maternal and child health app that the CHWs are using, and I want to send a webhook to the registration BB after a CHW clicks “submit” on our custom form.)

Implemented

Public Rest API could be treated as separate component as well

2.4 Cross-Building Block Communication

A building block is only so useful on its own. In practice, building blocks MUST be connected together in a secure, robust, trusted manner that facilitates distributed deployments and communications with existing services.

Implemented

Components could communicate within the same registry instance using RestAPI interfaces or do a cross-registry instance communication using a mediator component or any other secured connectivity in place

It is STRONGLY RECOMMENDED that a building block use an information mediator (as described below and in the Information Mediator Building Block specification) for any communications across the internet. An Information Mediator is not required for communication between building blocks which are co-located.

Implemented

It is not the responsibility of the component to choose a connectivity way. It is more on infrastructure developers to choose the right way to organise connectivity between members which is not part of a single registry instance.

2.4.1 Federation and Data Exchange Requirements

Each building block deployment SHOULD use an Information Mediator to federate and communicate with other data consumers and providers, particularly when communicating between services that are not co-located. This ensures the confidentiality, integrity, and interoperability between data exchange parties.

Implemented

It is not the responsibility of the component to choose a connectivity way. It is more on infrastructure developers to choose the right way to organise connectivity between members which is not part of a single registry instance.

2.4.2 Organizational Model

First, a central operator will be identified and created. This organization will be responsible for the overall operation of the system, including operations and onboarding new members. Policies and contractual agreements for onboarding need to be created.

Implemented

The central operator is an owner organisation of the registry instance

Trust services need to be set up internally or procured from third parties, including timestamp and certificate authorities. This provides the necessary infrastructure to support distributed deployments.

Could be implemented

No self-owned trust services are built into a platform for a moment. Only OKD and Istio internal mechanisms are in place, which use self-signed certificates and validation processes.

Finally, members can be onboarded and provided with access to the Information Mediator and methods to register the services that they provide as well as discover services that are available.

Implemented

This can be done, but the information mediator is not a responsibility of the registry platform as well

Once agreements are in place, members can deploy new services in a decentralized, distributed manner. Before deploying a new service, the central operator must be notified of any changes to access-rights, including organization and machine-level authentication before it can publish or consume data.

Implemented

Once agreement is in place, new registries could be deployed in a new or existing Registry Platform instance

2.4.3 Technical Architecture

A Central Operator is responsible for maintaining a registry of members, the security policies for building blocks and other member instances, a list of trusted certification authorities and a list of trusted time-stamping authorities. The member registry and security policies MUST be exposed to the Information Mediator over HTTP.

Implemented

Same approach

Certificate authorities are responsible for issuing and revoking certificates used for securing and ensuring the integrity of federated information systems. Certificate authorities MUST support the Online Certificate Status Protocol (OCSP) so that an Information Mediator can check certificate validity.

Could be implemented

No own CA support for a moment. It could be implemented.

Time-stamping authorities securely facilitate time stamping of messages. Time stamping authorities MUST support batched time stamping.

Could be implemented

No Timestamping authorities for a moment

The Service Registry provides a mechanism for building blocks to register the services that they provide and for other building blocks to discover and consume those services. Any services provided or consumed by a Building Block that leverages the Information Mediator architecture MUST use this service registry functionality.

Not the same approach

Registry Platform do not have any central registry service in place

2.5.1 Building Block-specific definitions

Registration: Any approval/license/certificate issued by a public entity as a result of a request/declaration made by a user of the public service. The result of a “registration” is usually a number and/or a document (called certificate, license, permit, authorization, registration, clearance, approval, etc.)

Implemented

We could have different naming for the same thing, but as a business process execution result, we could have some documents created.

Authentication: This is the technical process of establishing that the credentials (i.e. username, password, biometric etc.) provided by a party (user, system, other) is valid and that the party can be granted basic access to system resources with default access rights. Note that authorization also needs to be applied for a party to access protected resources.

Implemented

Same approach

Authorization: This is the technical process of establishing whether or not an authenticated party has rights to access a given protected resource. Access rights can typically be granted or revoked administratively on a read-only and/or read-write and/or execute basis through an administrative provisioning process. Permissions or rights defined for a party typically manifest in an access token that is granted at the time of authentication for the party. Hence the processes of authentication and authorization are intrinsically related.

Implemented

Same approach

(Workflow) Activity - a single step in a workflow process.

Implemented

Same approach

(Workflow) Process - a workflow process contains one or many activities.

Implemented

Same approach

(Workflow) Instance - an instance of execution for a workflow process.

Implemented

Same approach

Building Block Design Principle :

4.1 Citizen-Centric

Right to be forgotten: everything must be deletable

Implemented

Historical data could be present in a historical table, but not visible in a main table

User-centered design

Implemented

Same approach

4.2 Open

Based on open standards

Implemented

Same approach

Based on Digital Development Principles, see https://digitalprinciples.org/ and https://digitalinvestmentprinciples.org/

Implemented

Built on open-source software (where possible)

Implemented

Same approach

Supports open development, see https://standard.publiccode.net/

Implemented

No vendor lock-in

Implemented

Cloud native (Docker/Docker Compose/OCI containers)

Implemented

Cloud ready

Code is openly developed and available to anyone, via Github or Gitlab

Implemented

Same approach

4.3 Sustainable

https://publiccode.net/codebase-stewardship/

Implemented

Continuous funding for maintenance, development and evolution

Implemented

Attractive to ICT industry and individual developers in deployment environment (incentives must be aligned)

Implemented

Lower cost than commercial solutions due to shared development costs

Implemented

Potentially, we need to estimate a cost of at least.

Uses microservices-based architecture instead of monolithic.

Implemented

Same approach

4.4 Secure

Blocks are audited and certified before being made available

Implemented

Security pipelines processing artefacts and containers are signed.

Development processes and standards enforce quality and security

Implemented

Same approach

Different certification levels reflect level of standards-compliance

Implemented

Regular security scanning and auditing

Implemented

We have a bunch of automatic tools for scanning in aCICD pipelines as well as a manual security auditing process (which happens periodically)

Public ratings and reviews

Could be implemented

Comprehensive logging and exception handling

Implemented

4.5 Accessible

Meets users where they are: web, mobile, SMS and/or voice. UI supports accessibility technologies, e.g. screen readers.

Could be implemented

No accessibility functionality for a moment, no voice communication between end-users for a moment

SSO allows for signing in once for multiple services

Implemented

Same approach

Shared ownership of code

Implemented

Deployment and development processes and standards are open to contributors

Could be implemented

Not for github.com codebase contributors for a moment.

Community-driven development tools for documentation and support

Implemented

ascii doc documentation published using Antora

Blueprints, templates and documentation

Implemented

Same approach

4.6 Flexible

Blocks can be reused in multiple contexts

Implemented

Any component potentially could be reused in any context in which it is fit basically

Each block is autonomous

Not the same approach

Registry-level components are often dependent on platform-level components

Blocks are interoperable

Implemented

Same approach

Easy to set up

Implemented

Platform installer is not complex the thing to operate with

Standardized configuration and communications protocols connecting blocks

Implemented

Same approach

Blocks can be provided as a service (ICT opportunity)

Implemented

Each deployed component could be treated as a service in a digital platform

4.7 Robust

Any client-facing functionality should operate in low-resource environments: Occasional power, Low bandwidth, Low-reliability connectivity

Not applicable

We are not responsible for any hardware on which the platform instance is deployed. This is the responsibility of the platform instance owner.

Easily scalable for high availability and reliability

Implemented

API-only based decoupling

Implemented

Asynchronous communications pattern decoupled through rooms is ideal

Implemented

Eventual consistency for data

Implemented

  • No labels