Skip to main content

Services

Arkitekt is designed to be a flexible and modular platform that can stand as a central backbone for a wide variety of biological analysis needs in lab. This modularity and composability of the platform is ensured by the use of a (micro)-service architecture, where each service is designed to be a standalone component that can be used independently or in combination with other services. A service in the Arkitekt platform is a containerized web-server that can be provides API endpoints for its functionality.

Services in Arkitekt

The following are the core services that are installed in a default Arkitekt platform:

  • Lok: Authorization and Authentication service
  • Rekuest: Node Repository and Task-Assignment
  • Port: Virtualizion of plugin apps
  • Mikro: Microscopy Data Management
  • Fluss: Workflow management

Other services can be added to the platform as needed. Some additional services that are available in the Arkitekt platform are:

Technical Design of the Services

Design Principles

While the Services in Arkitekt can be designed in a variety of ways, the following are some of the key design principles that are followed in the design of the services:

  • Containerized: Each service is designed to be a containerized web-server that can be deployed in a containerized environment (e.g. Docker, Kubernetes).

  • GraphQL API: Each service provides a GraphQL API that can be used to interact with the service. This allows for a flexible and powerful way to interact with the service.

  • No inter-service communication: While Arkitekt adopts a clear seperation of concerns and modularity in its design, the services are designed to act completely independently and do not communicate with each other (as opposed to some micro-service architectures where services communicate with each other). This is to ensure that the services can develop and evolve independently and can be used in a variety of combinations.

  • ** JWT Authentication and Authorization**: Each service can be configured to use a variety of authentication and authorization mechanisms. However, In order to ensure a consistent and distibributed authentication each service accepts JWT tokens that are used to authenticate.

  • Database: Each service can be configured to use a variety of databases. However, the default database used in the Arkitekt platform is a PostgreSQL database.

  • Configuration: Each service should be configurable using a configuration file and environment variables. This configuration is generated when installaling the platform through the Arkitekt CLI or Konstruktor.

  • Logging and Monitoring: Each service logs its activity to standard output.

Current Tech Stack

The following are the current base technologies that are used in the design of the services:

  • Language: Python
  • Web Framework: Django
  • GraphQL: Graphene
  • Database: PostgreSQL

While the above technologies are used as the base, the services can be designed using a variety of technologies and frameworks as needed.

note

In an effort to standardize and make the backend services more testable and type-safe, we are currently in the process of migrating the services to use Strawberry a wildely used Python GraphQL library that is designed to be more type-safe and testable.

info

While Django might not be the most performant web-framework, it is chosen as the base web-framework for the services due to its flexibility, modularity and the wide variety of libraries and tools that are available for it. If you are designing a service that requires high-performance or has specific requirements, you can choose to use a different web-framework.