Render is a unified, full-stack development platform where you define what’s possible. Whether you’re a solo developer, growing startup, or established enterprise, Render provides just what you need to bring your ideas to life.
Today we’re launching new free instance types that allow you to build, deploy, and run web services and databases on Render at no charge. We wanted to give you a way to explore new tech, build personal projects, and preview the Render developer experience with as little friction as possible.
Render’s free instance type for web services gives every user 750 hours of compute time every month to run as many free services as you’d like. Just like our paid instance types, the free instance type includes custom domains, fully-managed TLS, pull request previews, log streams, rollbacks, and more. Free web services spin down after 15 minutes of inactivity and automatically spin back up when a new web request comes in.
We know most web services need a persistent store, so we’re also launching a free PostgreSQL instance type today. Databases on the free instance type come with 1GB of SSD storage. Free databases expire in 90 days, but we’re working to make perpetually free PostgreSQL databases available in early 2022.
As the lead engineer who built Render’s free instance types, I’d like to share our rationale behind free instance types, and how we implemented them. Keep reading to learn more, or jump in and start deploying your projects for free.
Why offer free instance types on Render?
These days it’s practically table stakes for SaaS products to offer a free tier — often called “freemium.” But when it comes to cloud platforms, the decision becomes much more complicated because of the associated costs that directly affect margins. Early in Render’s history, we decided not to offer a free tier for a couple of reasons: we wanted to validate the business with paying customers, and we wanted to keep prices low. However, we’ve since found and developed extremely cost-effective ways to let developers experiment with services and databases on Render, and we’re excited about the resulting increase in Render’s accessibility for developers across the globe.
When I started my own developer journey, spinning up free services on Heroku was a huge part of my learning experience. Being able to quickly set up a service without worrying about later suspending it to avoid a massive bill was critical. Without a free option, it would have taken much longer to feel comfortable deploying services to a production-like environment. Deploying services for free also allowed me to demonstrate projects to freelance clients before aligning on specifics, saving me time and money on contracts that might never materialize. With Render’s free tier, we offer developers the same chance to validate their ideas on Render before committing to a paid service.
Although the free tier initially seemed like a large and risky project, we made quick progress by leveraging Render’s existing architecture and abstractions. Building the free tier very clearly demonstrated the flexibility we’ve consciously built into our platform. We were able to include nearly all our paid features in the free services on day one. Web services using the free instance type get custom domains, fully-managed TLS certificates, Pull Request Previews, Log Streams, rollbacks, and much more.
The most straightforward implementation of our free tier would have provided monthly credits to use against our paid instance types. Still, we knew it was essential to protect our users from worrying about runaway costs. We opted to build a more flexible approach suited to the types of services developers want to run on the free tier. This architecture also enabled the use of spare compute capacity (which is why free tier services can restart at any time). Overall, the implementation gives developers the freedom to pick the level of service appropriate for their application by choosing between free and paid instance types. We also thought carefully about notifications and suspensions for free tier services, to make sure
- Users can always track their free usage.
- There are no unexpected charges, ever.
How did we build Render’s free instance types?
We built the free tier for web services that don’t receive traffic regularly, so it’s essential to scale them responsively without wasting compute power. We evaluated a number of options to manage this and settled on Knative. Knative adds middleware components to Kubernetes to handle deployment and routing for serverless containers so they can scale in response to traffic. We instance type to use these same components to power serverless scripts and Functions-as-a-Service on Render in the future.
Using Knative allows us to leverage years of community expertise and paves the way for us to contribute to the Knative project with our learnings at scale. Knative is the most widely installed serverless layer on Kubernetes and is used and supported by leading organizations, including Google, VMware, and Red Hat.
While Knative played a vital role in the scaling component of our free web services, there were a few places where we had to extend Render to support paid features. The biggest one was native environments. Render’s native environments enable you to build and deploy your application using common language runtimes without Docker. For paid services, native environments use a shared environment image and run initialization containers for user-specific code. However, this approach isn’t feasible for free services because it takes too long to spin up in response to a request. Our solution was to build on-demand, service-specific container images that avoid the need for custom initialization containers. Longer-term, we’ll leverage these improvements to reduce paid service startup times as well.
Since persistent databases are vital components to many web services, we wanted to offer a free version of our PostgreSQL managed databases alongside our free web service offering. To launch free databases in time for our free web services launch, we opted for an approach that relies heavily on our existing database deployment strategy with databases that expire 90 days after creation. While we instance type to offer perpetually-free PostgreSQL in the future, our current free database offering gives developers the ability to test their applications over an extended period. It puts them in control when it comes to upgrading their database or exporting their data.
In addition, Redis is now available as a free version with 25 megabytes of ephemeral storage. This a perfect instance type for use as a cache or queuing service.
Try our new Free Instance Types, and please share what you’re up to with us. We’d love to hear from you!