"Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away." Antoine de Saint-Exupery
View on GithubToro takes 150ms to boot up. It is thus possible to start microservices on demand or to reboot them if something happens.
A simple microservice within the kernel takes about 130kb on disk. In addition, Toro can work with less than 4Mb of physical memory. This results in more instances with fewer resources.
Toro leverages on VirtIO interface for networking and filesystems. This avoids the use of emulating devices thus speeding up IO.
Compiles once and deploy everywhere. Once the binary is generated, it can be used without any changes in any hypervisor thus reducing the maintenance time.
Toro is a simple kernel that provides a dedicated API to develop microservices. We propose two kinds of sockets to build microservices: blocking and non-blocking. Blocking sockets are good for intensive-IO microservices whereas non-blocking sockets are good for microservices that can serve a request without blocking. When a microservice executes in Toro, it runs alone in the system thus leveraging on the VM's resources.
Toro is a set of libraries that compile within the user application, i.e., the microservice. The user can choose which components are included, .e.g, drivers, filesystems, networking, etc. This results in a binary that can run on top of modern hypervisors like KVM, Xen or VirtualBox. Once the kernel has been initialized, the microservice starts to execute. The microservice runs free from interference from other applications and without the need of users, password or remote login.
Toro is able to run as a guest or baremetal. Currently, it has been successfully tested on Qemu-KVM, Xen, VirtualBox and HyperV. Recently, Toro has been tested on Firecraker and NEMU. These solutions propose an optimized Virtual Machine Monitor (VMM) that simplifies the device model among other features.
There are plenty room for improvements! To report an issue or propose a feature, please follow this guideline. If you want to help in the development, you can pick up any of the issues from here. If you do not know what to pick, do not hesitate to ask! tickets labeled as help wanted may be a good start.