Technical introduction to K-Link and K-Box

Felix Delattre & Paul Scheunemann

Outline

  • What is a K-Box?
  • What is a K-Link?
  • What problems do they solve?
  • How do they work together?
  • Technology Stack
  • Installation
  • Open Source

What is a K-Box?

What is a K-Box?

  • Web application
  • Started as a "Document Management System"
  • Handles more kind of data:
    • Videos
    • Any type of file

What is a K-Box?

  • Built for organizations in Central Asia
  • Now, scalling up to the world.
  • Scalling up to more service providers.

What is a K-Link?

  • Takes care of communication between document producers and consumers
  • Manages multiple Applications:
    • K-Boxes
    • Websites
    • Adapters

Components

  • K-Search: Apache SOLR for the search; reachable through an API
  • K-Link Registry: Authentification of Applications
  • K-Link Website: A public face to the K-Link
  • K-Link Adapters: Integration of search and file submission from other apps or sites.

What problems do they solve?

  • Collaborative management of information
  • Addressing needs for team management, sharing and publication of information
  • Sovereignty of data and technology
  • Business opportunities

How do they work together?

  • Team and sharing dimension lives in the K-Box
  • Several K-Boxes can publish information to a common K-Link
    • Using the K-Search API
  • K-Link provides wide access to information retrieval

Support for existing apps

  • Services exposed as simple HTTP API (the K-Search API)
  • Offers JSONRPC methods that can be called
    • Adding Documents
    • Removing Documents
    • Searching Documents

Technology Stack

User-facing apps written in PHP

  • Laravel for rapid development
  • Symfony for extra flexibility
  • Well established ecosystem

Performance critical parts in C and Go

Apache SOLR as search engine

  • Based on a well established and proven Open Source engine: Lucene
  • Highly efficient full-text search
  • Optimized to work with K-Search API

Problem: Deployment gets complicated

  • Lots of complexity to keep track of
  • Some dependencies not packaged (npm, yarn)
  • Hard to target different operating systems
  • Want to support multiple instances on single system
  • Webserver configuration becomes a nightmare

Solution: Containers

  • Allow putting multiple services on a single server
  • Good resource seperation
  • Less overhead than virtual machines
  • In plain language: More instances on a single server

Installation

Installation used to be difficult

git clone …
apt install …
composer install …
yarn install …
dpkg-reconfigure mysql-server
vim /etc/nginx/…
systemctl start …

Made easier for us and for you:

docker-compose up -d

Only requirement: x86_64 Server with docker!

Open Source!

K-Link and K-Box is available for anybody
  • free to circulate
  • free to modify and repurpose,
  • free to be seen and understood and learned from, down to the last line of its code.