Build simple, secure, scalable systems with Everblack
Monstera
Open source framework for building scalable stateful applications in Go. All Everblack services are powered by Monstera.
Get StartedScalability
Monstera cluster is horizontally scalable. Applications are sharded, and shards can split even further as they grow with no downtime.
High availability
Each shard is replicated with Raft. Writes are performed on the leader, reads can be performed on the leader for strong consistency or on followers for eventual consistency. There is no single point of failure in Monstera cluster.
High performance
Data and compute are brought together into a single process. You are free to use any in-memory data structure or embedded database. Unlock the full power of Go to write your business logic.
Transactions
Updates are applied sequentially, so you get serializable transactions out of the box.
Local development
No need to run the whole cluster locally. It can be run in standalone mode as a single process which allows you to attach debugger and explore things end to end.
Testability
By design, application cores are easily testable with unit tests, no mocks required.
Moab
Moab is a fully managed service that simplifies working with asynchronous tasks at scale.
Get StartedDurability
All enqueued tasks are persisted and replicated. A task can be removed only by an explicit confirmation from a worker that a task was successfully completed.
Pull-based model
Workers periodically pull (dequeue) tasks from queues, allowing simple scaling of the workers fleet. Workers are stateless. No poison pills ever. You can monitor queue size and the age of the oldest task in real time.
Automatic retries
Failed tasks are automatically retried. Even in the event of worker crash. Retry strategy can be configured for a queue or for each individual task. That guarantees at-least-once execution.
Scheduled Tasks
Moab allows you to schedule the time (delay) when a task will be executed.
Tasks Expiration
Tasks that are set to expire can run as long as they want, but an expiring task must be picked up before the expiration time. Expiration time can be set on each task individually.
Unique Tasks
Moab makes sure there is only a single copy of a task with a given key in the queue. You can choose to leave the original task or rewrite it (if payload or scheduled time is different).
Long running tasks
Tasks can run for hours or days as long as workers keep reporting them in-progress.
Built-in Cron
Schedule periodic tasks with built-in Cron.
Security
Payload can be end-to-end encrypted. IAM roles allow granular control to queues and operations. Each API request is signed. API keys can be revoked.
Rate Limiter
Moab has a built-in rate limiter that works across all workers. Rate limiter is implemented with Token Bucket algorithm.
Concurrency Limiter
Regardless of how many workers are pulling tasks from a queue Moab can also limit the number of inflight tasks.
Pause a queue
You can pause dequeuing from a queue with a single command. For example, in an emergency scenario.
Grackle
Distributed synchronization primitives as a service.
Get StartedPrimitives
- Read/Write Locks
- Semaphores
- Wait Groups
Expiration
All holds have a set expiration time. Process crash will not cause a dangling lock. Long-running processes can extend the hold.
Simple API
All operations are atomic and safe to retry.
Bison
Fully managed IoT-oriented timeseries storage and data catalog management system.
Coming soonData catalog
Timeseries are organized into trees of directories. That makes it easy to navigate in millions of timeseries.
Strongly typed
All timeseries and expressions are strongly typed: integer, float, string, boolean, user-defined structures and enums. Data is validated at the time of ingestion.
Flexible retention
Retention policy can be set on a per-timeseries basis, starting from 1 day up to infinity.
Aggregations
Built-in functions for aggregating by time and downsampling.
Expressions
Powerful formulas for transforming data.
Alerts
Alerts can be configured to notify you when a timeseries exceeds a certain threshold.