SST: Container Support
sst.dev
sst.dev
I've noticed a trend where some of the dev tooling nowadays is sold almost as if it were consumer goods with the whole associated marketing behind it. This doesn't work for me, in reality actually has completely opposite effect. Give me boring well-written docs, that shows engineering that went into it, not the marketing show for teenagers.
I wouldn't begrudge professional tooling companies trying to use consumer marketing to reach early-stage projects, when most early-stage projects are built by hobbyists, side-project-ists, professionals-who-arent-software-professionals, etc.
I think you're biased by the fact that the latter generates more attention briefly.
I may be biased, but I wouldn't be the only one :) There are so many great new projects getting started in South America, Middle East, Asia, Africa being built by people from non-traditional backgrounds who see software as a ladder to a middle-class or upper-middle-class livelihood. Just because their products sell to markets you're not familiar with, doesn't mean they don't exist.
I love the clip of @dhh's keynote to engineer's "learned helplessness" to AWS and the cloud [2]. While SST + containers is very very different than DHH's Kamal [3], they both embrace containers without the paas service tax (heroku/vercel/etc) or the overhead of kubernetes.
1: https://www.youtube.com/watch?v=Afpgnb_9bA4
i made this video because it reflects my sense of humor and is the kind of content i'd appreciate
anything outside business as usual will draw polarizing reactions
but in a noisy world that's the only thing that'll work
- The junior dev with no say in decisions
- The seasoned contributors whose opinion is listened to but who know that there is no magic tool, only compromises
- The managers who almost always have the last word, who live with constant FOMO, and whose jobs are mostly based on impressions rather than actual results
So I think there are some people who don’t love the idea that tech is being driven by content creators.
But the reality is a well marketed product will always perform better than a well engineered product.
Given the fact that all these tools are interchangeable based on where you want to sacrifice, I actually think it’s pretty cool they are doing this kind of marketing.
You can’t win in that area on just product. And I think that really brothers a certain kind of HN poster.
Maybe not exactly a "product" in the normal sense (but neither is a Terraform-in-JS thingy so) but Linux beat every other competitor (in the server space) by just being "better", rather than "more marketed". I'm sure there are more examples out there proving "well marketed" doesn't always win.
Those PR messages are a form of marketing in and of themselves. It doesn’t have to be a commercial on Fox during football on Sunday.
You have to be authentic and speak to your audience.
This is a YC company.
- The reaction of many to something simple[1] becomes "oh it must be fly-by-night"
- It is more likely someone close to the project who can and will enjoy making something slick-looking
- B2B companies have had reasonably slick marketing for at least a decade, and there's always been a desire for many open projects to look like they can "play with the big boys"
SST is great because they built a model for infra-as-code that gives sensible defaults out-of-the-box while preserving enormous flexibility as the architecture grows, plus great conventions around giving code access to the environment details via bindings.
Super excited to play with this.
Since SST allows you to use Pulumi code, you can code your infrastructure extensively even if some resources are not directly supported by SST itself. However, for such usage, it also has rough edges inherited from Pulumi. For instance, I encountered issues with cyclic dependencies [1] between resources and incomplete deployments. It would be great if I could run the Pulumi CLI against my SST stack.
--
For example, SST's AWS costs example:
- AWS Fargate: 0.25 vCPU, 0.5 GB RAM, 20GB SSD: ~$13/month
- AWS Load Balancer: ~$3/month
Total: ~$17/month (rounded up)
--
In comparison, a similar (even more powerful) setup on Hetzner can be significantly more affordable:
- Hetzner VPS: 2 vCPU, 4 GB RAM, 20 GB SSD for ~ $5/month
-- Coolify
--- app containers
--- load balancing
Total: around $5/month.---
Alternatively, you can offload server management to Coolify Cloud for an extra ~ $5/month, so your Hetzner resources are dedicated solely to running your containers.
- Hetzner VPS + Coolify Cloud: ~ $10/month
You can scale vertically via Hetzner (rescale) and horizontally via Coolify (add more servers).
A more budget-friendly option like this could be valuable for users running small to medium, even larger setups !
Never happened to me, been using Hetzner (dedicated though, not VPS) for almost 10 years. What exactly were you hosting before they pulled the plug on you?
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const cluster = new aws.ecs.Cluster("my-cluster", {
name: "my-cluster",
});
export const clusterName = cluster.name;
https://www.pulumi.com/registry/packages/aws/api-docs/ecs/cl...these components have
1. adding services that can auto scale
2. specifying load balancing config
3. automatic service discovery registration
4. network tunnel to access vpc resources from your machine
5. typesafe resource linking to access your resources in your application code
6. dev mode which brings up your system locally in a single multiplexed terminal UI
not pitching - just listing out why we bother doing anything. pulumi is great and if you want a more low level experience you should use it
It's supposed to be a bit easier for developers to pick up, but you should be able to achieve the same thing with Pulumi AFAIU
Haven't tried SST though. I doubt if it works always flawlessly because even plain old terraform might get stuck in complicated dependency graphs failing to destroy or create/recreate resources.
const cluster = new sst.aws.Cluster("MyCluster", { vpc });Amazon ECS capacity is the infrastructure where your containers run. The following is an overview of the capacity options:
- Amazon EC2 instances in the AWS cloud
- Serverless (AWS Fargate) in the AWS cloud
- On-premises virtual machines (VM) or servers
One more intresting detail I found that another services are not trying to hide the implementation detail.
const api = new sst.aws.ApiGatewayV2("MyApi", {})But, if I was going to start a new project today, I would probably reach for SLS, because it is simpler and faster to get set up. I think SST sometimes gets in its own way with complex IaaC config; if I wanted to do all this then I would reach for Terraform, and part of the appeal of serverless is the low lift to getting to "deployed."
So I think it's really cool that SST is adding all these things and exploring areas outside trad serverless to expand and grow new user bases. I also think this kinda sucks for people who have been with SST for a while and waiting for improvements to the DX for serverless (the functionality is there, the DX is not). I'm sure lots of thought went into this decision, but I still think it would be profoundly "worth it" for SST to tackle DX again, or for someone to build a wrapper around it.
I kind of see that as an unforced error on SLS's side as well; AWS EventBridge is pretty simple and would make those types of workflows possible, but the integration with SLS is really rough.
v3 i think has parity with v2 minus wide support for non-js runtimes
But if I could get that set up with SST in similar time, I would reach for that instead. I think SST is very feature-ful and I often find myself putting good thought into what I am architecting when I'm using it; but it isn't very often that I want to put good thought into what I am architecting when I am just starting a project.
To give an example I am using SLS in most of my contracted work; I am using SST for a project that builds other projects. If you solve the "why are they reaching for SLS at all" problem I think SST would be the very easy choice in every scenario, if for nothing other than the sheer number of providers that are supported instead of just AWS.
I'm sure some of this is a compromise that's tough to design around, so maybe the solution here is a service built on top of SST. I don't necessarily mean Vercel (am familiar with your thoughts on that company), but maybe an easy graphical tool or even a form that spits out my sst.config.ts for me :)
However, the problem I found was that a Pulumi provider has two "sides", one is on the Pulumi side of the provider, which sets up resources to be created, but doesn't update them with the details of what's been created.
Example (may not be entirely accurate): You create a VPC, but then you want to use the default subnet as an input to another resource. You can't find out that subnet's information because when Pulumi runs, the "script" side doesn't get updated by the result of the VPC creation, so the information like the default subnet is "inside" the provider and not available to the user's script.
Terraform updates the resource that has been created with the information from the creation, so you can access the underlying AWS information in further resources.
Does this allow to create GCP / Gcloud stack?
They dont pay any attention at all to GCP, which i get but its a shame because Cloud Run is the best container platform there is and def a better experience in many ways (cost, dx, etc) than running a freaking ECS cluster
Is there a timeline/roadmap for supporting the languages noted on the bottom of the post?
And on the video, I like it
And the docs are very nice