- 
                Notifications
    
You must be signed in to change notification settings  - Fork 49
 
Description
Hello,
Karton began as a pretty simple wrapper around redis-py and minio-py to meet the basic needs of building malware analysis microservice pipelines (well... the very first versions actually used RabbitMQ and pika - that was before going open source!). As Karton has grown in features and new performance requirements, the current design has become a huge limitation, making further improvements increasingly difficult.
Right now:
- Fine-grained access control isn’t possible; we’re limited to basic username/password authentication.
 - Changing task representation in the backend is cumbersome—HSET would be better so we don’t need to parse the entire JSON just to update a status.
 - Scaling beyond the current architecture remains a significant challenge.
 
To address these issues, version 6.0.0 will introduce a new middleware service: Karton Gateway. It will serve as an interface for all Karton operations. Karton Gateway is a simple FastAPI-based webserver communicating with services via Websockets and REST API. It's designed to be stateless and easily scalable, allowing you to run multiple instances of it behind a load balancer.
Direct Redis/S3 connection will be still supported as a "direct backend", so migration to the new interface can be gradual. However, that way of connecting to Karton will be deprecated and removed in the next major release (v7). v6 version is going to support Karton services 5.0.0+. v7 version will support 6.0.0+ services only.