A few months back, I gave a talk about SST to engi...
# general
s
A few months back, I gave a talk about SST to engineers in my organization. A few months later, I'm in the process of converting a serverless framework app to SST. While I am excited about the technology, I'm finding the idea of avoiding emulation is often met with skepticism. What arguments have you heard for/against emulating in the cloud? Are there any arguments that you feel are compelling, or any use cases where it doesn't work well?
j
Emulating an entire cloud will never work locally. There’s nothing more accurate than the actual thing itself and SST enables us to develop locally and test against the real API instead of some bootstrapped mocking framework like Localstack.
t
Yeah this is a bit frustrating because pushback is coming from people who probably haven't tried it
I'll write up thoughts tomorrow
j
I would add that, any company should be cautious about adopting a new framework, especially one that is not supported by a tech giant. We are only using it for a smaller project that is less business critical. Sometimes things can be too bleeding edge / risky.
s
Good points, thank you!
My initial take: • Old Habits: Emulation has been the "state of the art" for many years, and for good reason. Setting up real infrastructure in the pre-cloud era could be challenging. • Control: Emulating external dependencies gives you greater control over your dev environment and limits your dependency on the cloud provider. • Offline Development: No need for an internet connection during development • Tooling: The tooling for cloud native development is young and many are not aware of the option.
I don't find these arguments particularly compelling, but they are arguments I've heard
Gareth McCumskey wrote an article on why local development for serverless is an antipattern, and the comments are interesting
t
I would honestly just concede all those points and say "theoretically 100% perfect emulation is the best option". But try the remote route, there's been a lot of work done to lower that friction to near zero and if you don't like it you can setup local emulation for yourself
I get particularly annoyed with these types of conversations because people optimize for the edge case. For example the offline mode - maybe if you commute daily and work on your commute it's frustrating but 99% of the time you're probably online
Ultimately conversations like these aren't about analyzing anything technicaly. It's one group who has experience doing something trying to explain to another group that is theorizing about it without any experience. Difficult to say anything beyond "I know it sounds weird but give it a try for real and see"
I had this experience recently trying to explain to a company I advise that their setup of running a Go HTTP server with routes in a lambda behind a catch all API gateway wasn't how you should be doing things. They came up with theoretical problems with deploying multiple functions and it was hard for me to say anything besides "just try it"
s
Agreed. You'd think that most companies employ developers that spend their entire work week within an airplane with no wifi connection.
All of this speaks to overcoming individual and organizational inertia around change, not technological limitations of one approach or another