We made it! Event Store has onboarded its first customers for the Early Access phase of the Event Store Cloud product, allowing customers to provision Managed EventStoreDB instances to AWS, with GCP support coming soon. In this post, we will share some information about what we have built and what decisions allowed us to execute at a rapid pace with a small team.
What is Event Store Cloud?
Event Store Cloud is a multi-cloud provisioning platform that allows users to easily deploy Event Store products, like Managed EventStoreDB, to the public cloud of their choice, via an easy to use web console, a REST API, HashiCorp Terraform (Pulumi support to follow), or the Event Store Cloud CLI. Event Store Cloud features a policy-based access control system as well as other standard functionality that users have come to expect from easy to integrate DBaaS solutions.
How Did We Get Here?
A Great Team
We are very fortunate to have a great team working on the products at Event Store, each team member being an expert in their chosen specialization. Without this perfect mix of abilities, the delivery of Event Store Cloud would not have been possible.
Customer Facing Focus
Given any new product, it can be difficult to ignore the desire to service the needs of the business with internal facing features, such as reporting, billing integrations, or integrations with existing tools. The best way, however, to ensure that the new product is self-supporting is to not develop any business facing features until the consumer’s needs are satisfied. A side effect is that our team will also not be burdened with rework as our business processes evolve alongside the new offering.
We have launched Event Store Cloud EA with a UI, API, CLI, and automation (Terraform). We believe this is an exceptional start for a brand new product.
We will talk more about our tech stack in a future post, however for now we will share a little about it as it has been a key factor to our success in getting to EA.
We chose to write the provisioning platform in Go. It is quite easy to produce an operable and scalable result in Go vs other languages that require external managed runtimes. The strategy is one of avoidance, as we have avoided dedicating resources to the debugging, profiling, and tuning, that generally comes along with other ecosystems. The plethora of libraries available for Go also allowed us to focus on delivering our product instead of developing infrastructure or frameworks.
EventStoreDB is of course a key component for the Managed EventStoreDB feature, however, ESDB also underpins Event Store Cloud’s upcoming features that rely on streaming data patterns.
What’s not in our stack: we do not utilize Docker or Kubernetes. We target cloud provider VM infrastructure, with custom orchestration, purpose-built for the solution. Docker and Kubernetes are great for some teams, however, for teams already skilled at manipulating existing stable OS primitives, these solutions hinder more than they help. Avoiding them entirely allowed us to eliminate a lot of overhead that would have impacted the development of customer-facing features.
Fully Automated Development Environment
For rapid cycle time, one of the first features we developed was a local deployment system that is nearly identical to the model for production deployment. This system does not rely on any complicated virtualization or container technology, and features a cross platform build system. We are able to develop and deploy the solution on Linux, MacOS, and WSL2 on Windows.
Just Enough Design
In order to maintain a customer facing feature focus, our design time was spent ensuring correctness where components are coupled, encapsulation, and separation of concerns. Prior to beginning development we also ensured that usability was mocked or a proof of concept was built first.
Supportive Remote Work Environment
The Event Store team was already working in a very remote-friendly fashion prior to the Covid-19 pandemic. This allowed the team to continue to deliver during a period when in-person collaboration has been severely limited.
We have chosen to implement a minimal feature set in order to get Event Store Cloud into the hands of customers as quickly as possible. During the EA period, Event Store Cloud will not represent the final vision we have planned for the product. We will also be iterating on existing functionality and rapidly introducing new functionality; as such some exposed features will not be representative of a planned finished state.
We invite you to create an Event Store account and activate your account for Event Store Cloud. While enabling provisioning is by invite only, you will still be able to explore the Event Store Cloud console, API and automation tooling.
Join us at: https://console.eventstore.cloud
Zachary Schneider, Head of Event Store Cloud