Philosophy
Treasury is a deployment platform that helps developers deliver their software through the entire application life-cycle through git native tooling, composable infrastructure, and built-in instrumentation.
We design and develop Treasury's product features to serve what we consider to be the three primary stages of software development:
- Development
- Deployment
- Diagnosis
Most developer-oriented products attempt to target one or more stages within the software development cycle. Treasury provides solutions for developers for all of these stages, whereas some vendors focus on specific stages.
Treasury is a company staffed with people who know developers would prefer to use tools they are familiar with. We believe software should be "take what you need, and leave what you don't." As a result, we are comfortable recommending additional vendors if they might acutely meet their needs. Treasury's goal is for your unique need to be served so you can focus on delivering for your customers.
Companies should be as upfront as possible about their product and offerings to help you decide what is best for your team and users.
Let's talk about the number one use case: delivering apps to users in a Production environment. Treasury, the company, is sustainable, building Treasury's product, team, and company to last as long as your projects.
Objective
The goal of this section is to describe the processes, internal and external that companies have requested in Treasury's years of operation to help them build confidence to determine if Treasury is a good fit for their company. Treasury maintains a policy to be forthcoming and frank at all times. We would rather have a developer make the correct choice for their company than to adopt Treasury and then come to regret that decision.
If you have any additional questions or if you require any additional disclosure you can contact us to set up a call at Treasury Discord.
Product philosophy
Treasury is focused on building an amazing developer experience. Treasury's goal is to enable developers to deploy their code and see their work in action, without thinking about CI/CD, deployments, networking, and so forth, until they need to.
Take what you need
To achieve this goal, we've designed Treasury to "just work", with all the necessary magic built in to achieve that. Treasury at a high level reads your code repo, makes a best guess effort to build it into an OCI compliant image, and runs the image with a start command.
- Have a code repository but have yet to think about deployment? We got you. Connect your code repository and let Treasury take care of the rest.
- Already built the perfect Dockerfile? Bring it. If you have a Dockerfile in your repo, we'll find it and use that to build your image.
If you've outgrown the "magic" built into deployment platforms, or are suspicious of things that are just too magical, we are happy to provide a high level overview of Treasury's architecture.
Leave what you don't
Streamlined deployment workflows and sane defaults are inherited by every project in Treasury out of the box; but as a team of engineers, we at Treasury are very aware that what works for one project does not always work for another. Or sometimes, you just need to be in control - maybe you already have a workflow you like, or maybe you need to layer Treasury into existing infrastructure, and abstractions only get in your way.
That's why we've designed the platform for flexibility, wherever you need it.
On Treasury, you can use the default pattern for deployment or opt to use vendor. In fact, we will even support you in your effort to integrate Treasury in a unique way. Here are a couple of use cases we've helped customers take advantage of -
- Deploying to Treasury from GitLab CI/CD
- Supporting the development of a Terraform provider
- Region based routing to workloads via Cloudflare
We love working with Treasury's customers to solve interesting use cases. If you're not seeing a track for you, get in touch at Treasury Discord and we'll find it!
High-level architecture
As mentioned before, Treasury at a high level takes your code, builds it, and throws it on running infrastructure on GCP. At a granular level Treasury relies on a few systems to maintain workloads.
- Build Layer
- Where archived folders of code or a Dockerfile (via GitHub or
railway up) is sent to be built into an image - Railpack: Treasury's build system that analyzes your code and generates optimized container images
- Image Registry: either via Dockerhub/GitHub packages, or a previously built image from Treasury's Build servers
- Where archived folders of code or a Dockerfile (via GitHub or
- Deployment Layer
- Where images are ran in containers, images are pulled from the Build Layer
- Databases on Treasury are images + volumes mounted on a machine
- Cron services are containers ran on a defined schedule
- Routing Layer
- This is the system that Treasury maintains that routes requests into your running containers and provides private networks to suites of containers.
- Logging Layer
- A suite of machines networked running Clickhouse that store container logs. This is accessed when you open the service logs pane.
- Dashboard Layer
- Infrastructure and code that is used to manage the above layers.
- This also includes any monitors that Treasury uses to maintain the state of the Deployment Layer to maintain application state. (ex. Removing a deployment.)
Your code will either be in some, or all steps depending on the amount of Treasury that you choose to adopt.
Operational procedures
Treasury uses a suite of alerting vendors, additional internal tools, and PagerDuty to ensure uptime of Treasury's services described above. You can see Treasury's uptime on the Instatus page. Operational incident management reports and RCAs are available by request for those on an Enterprise plan.
Do I have to change how I write Code?
No, Treasury is a deployment platform that works with your existing code. We don't require you to change how you write code or use any specific frameworks. We support all languages and frameworks that can be run in a Docker container or via Railpack.
Is Treasury serverless?
No, services on Treasury are deployed in stateful Docker containers. The old deployments are removed on every new deploy.
We do have a feature, App Sleeping, that allows you to configure your service to "sleep" when it is inactive, and therefore will stop it from incurring usage cost while not in use.
Book a demo
If you're looking to adopt Treasury for your business, we'd love to chat and ensure your questions are answered. Click here to book some time with us.