Austen Collins18:37
Completely agree. That's really where the Serverless Framework, that's where we've always been thinking. Going back to that simple story of functions and events, when this thing happens, run this logic. It should be that simple, and it's certainly gotten pretty complex. This is kind of the side effect of the cloud becoming more serverless. It seems like there's just a lot of stuff too that we just didn't see coming at the end of the day, like Layers, like Provisioned Concurrency, like the RDS Proxy or something. Ideas, products, it's like, well yeah, I understand serverless, but wow, there's a lot more services than you ever anticipated here. Meanwhile, the biggest companies still are having trouble securing their S3 buckets. So what does it all mean? How do we create simplicity here? Again, go back to just how do we bring order to this and make it accessible? Because on the other hand, this is highly efficient, very powerful next generation cloud infrastructure. Our team believes that these are the greatest building blocks of all time. Shelves filled with every single type of API to do almost anything. I think it could usher in a new golden era of software development. It feels like we've already been in one for a while, but this stuff is just so darn powerful. But again, how do we make that simple for people? For us, it's really just continuing our story of abstraction. We started out with the simple story of functions and events, don't think about the infrastructure, just think about your outcome first. Now we've got more serverless infrastructure possibilities, configuration options, all that stuff. But it's very clear that specific use cases are more popular than others, and specific use cases should for the most part be done serverless almost all the time. It depends on your organization, some people still need a greater degree of control over the serverless environment, the infrastructure, all that. But there's just very clear use cases where this is a great fit, and you have to have a pretty good argument for not just spinning up a serverless API right now, because it's just so darn efficient. We see those and we know what the best practices are because we've been building these for a while. To some extent, we're kind of asking ourselves, just like you shouldn't be managing servers, should you really try and figure out how to build a REST API on serverless infrastructure from scratch, or where is the ready-to-go REST API opinion that has the best practices built in, the best combination of infrastructure from a scale and performance perspective?
From a cost perspective, so developers don't have to think about that. They just think, 'I need to deploy an API, I need to deploy an Express app, for example.' That abstraction story is what we continue to focus on with our new effort, which is Service Framework Components. It's our fastest growing effort right now. We basically honed in on the most popular use cases and we're building out specific developer experiences for each one. Our goal is to do a 10x better developer experience, so we're trying to get them to deploy in three seconds or less. When you're working on these cloud services, you should be developing on those cloud services. You shouldn't have to emulate this stuff locally. A lot of people find deployment too slow. No one wants to wait 30 seconds or a couple of minutes for CloudFormation to deploy just to see a single line of code change in the cloud. That's crazy. So most people go back to emulation, which is easy to start, but then as your team grows and the project grows, I've seen so many companies trying to maintain some crazy emulated version of AWS that they do all their development on, which is impossible. I'm still trying to keep score: are we being more productive with this architecture or not? What are the issues? If people are trying to maintain a local version of AWS, then it feels like we're losing a lot of the creativity and productivity that was supposed to be freed up by outsourcing the infrastructure to the cloud provider in the first place. So we've looked at these popular use cases and we're trying to create one Service Framework Component for each use case, with developer experience features like fast deployments. Serverless Express is a good example. If you're a developer, you just want to deploy Express in a way that's auto-scaling, can scale massively out of the box, and charges you three cents per request. You just want to take your Express app and run it like that. The Express component is perfect for you. It packages your Express app on serverless infrastructure with three-second deployments. There are other cool features: it streams your logs and errors directly into your console, and there's a dev mode where it watches your code and every time you hit save, it does a fast deployment and streams log statements and errors. A lot of what we're doing with the new development experience is trying to recreate the experience that developers had before serverless cloud infrastructure. We're trying to make it as if you're running this Express app on your machine again. You can still do that, but we want to make working on the cloud just as fast as working locally. We think for developers to use all these new infrastructure features, they need to be able to develop on them, not do some fake thing that they then push into production and encounter all these limits and issues because they weren't working in the reality of the infrastructure. Components is a huge effort. We have one for websites if you want to deploy a serverless website, highly efficient Express, scheduled Lambdas, one for Next.js, React applications, event-driven ones, different webhook handlers, and components for running on other vendors as well.