Show HN: PostgreSQL in a virtual private cloud on Heroku

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • heroku-buildpack-borealis-pg-ssh

    Discontinued [DEPRECATED] Use https://github.com/OldSneerJaw/heroku-buildpack-borealis-pg-tunnel instead.

  • Having used Heroku extensively at my previous job I became aware of what I perceived to be a major drawback of database add-ons in Heroku's marketplace: they all seem to allow connections directly from the public internet (or at least from anywhere on AWS's network) for the sake of convenience for app developers (and probably the add-on developers too!). That way, an app developer need only to retrieve the DB connection URL from the corresponding config variable (i.e. environment variable) in application code to connect to the DB. But leaving DB servers exposed to the whole world seems a clear violation of security best practices.

    Heroku has a solution to this problem, of course: Private Spaces. In a private space, your app's dynos and some of its add-ons are hosted together within a virtual private cloud (VPC) that is firewalled off from the rest of the internet. It comes with a couple important caveats, however: you have to have a Heroku Enterprise account (which is expensive and requires you to give up the option to use some of the cheaper dyno types) and it only supports a handful of select add-ons (only first party, it seems) to be sequestered within the app's VPC.

    My new add-on service aims to provide an alternative that sits somewhere between the extreme simplicity and relative inexpensiveness of DB add-ons running on the Common Runtime and the considerably more expensive Private Spaces while offering a similar level of security as Private Spaces. It's called Borealis Isolated Postgres and its in beta now (the beta is free): https://elements.heroku.com/addons/borealis-pg

    With my add-on, each DB server is in a PostgreSQL-compatible Amazon Aurora cluster isolated within its own VPC. All connections to a DB server are required to be forwarded through an SSH server that is dedicated to that VPC.

    So how does an app connect? I wrote a Heroku buildpack to take care of that seamlessly (https://github.com/OldSneerJaw/heroku-buildpack-borealis-pg-ssh). When you add the buildpack to an app, it automatically identifies any config variables from my add-on and sets up a persistent SSH local port forwarding connection to the database server using autossh. The app can then connect to the database via a standard PostgreSQL client library using the add-on's DATABASE_URL config variable without having to be aware of the SSH connection. In other words, application code doesn't have to change at all to support it. If the app works with the first-party Heroku Postgres add-on, it should work with my add-on, too.

    Connecting from your local machine or a CI server to a database server is also straightforward. I wrote a Heroku CLI plugin (https://www.npmjs.com/package/borealis-pg-cli) with a couple simple commands to either run DB scripts (e.g. DB migrations to be executed during CI/CD) or open a persistent tunnel locally (e.g. for ad hoc data administration). It also has a few commands for managing which PostgreSQL extensions/modules are installed since the app user does not have privileges to do so in SQL (remember, it's a managed DB service).

    During the beta all add-ons are provisioned in a multi-tenant environment to keep costs down, but when released into general availability, each premium add-on will operate in its own fully isolated VPC that is only accessible via private SSH server. I have not yet decided whether I will continue to provide a free, multi-tenant option after GA, though.

    If you're already a Heroku user, you can provision the add-on directly (for free) here: https://dashboard.heroku.com/provision-addon?addonServiceId=de00ba11-8b65-47cd-b099-9605703a6e30&planId=beb31eff-e2df-4750-b73a-29542c3dc79f

    Docs are here: https://devcenter.heroku.com/articles/borealis-pg#getting-started

    Let me know what you think!

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Raspberry Pi Ltd.: Potential IPO on the Main Market of the London Stock Exchange

    2 projects | news.ycombinator.com | 15 May 2024
  • The Containerization Brick for your Platform Engineering Toolbox

    2 projects | dev.to | 15 May 2024
  • DejaVuln-Autoroot – Easily Jailbreak Your LG WebOS TV

    1 project | news.ycombinator.com | 15 May 2024
  • Como instalar ZSH e Oh My Zsh no WSL2

    1 project | dev.to | 15 May 2024
  • Arch Linux RISC-V

    1 project | news.ycombinator.com | 15 May 2024