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:
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
- 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
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 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.