michal-stlv
Joined 1 year ago
Joined 1 year ago
Thanks for the encouragement!
Both me and sebst (co-author) tried to answer everybody and did so politely.
We respect other opinions and Stelvio (as any other thing) might and is not for everybody.
Regarding your question. Well, it depends on the size of the project. Small enough you can do anything fast. I'm working on bigger mostly serverless system on AWS and it did take lot of time to to setup everything with CDK, certainly days.
I believe it would be faster with stelvio as it offers higher level abstractions than CDK - Stelvio was born out of my frustraction with CDK, I was doing lot of things again and again, waiting long for deployments etc.
If someone is happy with CDK, then they should use CDK, it's good too, even for me much better than CF or Terraform.
But if you feel things could be even less cumbersome, with less code and faster, maybe you could give Stelvio a try.
We're not claiming we'll do everything for everybody, we have our opinions and Stelvio is opinionated - shamefully focusing on (app) developers rather than on infrastracture focused people. https://stelvio.dev/blog/why-i-am-building-stelvio/
Thank you for your comment and wish you a good day.
Michal
1. Not yet but coming soon.
2. Essentially yes, Stelvio is wrapper around Pulumi, using it mainly for state management and as an escape hatch in cases you might need something not supported.
3. Yes we do, there's `CloudFrontDistribution` component but it's not documented as idiomatic way is to use `Router` [1] & `S3StatitWebsite`[1] components and `custom_domains` [3].
4. Currently only v1. v2 (http) and websockets on the roadmap
5. Yes when you link resources we provide default permissions but these can be fully modified https://stelvio.dev/concepts/linking/#customizing-links If you want to link existing dynamo table that is NOT created with stelvio and link it to lambda that's currently not supported, meaning you'll not get automated permissions. Although it would be possible so we might support this use case if there's interest.
Thank you for good questions. If you have any more questions/feedback or need help hit us email at [email protected] Happy to talk.
[1] https://stelvio.dev/components/aws/cloudfront-router/ [2] https://stelvio.dev/components/aws/s3/#static-websites [3] https://stelvio.dev/components/aws/api-gateway/?h=custom#cus...
For lambdas or layers you can define your dependencies in requirements.txt file or as parameter as list[str]. Stelvio will then look at python version and target architecture of your lambda and will use uv or pip to get right version of the packages (matching your lambda) and deploy them. It also has intelligent cache so nothing is downloaded twice etc.
More details here: https://stelvio.dev/components/aws/lambda/#how-installation-...
If you want to try Stelvio we're happy to give you a hand if you need or have any questions. Just shoot at [email protected]
Point is to cover most of the common cases (with escape hatch for fine-tuning in special case) and make those super easy and short to do so devs can focus on code and not infrastructure.
It's standard higher level abstraction play of doing more with less (code and time spent).
Thank you for the feedback.
But coincidentally Stelvio was born out of frustration with CDK which I'm using at my day job for 4 years at this point:
- slow deployment: CDK is layer on top of cloud formation, it first translates to CF which is then moved to AWS and resolved/deployed there. Process is quite slow and if something goes wrong it's hard to debug, rollbacks take ages, sometimes they block due to inter-stack dependencies - CDK is still quite low level and focused on infra. You just can't create say api gateway with 3 routes each using 3 different lambdas with permission to use dynamo table in 4 lines - you an with stelvio - whatever code change you need to test you need to deploy it first which is probably slowest with CDK(compared e.g. to pulumi) then even if you run it you can't really debug it or just see prints, you need to just go thru cloudwath or other services - stelvio allows you to run lambdas in "dev mode" so you don't need to redeploy and run your lambdas locally for instant feedback and even debugging support
Having said that CDK is good tool and I'm happy that it exists as I like it much better than CF itself or Terraform. Stelvio just tries to be even better and focused on developers.
Regarding LLMs sure, problem with LLMs is not they can't generate the code but if you're willing to read and understand all of it. Stelvio is less code with higher abstractions so it's easier to comprehend.
1. Links are fixed now.
2. We try to answer that hopefully better at our website https://stelvio.dev but you're right we should do it better in readme too! - Can you please be more specific regarding syntax? What you don't like or what you'd like to see? We try to have - Whole point of Stelvio is that you need to write much less code to define your infra, e.g. almost none IAM code due to our linking system. We also have "dev mode" which let's you to test/debug your lambdas locally without re-deployment - We try to have comprehensive documentation and guide covering each component. If you see something missing please can you be more specific? - Regarding community support we can't do much here other than grow community which we're trying to do. Having said that we're happy to support our users personally and answer any question or help you onboard. Just shoot email to [email protected]
2.1 many parameters/fields/properties in Stelvio have option to use either enum or string. If it's string with specific supported values it's defined as e.g. ` Literal["keys-only", "new-image", "old-image", "new-and-old-images"]` so you'll get help of IDE for auto complete as well as type-checker/linter if you use wrong value.
Thank you again for your valuable feedback. Happy to talk anytime. If you want to try Stelvio just shoot us an email and we'll help you along the way.
I don't really think we're competitors, their focus is on JS/TS eco system. As you suggested Stelvio focuses on Python and aims to really nail down experience for deploying Python to AWS (and later potentially elsewhere). e.g. we resolve python dependencies for lambda functions and layers and package them for you etc.
In the long run we want Stelvio to be a go to tool for deploying Python (with some nice TUI and web console to make it all really smooth).
This way you can develop and test your code without constantly redeploying.
Stelvio uses Pulumi under the hood.
We're not "trying to achieve over them" but instead we have different focus. Our focus is on developers rather than on devops people.
You can setup your infra in stelvio with much less code, almost no worry about IAM, best practices out of the box and developers workflow in mind. E.g. dev mode allows you to change your lambda code live without redeploying.
If interested I can refer you to my older article https://stelvio.dev/blog/why-i-am-building-stelvio/ which tries to explain philosophy or shorter manifesto https://stelvio.dev/about/manifesto/
Not saying you can't use it with non-Python projects to deploy your infra but focus is Python devs hence assuming you're shipping Python code.
You're totally right and we will fix that and improve website and readme to answer most common questions raised here including setlvio vs. cdk/pulumi/terraform
thanks