Applications Architecture Overview
Widemesh is a simple but powerful platform for application deployments enabled by a few building blocks familiar to any developer. To help both users and developers of Widemesh build a mental model of how it works, this page presents an overview of the architecture of the platform itself and how applications could be structured and deployed.
Advanced Topic! This page covers technical details of the platform. You do not need to understand these details to effectively use Widemesh.
Introduction to Widemesh Apps
A Widemesh application (app for short) is a program or group of programs deployed with very little effort and designed to serve end-users, 3rd-party systems, and the internet in general. Beyond this concept, there is no parity between what’s known as an app from the business point of view and how its deployed.
The platform was designed to disconnect the notion of the always-public, strict and limited “app” concept introduced by Heroku and instead provide more reusable building blocks that, combined with sane convention-over-configuration defaults, allow the deployment of modern software stacks ranging from simple monolithic services to microservices and distributed applications in general without getting in the way.
The design decisions behind Widemesh allow the platform to offer the following guarantees:
- An app can be deployed in a single or multiple geographical regions at the same time.
- An app can be deployed in a single o multiple cloud providers at the same time.
- An app can be moved between cloud providers with zero effort.
- An app can be deployed with different configurations depending on the region.
- The programs of an app can be developed in one or multiple programming languages.
Before describing the architecture, we provide a glossary of terms to help clarify what is being discussed:
- Environment: An environment is a network-isolated group of stacks. Environments are used to distinguish a group of racks serving different purposes or stages of an app such as
example-app-production. Environments can be deployed to one or multiple racks simultaneously. Learn more
- Stack: A stack makes sure a version of the source code and configurations can be shared across many services.
- Service: A service specifies a command to launch the program produced by the source-code in the rack. A typical service for any Widemesh app is called
webwhich launches the program in the source-code as a web server which, when combined with an endpoint, can serve traffic from the internet. Your service can scale to any specified number of Instances based on its resource demands.
- Instance: An instance provides compute, memory, an OS, and an ephemeral filesystem so the program specified in the service can work correctly.
- Endpoints: An endpoint provides your environments a way to receive traffic and direct traffic from the internet to one or more services across stacks. By default every environment gets an endpoint called Platform Alias Endpoint, its called that because it serves traffic from a subdomain under widemesh.dev as in
- Deployment: A deployment handles the process of analyzing the source code so it can be built and optimized with a compiled version of your rack plus all the dependencies required to run properly.
- Provider: A provider holds a set of credentials for a cloud provider under your control and that Widemesh uses to automatically provision the necessary infrastructure servers to run your app.
- Rack: A rack is a group of servers provisioned by Widemesh that serve one or more environments. Learn more.
Simple Monolithic App Architecture
In a simple Monolithic App Architecture, you have an environment for your app, a Stack for the language of your app and a service that serves traffic through an endpoint.
Typically your app lives in a single region so your environment lives in a single rack, however, you can also have this app deployed in multiple racks for maximum performance closer to the user.
Getting in Depth
This has been a brief high-level overview of the architecture of Widemesh. There are more details available for each of the building blocks.