Service 01
Algorithmic trading systems
Expert advisors for MetaTrader 4 and MetaTrader 5, covering strategy logic, risk controls, and order execution.
S3Service
Valeron takes software products from a written specification to a running, multi-tenant service.
Illustrative
01Tenancy
In a multi-tenant service, each customer is a tenant. All tenants share one running system, and each one sees only its own data.
Model A
Every row carries a tenant key, and every query filters by it. The simplest model to run, as long as the filter is never missed.
Model B
One database, with a separate schema for each tenant. A clearer separation, and every migration runs once per schema.
Model C
A separate database for each tenant. The strongest separation, and the most to operate: one more database for every new tenant.
In the shared-table model, the data context adds the tenant filter to every query on these tables. No screen and no report can forget it.
The right model depends on the product: how many tenants it serves, how strict the separation must be, and how much operation it can carry.
using Microsoft.EntityFrameworkCore;
public class AppDb(DbContextOptions<AppDb> options, ITenantContext tenant)
: DbContext(options)
{
public DbSet<Invoice> Invoices => Set<Invoice>();
public DbSet<Customer> Customers => Set<Customer>();
private Guid TenantId => tenant.TenantId;
protected override void OnModelCreating(ModelBuilder model)
{
model.Entity<Invoice>().HasQueryFilter(i => i.TenantId == TenantId);
model.Entity<Customer>().HasQueryFilter(c => c.TenantId == TenantId);
}
}Excerpt. The data context reads the current tenant and applies a filter to every query on invoices and customers.
02Four parts
A running service includes the parts that are easy to underestimate: authentication, billing, background processing, and day-to-day operations.
Part 01
Sign-up, sign-in, password recovery, and sessions or tokens. Every request is checked against the tenant and the role it belongs to.
Part 02
Plans, subscriptions, invoices, and the events of the payment provider, kept in step with what each tenant may use.
Part 03
Work that must not hold up a request: emails, imports, reports, and scheduled tasks, run from a queue with limited retries and a record of each failure.
Part 04
Deployments, configuration, backups, logs, and health checks: the routine work that keeps the service running for every tenant.
03Contact
The contact form is the only contact channel. Valeron replies to the address given in the form.
Other services
Valeron also builds and operates its own software products.Products and OnLooq