Cloud
Last updated
Last updated
As the product grows, our focus should be on delivering features and value to our customers. To help reduce the overall burden and costs of platform maintenance, we will transition as much of our architecture as possible to "managed services" and rely on the tools provided by cloud service providers to manage them.
Kubernetes will all but eliminate our maintenance burden for our application hosting.
Other candidates for being moved to managed services include our databases, cron (recurring) jobs, and more.
Managed Services do have an impact on our "lock-in" to particular platforms, but the cost and time-saving measures should be worth the trade.
is a container "orchestration" service. A "container" is an application deployed inside portable object.
These portable objects represent a specific version and configuration of an application, and are designed to be easy to replicate, scale, and manage. Kubernetes provides the backbone to do this.
Kubernetes' primary function is to ensure that a "cluster" of containers remains in a particular "state" at all times. It does this by constantly monitoring and evaluating the health of the cluster.
If a deployed application crashes, it will automatically restart a new one. If your application receives an unexpected increase or decrease in traffic, it will automatically scale and balance traffic to your applications.
This combination of containers and Kubernetes also helps more efficiently manage resources. This can help reduce overall costs for hosting your application.
Our database servers will be managed separately, as a fleet that is designed to hold a specific number of data shards. Each shard will represent a single vendor. As our system grows, we will add shards as needed to accommodate new vendors, and as an optional add-on, provide dedicated shards to select clients.
Individual instances of our platform (made of discrete deployments of each product), will then connect to a specific database server, followed by a specific data shard.
Another priority of our improved cloud adoption will be both more robust logging, and availability of those logs.
By moving logging resources to the cloud, we will also gain the ability to have those logs available over the internet. Part of our mission for the next generation of Spoonity will be to make additional logging information available to our vendors to help them debug and troubleshoot their own configurations and setups.
Common problems like emails not arriving, orders failing, or payments being rejected are all things that can be given to the vendor within the dashboard to help them understand (and more importantly predict) how our platform behaves.