[HN Gopher] We're moving on from Firebase
       ___________________________________________________________________
        
       We're moving on from Firebase
        
       Author : jackconsidine
       Score  : 232 points
       Date   : 2022-10-15 15:42 UTC (7 hours ago)
        
 (HTM) web link (koptional.com)
 (TXT) w3m dump (koptional.com)
        
       | LAC-Tech wrote:
       | _it is impossible to do anything remotely similar to a SQL join.
       | Therefore, developers must embrace the ethos of NoSQL by
       | distributing relational data ahead of time._
       | 
       | Can someone help me translate this?
       | 
       | Are they saying that since there's no joins they store their
       | aggregates denormalised upfront? Or what?
        
       | skywhopper wrote:
       | The CLI complaints, while relatable, are pretty minor. It seems
       | they believe shell scripting is a dirty hack. But in that case,
       | why not just write a clean program to pull the values in the form
       | they want from the API or SDK?
        
         | hinkley wrote:
         | Part of my evolution with regard to Single Responsibility
         | Principle has been to start exposing command lines for some
         | modules. It makes it a lot easier to write integration tests
         | for one, but it also helps people know the interaction
         | boundaries of a particular module. Because if they aren't in
         | the dependency list, either the program doesn't work or it
         | doesn't talk to that code. It's also a lovely bit of friction
         | to Kitchen Sink Syndrome, because it's just that little extra
         | pain in the ass to cross link everything to everything instead
         | of gating it through nexus modules versus leaf modules.
         | 
         | The CLIs usually stay as debugging tools, but in some cases
         | they have gotten incorporated into more complex tools, such as
         | to add more hints and hyperlinks to out deployment management
         | tools.
        
         | jstrong wrote:
         | I dunno. There's nice CLI interfaces and there's one's that
         | make things annoyingly hard to do. I haven't used firebase ever
         | but I have had that problem before.
        
       | pier25 wrote:
       | I've been using Firebase since 2016 in production. Still have a
       | couple of projects there but I will not start another project
       | with Firebase.
       | 
       | I would only use it for quickly prototyping something that I'm
       | 100% sure will be trashed later. Otherwise there are just too
       | many issues with it for anything remotely serious.
        
         | asciimike wrote:
         | Not saying there aren't issues, but would you mind elaborating
         | on some of the issues you've experienced?
        
           | swid wrote:
           | I ran into unexpected difficulties from Firestore - the
           | queries only allow 1 range clause, the transactions only
           | allow up to 500 updates, and you can either search 1
           | collection or all of them with the same name.
           | 
           | This was a problem for us when applying a template to the
           | schedule - templates could have over 500 appointments (so
           | difficult to apply the template in 1 tx), and not being
           | allowed two ranges meant we could test the appointment starts
           | but not the end. The collection issue came up because we had
           | appointments off of users off of orgs. It was impossible to
           | search all the users within an org/tenant the way we set it
           | up. Either search in 1 user or all users in all orgs.
           | 
           | We ditched all of firebase and I'm happy we made that
           | decision early enough.
        
       | glacials wrote:
       | As a side-project Firebase user, I empathize with it being slowly
       | consumed by GCP. I don't have the time or inclination to learn
       | GCP for a side project. I opted for Firebase because it had a
       | great developer experience.
       | 
       | As time toes on and more and more Firebase features are
       | redirected to GCP equivalents, the DX value prop is being drained
       | out of the product and I'm left not even understanding my own
       | infrastructure. I'm thankful the author pointed out Supabase, it
       | seems like a great alternative.
        
         | inlined wrote:
         | [cloud functions for firebase manager] I understand that the
         | decision to shuffle users to GCP for logs was controversial. It
         | wasn't decided, as some have said here, because some director
         | had an OKR to fluff up; it was because our UX team couldn't
         | keep up with the sheer amount of innovation in GCP's
         | observability suite. Check out Daniel Lee's talk next Tuesday
         | on observability and cloud functions for firebase for some cool
         | tricks. Did you know, for example, that you can jump into the
         | trace for a log line in GCP? That you can create custom metrics
         | with alerts? That you can filter by structured log segments?
         | 
         | I think a tutorial could smooth over the transition, but I
         | think this decision was for the best. If you want a super
         | simple logs reader for in-the-moment analysis, try the CLI
         | command "firebase functions:logs"
        
       | habosa wrote:
       | Re: Extracting a machine-readable CI token
       | 
       | Don't do that! Firebase CI tokens are not a good way to authorize
       | with Firebase anymore. Use a GCP Service Account which you can
       | scope very precisely and remotely adjust permissions / track
       | usage.
        
       | zackmorris wrote:
       | My recollection is that progress on Firebase stopped when Google
       | bought it, and I haven't followed it for almost a decade. Does
       | anyone know if these basic features were ever added?
       | 
       | 1) It used to download the whole state (write history) upon
       | startup. Did they ever update it to send a snapshot, or a partial
       | view of the data with lazy-loading for additional nodes?
       | 
       | 2) Did they ever provide a simple push notification service? That
       | was pretty much the only thing missing to be able to run Firebase
       | without another server.
       | 
       | 3) Were node aliases/shortcuts ever implemented, so a node could
       | be a reference to another node? That would have greatly reduced
       | the need for a SQL JOIN alternative.
       | 
       | Also, after having done some cloud dev ops work, I can't endorse
       | it from any provider at this time, as the burden of securing
       | things like user permissions is beyond what humans are generally
       | capable of, so I consider them an anti-pattern. A better pattern
       | is token-based authentication for everything, using standard web
       | metaphors and REST APIs, so that every service behaves like a
       | sandboxed root user with limited abilities granted. I also
       | wouldn't use any cloud service without Terraform or a similar
       | declarative infrastructure manager. Meaning that the best cloud
       | service is basically the best Terraform configuration, providing
       | a higher level of abstraction like Heroku, which largely defeats
       | the purpose of direct cloud hosting in the first place.
       | 
       | So.. the cloud is no substitute for Firebase, and if it goes that
       | route, it will be no surprise if customers jump ship.
        
         | asciimike wrote:
         | > My recollection is that progress on Firebase stopped when
         | Google bought it, and I haven't followed it for almost a
         | decade.
         | 
         | Firebase launched an alpha in April 2012 and got acquired in
         | 2014, so I'm not sure how you've stopped following it for a
         | decade because it's only existed for about that.
         | 
         | > 1) It used to download the whole state (write history) upon
         | startup. Did they ever update it to send a snapshot, or a
         | partial view of the data with lazy-loading for additional
         | nodes?
         | 
         | Yes, that feature shipped in 2014.
         | 
         | > 2) Did they ever provide a simple push notification service?
         | That was pretty much the only thing missing to be able to run
         | Firebase without another server.
         | 
         | Firebase integrated with Google Cloud Messaging in 2016. Cloud
         | Functions (which was also 2016-17) allowed operation without a
         | server.
         | 
         | > 3) Were node aliases/shortcuts ever implemented, so a node
         | could be a reference to another node? That would have greatly
         | reduced the need for a SQL JOIN alternative.
         | 
         | No, the guidance was to duplicated data across paths (when
         | Cloud Functions existed, folks used them).
        
         | duxup wrote:
         | >Firebase stopped when Google bought it
         | 
         | I duno about that. I've seen lots of new features for Firebase
         | for a number of years now.
        
         | anta40 wrote:
         | "Did they ever provide a simple push notification service?"
         | 
         | Yes, it's called FCM (Firebase Cloud Messaging). One of the
         | Firebase components that is available at no cost:
         | https://firebase.google.com/pricing.
        
       | joshe wrote:
       | Google's internal developer hazing and poor DX surely have
       | something to do with this. I've talked with multiple ex coworker
       | developers at Google about the 3 to 6 months it takes to actually
       | figure out how to deploy something. Also the constant overhead of
       | approvals and oddball systems (gerrit!) thereafter.
       | 
       | Eventually good DX seems unimportant and even associated with
       | failure. Real programmers grovel to weird dependancies and find
       | out stuff the hard way.
       | 
       | There's a better alternate universe where Firebase and 2010 era
       | Google App Engine are the template for GCP.
        
         | [deleted]
        
         | asciimike wrote:
         | > I've talked with multiple ex coworker developers at Google
         | about the 3 to 6 months it takes to actually figure out how to
         | deploy something.
         | 
         | In typical developer environments, you end up with a bell curve
         | of "easy things are relatively easy (host a static site, 30
         | seconds), but some things end up being totally impossible
         | (build a global CDN with 99.999... availability)."
         | 
         | Developing at Google is not at all like this: building anything
         | at Google is medium-hard. It takes longer to do simple things,
         | but at the same time, basically nothing is technically
         | impossible. In many cases, doing the hard things is much easier
         | than elsewhere because, yeah, sure, you have to set up 20
         | different config files, but those config files abstract damn
         | near anything a production system needs to operate.
         | 
         | Example: I wanted to add improved image serving functionality
         | (e.g. imgix style URL params), and I was able to integrate the
         | existing infra Photos uses in about 15 lines of code and a few
         | hours. I don't think there are too many places in the world
         | where it's possible to provide that functionality in an
         | afternoon. Why it never shipped is a separate story involving
         | non-technical reasons (cross-PA politics).
         | 
         | > Also the constant overhead of approvals and oddball systems
         | (gerrit!) thereafter.
         | 
         | IIRC only the Android codebase used Gerrit, the rest of
         | Firebase and GCP were on Google3. The approvals and other
         | stuff... true.
         | 
         | > Eventually good DX seems unimportant and even associated with
         | failure.
         | 
         | I think this comes down to a definition of "good DX". I think
         | the HN definition (indeed by default one) is "how quickly can I
         | solve for an issue using the happy path." Indeed, Firebase
         | solves that for a good number of problems (why people use it,
         | why there are people who love it).
         | 
         | At some point though, you can't solve for _all_ use cases along
         | the happy path (see e.g. SAML, ABAC, any $ENTERPRISE_FEATURE).
         | If you want to expand the business, you need to solve for some
         | things that don't have a perfect happy path, and that's where
         | things start getting messy.
         | 
         | IMO, the goal of Firebase's acquisition was to keep Firebase
         | solving the 80-90% of things that had a happy path, and GCP was
         | the remaining 10-20% where folks had to break out of to do
         | arbitrary things. It seems like a lot of folks in other threads
         | here are complaining about that because the abstractions leak
         | out--I think it's a fair criticism, but I also am not entirely
         | sure how to solve for that.
        
           | joshe wrote:
           | Great nuance, thanks for commenting.
           | 
           | DX to me is reduced cognitive load. We are all operating at
           | the limits of abilities, better DX expands the scope of what
           | we can accomplish in our weeks and months.
           | 
           | Often things sold as DX are absolute garbage dead end
           | schlock, like a Flash to iphone app builder or something. So
           | I get some of the indifference (google's not yours). But I
           | don't think we should think of it that way.
           | 
           | Just on your last paragraph, I think it started that way.
           | That Firebase would be the competent general problem solver
           | that you might need to break out of. Firebase and App Engine
           | have tended to weaken over time, so that you needed to move
           | to GCP more often. Ideally Firebase would get more powerful,
           | cover more cases, and have higher quota limits. Instead it
           | feels like they are being degraded or abandoned rather than
           | embraced.
           | 
           | I've never gotten the impression that at google DX was
           | lionized. Examples of doing this well culturally are pre-
           | Salesforce Heroku, Github, vscode, and Stripe.
           | 
           | A github/heroku style culture doing GCP would crush all
           | competitors. Instead if anything GCP is a little worse than
           | AWS.
        
             | asciimike wrote:
             | > Just on your last paragraph, I think it started that way.
             | That Firebase would be the competent general problem solver
             | that you might need to break out of. Firebase and App
             | Engine have tended to weaken over time, so that you needed
             | to move to GCP more often. Ideally Firebase would get more
             | powerful, cover more cases, and have higher quota limits.
             | Instead it feels like they are being degraded or abandoned
             | rather than embraced.
             | 
             | I think I mentioned this on another thread, but the
             | "weakening" you mention is "strengthening integrations with
             | other parts of the platform." I think the general thought
             | here is that an App Engine or a Firebase is a local
             | maximum, and in exchange for trading off deeper
             | integration, there is a platform wide global maximum that
             | is achievable.
             | 
             | Pre-acquisition Heroku, GitHub, Firebase, etc. all were
             | able to achieve local maxima, which led to acquisition, and
             | subsequent attempts to globally optimize.
             | 
             | Dev tools is a brutal business: if you're lucky, 80% of
             | your customers cost you money, 15% break even, and 5% are
             | where 80-90% of your revenue comes from. A better DX
             | typically only gets you more customers in the bottom 95%
             | bracket, because it's easier to onboard people who can get
             | from 0 to 1 than from 10 to 100 (or 100 to 1000). Deeper
             | integrations into the features on the far side of the curve
             | tend to get prioritized and look a lot like what folks here
             | are discussing as negatives.
             | 
             | > I've never gotten the impression that at google DX was
             | lionized. Examples of doing this well culturally are pre-
             | Salesforce Heroku, Github, vscode, and Stripe.
             | 
             | It's not, for the reasons others have pointed out about
             | people being smart enough to figure out the solution
             | regardless of the DX, etc.
        
         | kotlin2 wrote:
         | I still have no idea how to navigate a Gerrit PR. I sometimes
         | land on one trying to investigate a bug in Chromium or
         | something like that. I'm sure Gerrit's approach has some
         | benefits, but it definitely fails at showing a simple before
         | and after view, i.e. "here's what changed."
        
           | hinkley wrote:
           | When change is hard people start over. Anything in your
           | system that adds friction to modifying existing code (be it
           | source structure, lack of static analysis tools, build
           | shenanigans, diff tool) encourages people to copy instead, or
           | reinvent.
        
         | jeffbee wrote:
         | Googlers deploy software on production systems on Day 2 of
         | their on-boarding training. I've never worked anywhere that had
         | as straightforward and usable developer tools.
        
           | asciimike wrote:
           | Running `borgcfg up` is very different than spending weeks
           | writing monarch configs :P
           | 
           | I totally agree that Google's tooling is _legendary_ when you
           | understand it all, but I also agree that having to learn
           | 15-20 different config languages to get a service running in
           | production was pretty damn painful when we only had three
           | months to do it. There's also been a good amount of work in
           | the world outside of google to get tooling to a similar place
           | (and in many cases, without 20 years of baggage).
        
             | jeffbee wrote:
             | I guess the trick is to understand that it's all protobufs
             | anyway, and the config langs are just ways of generating
             | protobufs.
             | 
             | Outside of Google, it is useful to understand that, for
             | example, Helm is not part of Kubernetes, in the same way
             | that borgcfg is not part of borg and many people use borg
             | without borgcfg.
        
               | asciimike wrote:
               | Truly, all we did was move data from one proto to
               | another...
        
         | SkittlesNTwix wrote:
         | > internal developer hazing
         | 
         | Could you expand upon what you mean by this part?
        
           | piotrkaminski wrote:
           | Not OP, but I'm guessing they're referring to the
           | "readability" approval process, which can sometimes be pretty
           | brutal. (Or at least that was the case a decade ago, don't
           | know how it's evolved since.)
        
         | hinkley wrote:
         | People with a high pain threshold create systems that require a
         | high pain threshold. That filters out a lot of people with a
         | low tolerance for bullshit.
         | 
         | Then the "indispensability" of people who built job security
         | into the system filters again.
        
       | patientplatypus wrote:
        
       | quickthrower2 wrote:
       | I enjoyed reading this having battled with firebase on a personal
       | project. It has just enough quirks that I now prefer postgres
       | unless I need all of the firebase features desperately.
       | 
       | > It seems that GCP is cannibalizing the Firebase developer
       | environment.
       | 
       | Yeah as a latecomer I got this impression and rolled my eyes. I
       | imagined a debate in the office between an passionate Firebase OG
       | and a Google exec holding an OKR portfolio, the passionate
       | engineer trying to delay the inevitable gobbling up of firebase!
       | 
       | For me Firebase has lot of cuts, maybe not 1000 but things like:
       | 
       | * No formal definition of rules, just some very scant
       | documentation. Much of it is undocumented or can only be found in
       | SO answers.
       | 
       | * Emulator fatigue! Like Azure storage, the emulator is a good
       | approximation to the real thing but you end up chasing down bugs
       | locally when it is an emulator quirk. Postgres OTOH you run the
       | same thing in prod. Same for mongodb, mssql, mysql etc.
       | 
       | * Firebase admin sdk has a completely different API to the normal
       | sdk to do all the same things! I get it: smaller JS bundles, but
       | why not just reuse a lot of those changes in admin?
       | 
       | * You have to have a local file with authentication secrets to a
       | cloud db in order to run the emulator! I just have a test
       | deployment for this but it feels unnecessary.
       | 
       | * I don't think the model of letting users upload json directly
       | to collections is secure- unless you are a genius with firebase
       | rules. This might be more of a general criticism of nosql over
       | http. CouchDB might have the same issues I guess.
       | 
       | * Rules bugs like if you do a query with clauses your rules don't
       | have access to the entire object just the queried fields. You
       | need to add ghost fields to the query to make the rule run
       | properly.
       | 
       | Probably more things I forgot about too.
       | 
       | I am even tempted to reverse engineer rules to write a proper
       | guide. If that sounds interesting let me know.
       | 
       | Finally I prefer open source stuff for a lot of the usual
       | reasons. So closed source stuff has to be beyond excellent to
       | make sense to me to use.
        
         | asciimike wrote:
         | > I am even tempted to reverse engineer rules to write a proper
         | guide. If that sounds interesting let me know.
         | 
         | No need to reverse engineer them, I built them, so I'm happy to
         | answer any questions you may have (to the best of my memory).
         | 
         | > * I don't think the model of letting users upload json
         | directly to collections is secure- unless you are a genius with
         | firebase rules. This might be more of a general criticism of
         | nosql over http. CouchDB might have the same issues I guess.
         | 
         | It's a general criticism of any "access your database/storage
         | bucket/etc. directly from the client" product--everyone has to
         | build _some_ authZ mechanism that lives in between the client
         | and the server, whether it's Firebase Rules, Postgres Row Level
         | ACLs, Lambda Authorizers, etc. Otherwise you're writing your
         | own authZ code on your own server, which has it's own set of
         | issues.
         | 
         | > * No formal definition of rules, just some very scant
         | documentation. Much of it is undocumented or can only be found
         | in SO answers.
         | 
         | I don't think https://firebase.google.com/docs/rules is the
         | best documentation ever, but I'm not sure "scant" is the word
         | I'd use to describe it. What are the main areas you think are
         | missing?
        
           | quickthrower2 wrote:
           | > No need to reverse engineer them, I built them, so I'm
           | happy to answer any questions you may have (to the best of my
           | memory).
           | 
           | What I think is needed is a definitive guide that approaches
           | all the angles:
           | 
           | * Beginner intro
           | 
           | * Cookbook
           | 
           | * Full docs
           | 
           | * Data architecture tips
           | 
           | * Limits of rules and when to use a function instead
           | 
           | Having to ask questions is the annoying thing. Because it is
           | a blocking affect on your flow as a developer.
           | 
           | I found that your team has gone to great lengths to help
           | people online answer their questions.
           | 
           | But the DX of having a great reference guide would be nice.
           | 
           | Then surface area of firebase being so big I feel like this
           | might be seperate from the Google firebase docs that cover a
           | lot of stuff already.
        
         | combyn8tor wrote:
         | I always thought a rules "learning" mode in the emulator would
         | be useful. While the mode is switched on, the rules are set to
         | allow read/write everywhere. Run your app and simulate a
         | typical end user interaction. After you're done, the learning
         | mode writes a set of the most restrictive rules possible based
         | on the data read/writes from the simulated interaction.
         | 
         | I think this would make a good starting point for new apps.
        
           | quickthrower2 wrote:
           | It would be good. However security has to be thought about
           | alot I don't think AI is there yet.
        
       | simscitizen wrote:
       | > We plan to do more research on scalability, since column-based
       | databases can't grow as big as their NoSQL counterparts.
       | 
       | This one sentence makes me question this firm's expertise.
       | "Column-based database" has a meaning, and Postgres definitely
       | isn't one of them.
        
         | jackconsidine wrote:
         | Author here- poor choice of words, thanks for pointing out. I
         | was getting at the fact that SQL systems don't scale as well
         | horizontally (it's difficult to distribute the same column
         | across multiple machines), and inadvertently used a technical
         | term connoting something else.
        
           | randomdata wrote:
           | _> I was getting at the fact that SQL systems don 't scale as
           | well horizontally_
           | 
           | Google, for example, claims that BigQuery, which uses SQL,
           | scales horizontally. Funnily enough, it is also column-based.
           | Row-stores, like MySQL Cluster, can also scale horizontally
           | and uses SQL.
           | 
           | But no matter what you are at the mercy of CAP theorem. Pick
           | your poison.
        
             | jackconsidine wrote:
             | 100% agree on the CAP theorem conundrum. I didn't know that
             | BigQuery was SQL under the hood, interesting.
        
               | randomdata wrote:
               | SQL is a protocol. I'm not sure I would consider that
               | "under the hood". What happens under the hood is up to
               | the implementer, and implementations can vary widely
               | (BigQuery is quite unlike Postgres, for example). It is
               | the visible part that makes up a particular public API
               | designed for interacting with databases.
               | 
               | Conceivably even Firestore could expose SQL as one of its
               | APIs. In fact, I once built a tool to do exactly that so
               | I could perform ad-hoc Firestore queries using SQL.
               | Worked beautifully.
        
               | cachemiss wrote:
               | Correct, a common mistake people make is conflating these
               | things. I wrote this several years ago about MongoDB:
               | 
               | One thing that helps is if people stop referring to
               | things as SQL / NoSQL as what ends up happening is
               | various things get conflated.
               | 
               | When talking about stores, it's important to be explicit
               | about a few things:
               | 
               | 1. Storage model
               | 
               | 2. Distribution model
               | 
               | 3. Access model
               | 
               | 4. Transaction model
               | 
               | 5. Maturity and competence of implementation
               | 
               | What happens is people talk about "SQL" as either an NSM
               | or DSM storage model, over either a single node, or
               | possibly more than that in some of the MPP systems, using
               | SQL as an access model, with linearizable transactions,
               | and a mature competent implementation.
               | 
               | NoSQL when most people refer to it can be any combination
               | of those things, as long as the access model isn't SQL.
               | 
               | I work on database engines, and it's important to
               | decouple these things and be explicit about them when
               | discussing various tradeoffs.
               | 
               | You can do SQL the language over a distributed k/v store
               | (not always a great idea) and other non-tabular /
               | relational models and you can distribute relational
               | engines (though scaling linearizable transactions is
               | difficult and doesn't scale for certain use cases due to
               | physics, but that's unrelated to the relational part of
               | it).
               | 
               | Generally people talk about joins not scaling in some
               | normalized form, but then what they do is just
               | materialize the join into whatever they are using to
               | store things in a denormalized model, which has its own
               | drawbacks.
               | 
               | As to the comment above you, SQL vs NoSQL also doesn't
               | have anything to do with the relative maturity of
               | anything. Some of the newer non-relational engines have
               | some operational issues, but that doesn't really have
               | anything to do with their storage model or access method,
               | it just has to due with the competence of the
               | implementation. MongoDB is difficult operationally not
               | because it's not a relational engine, but because it
               | wasn't well designed.
               | 
               | Just like people put SQL over non-tabular stores, you can
               | build non-tabular / relational engines over relational
               | engines (sharding PostgreSQL etc.). In fact major cloud
               | vendors do just that.
        
               | rockwotj wrote:
               | Firestore in Datastore mode actually has this feature,
               | it's called GQL (it's not real SQL but similar)
               | https://cloud.google.com/datastore/docs/concepts/queries
        
               | tomhallett wrote:
               | It seems like there are a few different terms being
               | tossed around here, and it's hard to tell which one is
               | being discussed.
               | 
               | * How is the data stored? "Columnar" (column oriented) vs
               | "Row Oriented" vs Document
               | 
               | * How do you query the data? SQL vs json (elastic
               | search/mongo)
               | 
               | With any discussions on performance, while it is true
               | that any database which has ACID compliance will struggle
               | at very large scale, if the solutions being discussed are
               | firebase or superbase, it _feels_ like that is an issue
               | which is not relevant yet. If you are having scaling
               | issues with superbase, I would look at a few different
               | things (indexes, application caching, work_mem, replicas,
               | etc) way before i look at a different database engine.
        
           | simonw wrote:
           | I'd caution against believing that NoSQL databases as a
           | category are more scalable than relational databases.
           | 
           | We have decades of experience scaling relational databases at
           | the moment, including horizontally - Flickr was using read-
           | replicas and sharding MySQL back in 2005.
        
         | duxup wrote:
         | I'm confused by that line and it made me wonder about their
         | experience or PoV as well.
         | 
         | But as someone who doesn't word smith good, could just be that.
        
         | [deleted]
        
       | esskay wrote:
       | No mater how good Firebase or any of Google's cloud offerings are
       | I could never trust them enough not to just decide to pull the
       | plug one day like they eventually do with every product they
       | launch.
       | 
       | They've made themselves untrustworth, and not just from the usual
       | privacy issues.
        
         | redanddead wrote:
         | Yeah google should address this
        
         | campbel wrote:
         | Yep. Partnering with Google feels like building on sand
         | sometimes.
        
       | tmountain wrote:
       | Is there anything like Firebase that lets you use SQL like
       | schemas instead of their data store? That would fill a nice niche
       | for some use cases I have been working with.
        
         | hn_throwaway_99 wrote:
         | It's really easy to add a Google Cloud SQL database in GCP
         | which then can be accessed by, for example, Firebase Cloud
         | Functions. It's also very easy to mix/match parts of Firebase
         | with GCP. For example, you can very easily deploy a server-side
         | API on a plethora of GCP technologies (i.e. App Engine, Cloud
         | Run, a dedicated Compute instance, etc.), deploy a front end
         | with Firebase Hosting, use Firebase Auth for user
         | authentication, then when you call your backend API you can
         | verify the authentication using the Firebase Admin APIs.
        
         | PKop wrote:
         | Supabase
        
         | endisneigh wrote:
         | Managed cockroachdb, along with some others like fly.io.
        
         | _query wrote:
         | Check out thin.dev https://thin.dev/ It uses SQL DDL statements
         | literally as the building blocks for everything.
        
         | rossfishkind wrote:
         | Supabase is awesome and open-source
        
         | b-lee wrote:
         | SurrealDB is getting there soon. You should check it out!
        
         | gman83 wrote:
         | I've been playing with Pocketbase which uses SQLite:
         | 
         | https://pocketbase.io/
        
         | IceWreck wrote:
         | Directus. Its really well built and polished. It supports
         | postgres, mysql, etc.
         | 
         | If you're looking for something lighter, then use Pocketbase
         | which uses SQLite.
        
         | fakedang wrote:
         | Supabase
        
       | alexose wrote:
       | From the article: "Being closed-source, you don't have the
       | implicit assurance that Firebase will always be around (like
       | Parse), nor can you reliably depend on a specific API version."
       | 
       | Firebase is amazing, but I'll never use it for anything that's
       | meant to last more than a year. I don't trust the API to remain
       | stable, and I _especially_ don't trust Google to keep it running
       | for the long term.
        
         | [deleted]
        
         | rockwotj wrote:
         | FWIW it mentions Parse is open source, but Parse wasn't open
         | sourced until the service was shutdown. Also AFAIK the open
         | source version wasn't want was running internally in production
        
         | crizzlenizzle wrote:
         | Same here. I'm always curious as to what things Google is
         | building and providing, but I'm so afraid that things will
         | break within the next 18 months, because Google suddenly
         | decides to ditch it again.
        
         | garren wrote:
         | Exactly. s/closed-source/google/
         | 
         | I've not used Firebase, but seeing as it's not, as far as I can
         | tell, "core" Google (i.e., not related to search or advertising
         | explicitly), I'd be concerned about relying on it in any
         | substantial, business-critical, way.
        
           | inlined wrote:
           | I'm not a VP and there is no way to promise that we'll
           | "never" be shut down, but Firebase is a successful product
           | and additionally drives a lot of Cloud usage (which is
           | certainly "core"!). I just don't see any reason why a VP
           | would need to sunset firebase to balance any books.
        
         | asciimike wrote:
         | The RTDB APIs have remained stable and available since ~2012.
         | Storage has existed in the same way since ~2016. Do you have
         | some specific examples of build APIs changing on you in ways
         | that break your applications?
        
           | alexose wrote:
           | The first application I wrote for Firebase was back in 2015,
           | before it was acquired. I don't remember the specific issues,
           | but I know I spent about the same amount of time trying to
           | keep it running post-acquisition as I did building the app in
           | the first place.
           | 
           | I tried again in 2019 and got burned by Cloud Functions Node
           | runtime changing underneath me.
           | 
           | Edit: I should point out that averaging a single breaking
           | change every five years means that an application has a 20%
           | chance of being affected each year. I'm not willing to roll
           | the dice, generally speaking.
        
             | asciimike wrote:
             | > The first application I wrote for Firebase was back in
             | 2015, before it was acquired. I don't remember the specific
             | issues, but I know I spent about the same amount of time
             | trying to keep it running post-acquisition as I did
             | building the app in the first place.
             | 
             | Nit: Firebase was acquired in Oct 2014. New functionality
             | was launched in early 2016, and the major change that would
             | have affected you at that point was the auth system, but
             | that should have been a one time change with low ongoing
             | maintenance.
             | 
             | > I should point out that averaging a single breaking
             | change every five years means that an application has a 20%
             | chance of being affected each year. I'm not willing to roll
             | the dice, generally speaking.
             | 
             | What technologies are you using on a routine basis that
             | fall into a category you consider acceptable?
        
               | KronisLV wrote:
               | > What technologies are you using on a routine basis that
               | fall into a category you consider acceptable?
               | 
               | Can't speak for them, but some LTS GNU/Linux distros have
               | a decent track record, for example, I've had fairly few
               | issues with Debian, Ubuntu or even CentOS back in the
               | day. The worse I've had was CentOS xrdp package breaking
               | for no good reason, or unattended upgrades in Debian
               | breaking GRUB in my homelab once, here's a rant about it:
               | https://blog.kronis.dev/everything%20is%20broken/debian-
               | and-...
               | 
               | Some languages out there have a pretty long and boring
               | releases cadence, for example, in the case of Java, JDK 8
               | has been around for almost 10 years, JDK 11 and JDK 17
               | will be around for about 5 years each. Migrating between
               | versions can be pretty painful, but within the bounds of
               | a version, generally there are fairly few bugs and issues
               | to be found. Even the feature updates, like new GC
               | implementations, are largely optional and you don't get
               | the rug pulled out from under your feet.
               | 
               | Some databases out there also have been supported for
               | long, for example, MySQL 5.7 and MySQL 8 won't quite make
               | it to 10 years of being supported, but will get pretty
               | close. They remain compatible with the drivers out there
               | in the wild pretty well and even though there can be
               | things like performance regressions, I can't recall _that
               | many_ problems that necessitated changes due to any
               | breakages, more like non-critical slowdowns and such
               | until you get a patch.
               | 
               | I think that there are a few software packages like that
               | in any domain, whether you're talking about operating
               | systems and kernels, programming languages or databases.
               | That said, things can get murky depending on how you use
               | them: something like Apache httpd or Apache Tomcat can be
               | regarded as relatively stable, but that stability gets
               | worse, the more modules/plugins you install. Same with
               | operating systems and running a huge amount of different
               | software on them.
               | 
               | Focusing on stable software isn't something that we as an
               | industry do that much, admittedly, everyone just wants
               | greater velocity and more features to meet whatever
               | business goals are relevant, which doesn't fare too well
               | for the folks who care about stability and keeping things
               | running long term.
        
             | abraham wrote:
             | Any node.js function as a service is going to have the same
             | problem.
        
       | james_cowling wrote:
       | Firebase _has_ been a huge influence but with the rise of
       | serverless there are a new generation of platforms people should
       | be checking out instead, such as Convex, Supabase, etc.
       | 
       | Convex in particular is designed far more for end-to-end
       | consistency rather than just a database to talk to:
       | https://docs.convex.dev/understanding/convex-vs-firebase
        
         | temp_praneshp wrote:
         | Consider adding a disclaimer that you're the founder of Convex
        
           | redanddead wrote:
           | Exhibit A in reasons to probably not use convex
        
           | james_cowling wrote:
           | Yep that's me! I have my full name on here so wasn't hiding
           | but good point to be clear about disclosing.
        
       | abraxas wrote:
       | > You also therefore can't truly run Firebase locally.
       | 
       | To me this is just incredible. As an old timer who learned the
       | ropes in the late eighties it never crossed my mind (what with
       | computers always getting faster) that we would once again face
       | the situation that developers can't run their software locally.
       | It's like a bloody throwback to the sixties and the days of
       | punchcards and timesharing systems. Thanks but no thanks!
       | 
       | It's such a friction factor that all other benefits of the
       | platform get overshadowed by this. It's the same reason I'm
       | vehemently opposed to my team using AWS Lambdas for anything non-
       | trivial. And no, SAM is not the answer here.
        
         | [deleted]
        
           | [deleted]
        
         | spiffytech wrote:
         | While I feel the same way about local dev, I think the industry
         | as a whole is indifferent.
         | 
         | Every place I've worked that's adopted into AWS/Azure gave up
         | on running apps locally. And everything becomes harder because
         | of it.
         | 
         | And now there's a push to not even run your editor locally -
         | the next trend is your whole development experience happening
         | in the browser connected to a cloud dev environment.
        
         | klabb3 wrote:
         | _Violently agreeing._
         | 
         | We really need completely open source stack for the
         | applications themselves, and few enough deps that they can run
         | and be debugged locally. Not only that, but one shouldn't need
         | to provision a cluster and configure certs just to run some
         | business logic that's unrelated to infrastructure.
        
           | asciimike wrote:
           | Honestly curious, do you have examples or thoughts of what
           | this might look like? What is the core primitive upon which
           | you want to build that is zero config but highly scalable?
        
             | klabb3 wrote:
             | Tbh I don't have the experience to give advice or reviews.
             | 
             | That said, check out Nats.io. It's basically just a
             | messaging system but it's beautifully abstracted,
             | horizontally scalable and runs locally from a small binary.
             | It largely removes the need for much middleware like load
             | balancers. They've also recently added persistence features
             | for streams and KV stores.
             | 
             | It doesn't solve every problem but I do think a message
             | system is a very good core abstraction to build other
             | things on top of.
        
             | abraxas wrote:
             | We had this in the early 2000s. It was called J2EE
             | application servers. All external dependencies were
             | specified in terms of interfaces. Granted a lot of them
             | were needlessly convoluted but the premise was good.
        
         | inlined wrote:
         | Most of firebase's backend services have local emulators. Some
         | even use the same codebase as production (real-time database).
         | We're also rewriting the functions emulator to use the
         | functions-framework like prod (our emulator predated functions
         | framework).
        
         | nix23 wrote:
         | I had a customer, big "big" database >10TB used just
         | internally, they paid 1000's of dollars monthly for "cloud",
         | installed 2 redundant server's with backup's snapshot's just
         | everything. Performance increased 5 time's, cost decreased 10
         | time's reliability increased 2 times (not a really reliable
         | internet access there) the system is running now since 7 years
         | with nearly no intervention. Cloud is not the answer to
         | anything...but to some (workloads) it is...the right tool for
         | the work....
        
         | imachine1980_ wrote:
         | correct me if i'm wrong, you can run lambdas locally whit
         | firecracker, lost all the benefits of serverless (you are self-
         | hosting) but you can do it if you need it.
        
           | paulgb wrote:
           | Lambdas are run on Firecracker, but firecracker is just a
           | runtime, it doesn't include the rest of the FaaS stack Lambda
           | provides.
        
         | easton wrote:
         | > It's the same reason I'm vehemently opposed to my team using
         | AWS Lambdas for anything non-trivial. And no, SAM is not the
         | answer here.
         | 
         | I've had to start using Lambda at work and this is my biggest
         | problem. Waiting minutes to see if it was a typo or if there's
         | a larger problem is terrible. I miss Docker.
        
           | spion wrote:
           | SST (https://sst.dev/) has been a game-changer for me, it
           | makes serverless bearable.
        
       | jamest wrote:
       | [Firebase founder]
       | 
       | I no longer work at Firebase / Google, but two points:
       | 
       | 1. There may be issues with the GCP integrations & UX/DX, but GCP
       | integration is good for many customers and necessary for the
       | future of the business.
       | 
       | One of the common failure modes for the 2011-2014 crop of
       | Backend-as-a-Service offerings was their inability to technically
       | support large customers. The economics of developer tooling are a
       | super-power-law. So, if you hope to pay your employees you'll
       | need to grow with your biggest customers.
       | 
       | Eventually, as they become TheNextBigThing, your biggest
       | customers end up wanting the bells and whistles that only a Big
       | Cloud Platform provide.
       | 
       | This was a part of the reason we chose to join Google, and why
       | the Firebase team really really really pushed hard to integrate
       | with GCP at a project, billing, and product level (philosophy:
       | Firebase exposed the product from the client, GCP from the
       | server) despite all the organizational/political overhead.
       | 
       | 2. I'm excited to see the current crop of app platforms emerge.
       | It has been 10 years since we launched
       | (https://news.ycombinator.com/item?id=3832877) and there are now
       | some great innovations in the space. I like the way Supabase
       | (https://supabase.com/) has exposed Postgres and InstantDB
       | (https://www.instantdb.com) graphdb+realtime is really promising.
        
         | throwoutway wrote:
         | Hi James. Thanks for commenting. Just wanted to let you know
         | that your HN profile is outdated based on this comment. It says
         | you are "Now leading product for Firebase at Google."
        
           | jamest wrote:
           | Thanks, fixed!
        
         | solarkraft wrote:
         | Wow, InstantDB's approach looks just about perfect. I hope
         | somebody implements a FOSS version so it can take over the
         | world.
        
           | nezaj wrote:
           | Thanks! Fwiw, we do plan to open source in the future :) For
           | now we want to iterate with a small group of users. Feel free
           | to drop me a line if you want to hack with us.
        
         | gedy wrote:
         | Thanks James, I remember Firebase coming to Citrix in Santa
         | Barbara to discuss being aquired. Wonder if you participated in
         | those meetings? So glad they did not buy and ruin you! Ha
        
         | quickthrower2 wrote:
         | This is interesting, is this the fate of every upstart PaaS, to
         | be acquired by an Amazon, Google, Microsoft, Oracle etc. I see
         | it might be necessary but also feels like a long con. You got
         | popular because of not being the stuffy, complex, corporate
         | thing. Then you slowly become one.
         | 
         | This is why more and more I will err on the side of foss. I am
         | investing my learning time into linux tools (bash and tmux for
         | eg) even when using windows. Maybe even get back into vim.
         | Because these tools will probably be the same after I die, or
         | at least heavily backward compatible.
        
           | NayamAmarshe wrote:
           | Windows got in the way of web development and I only learned
           | that when I switched to Linux. Years later, I don't need
           | Windows anymore and I'm so glad to escape that bloatware and
           | spyware of an OS.
           | 
           | Now I do gaming, video editing and programming all on Linux
           | (ZorinOS) and it feels and looks so good.
        
           | doctor_eval wrote:
           | I have a very similar take (although I've been using Linux
           | since it was distributed on floppies :), and I definitely
           | prefer working with indies, but I will say that one of the
           | things I really like about Supabase is that everything is
           | available open source.
           | 
           | So even if they are merged with one Borg or another, I would
           | expect to have sufficient time to deploy my own infra if it
           | looks like it's all going to go pear shaped.
        
             | quickthrower2 wrote:
             | Yes Supabase seems like a good bet. Parse is a good
             | comparison: if you relied on them you can now host it
             | yourself.
        
       | neom wrote:
       | Very tangentially.. In the early days of DigitalOcean, I was
       | fortunate enough to spend time with most of the devtool CEOs,
       | Leibert, Polvi, Hykes, Newcomb, Collison, etc etc etc. All _very_
       | smart guys.
       | 
       | However James (and Sara!) was one of the most brilliant thinkers
       | I came across. It's always been somewhat of a shame to me he
       | didn't keep building firebase independently. Knowing him
       | (shyguy), I'm not surprised he sold it to google, but I feel like
       | we need to make more space for shy/guys/gals/*.
       | 
       | How many of you think Dokku is awesome? But are we doing enough
       | to support folks like Jeff Lindsay (shyguy)?
       | 
       | Yeah, firebase was awesome when James was still working on it,
       | people like him and Jeff Lindsay (@progrium) are surely brilliant
       | thinkers.
       | 
       | How do we support them (shy-folk ceo)?
       | (https://news.ycombinator.com/item?id=7844457)
        
         | [deleted]
        
         | jamest wrote:
         | Those words are far too kind!
         | 
         | Most of the credit goes to my co-founder, Andrew, and the whole
         | team who gave nothing short of everything to build it.
        
           | neom wrote:
           | You did a great job James. Yes Andrew and Sara and the team
           | were pivotal, but you CEO'd it... I'll never forget when you
           | showed me that weird arcade game y'all used to demo, the
           | paradigme shifting was high and you did a fantastic job of
           | explaining why. Hope you're well old friend. :)
        
       | tlarkworthy wrote:
       | Supabase has distributes consistency issues and not suitable for
       | multiplay/offline first. I am annoyed at firebase for real
       | technical reasons like Firebase auth can delay page load by
       | several seconds. So the real alt to firebase (on web) is
       | replicache IMHO
        
       | tc08 wrote:
       | TL:DR; We don't want to use GCP and we don't like that Google.is
       | intergrating Firebase into it. As someone who is running on GCP,
       | I can't wait for them to fully merge Firebase into the GCP
       | dashboards. Not a high vakue article, really...
        
       | anta40 wrote:
       | For me, Firebase is mostly about convenience/development ease: 1.
       | Authentication? Firebase Authentication
       | 
       | 2. Database? Firebase Cloud Firestore. Sometimes, you don't need
       | SQL.
       | 
       | 3. Push notification? Firebase Cloud Messaging
       | 
       | 4. File storage? Firebase Cloud Storage
       | 
       | All of my needs are served by single platform. Seems like
       | Supabase handles all of them, except #3. Let's try :)
        
         | mrtksn wrote:
         | Firebase is super convenient and works very well for the most
         | part but my heart races every time I receive an e-mail from
         | them. A silly mistake can cost you so much money and they tend
         | to word the e-mails strongly.
        
           | quickthrower2 wrote:
           | I am not convinced it is: frameworks on nodejs, ruby, php
           | etc. can give you most of it pretty simply for less expended
           | hours. For any project that doesn't care about webscaling:
           | which is 99%
        
             | mrtksn wrote:
             | Sure, you can do everything yourself but when you use
             | Firebase all that is no longer your concern. It works as if
             | you are interacting with 3rd party API, which means you
             | only care about the request working and you don't care how
             | exactly they are working behind the scenes which means you
             | care about the actual stuff you are building.
             | 
             | Firebase does have some issues but the core premise is
             | solid and IMHO everything will be like that as we go
             | forward.
        
           | anta40 wrote:
           | Far point. We've read various stories on HN how people got
           | their Firebase billing skyrocketed. One of the lessons
           | learnt: efficient DB access.
        
           | asciimike wrote:
           | > A silly mistake can cost you so much money and they tend to
           | word the e-mails strongly.
           | 
           | They tend to word emails strongly to affect action.
           | 
           | As for the cost overruns: I don't know anyone who wrote one
           | of those blog posts (or emailed support) who didn't get their
           | bill refunded.
           | 
           | We can argue about spending caps or hard limits (which people
           | generally dislike for their production apps), but the people
           | side of the business is (or at least was) solid.
           | 
           | Source: worded emails strongly to affect action at Firebase
           | and refunded a number of bills.
        
         | mritchie712 wrote:
         | #3 is pretty simple to do in Supabase depending on what you
         | mean. If you just need a webhook hit when some data changes,
         | pretty easy to set up with Hooks
         | (https://github.com/supabase/supabase/discussions/3588).
         | 
         | There's also `subscribe`
         | (https://supabase.com/docs/reference/javascript/subscribe)
        
           | anta40 wrote:
           | What I mean is mobile push notification. Once I felt tempted
           | to replace FCM with nats.io, turned out there were several
           | cases need to handled. Oh well, back to FCM. At least, it's
           | free.
        
           | asciimike wrote:
           | I believe they mean mobile push notifications (e.g.
           | APNS/FCM), which ultimately flow through Apple and Google.
        
         | antihero wrote:
         | It made subscribing to updates really easy and that was cool
        
         | hn_throwaway_99 wrote:
         | The other thing that is really nice about Firebase is that it
         | pretty seamlessly integrates with GCP.
         | 
         | For example, with your #2, it's really, really easy to spin up
         | a postgres DB on Google Cloud SQL and then access that DB from
         | a Firebase Function. While it can get confusing sometimes, I
         | think Firebase has done a good job "overlaying" their
         | functionality set on top of GCP infrastructure, e.g. "Cloud
         | Functions for Firebase" is really just a very thin layer on top
         | of GCP Cloud Functions, Firebase Auth is basically the same
         | thing as Google Identity Platform, etc. The author of the blog
         | post sees that as a negative in some areas, but I don't.
         | 
         | FWIW, I looked through the authors list of Firebase "cons", and
         | as someone who has used Firebase for years, none of those have
         | really been a concern for me. My biggest concern is that there
         | are areas of Firebase that have been calling out for love for
         | years, particularly Firebase Auth, but they've gotten virtually
         | no updates. Apparently nobody at Google sees making these
         | straightforward but important improvements as a path toward
         | getting a promotion.
        
           | fakedang wrote:
           | > For example, with your #2, it's really, really easy to spin
           | up a postgres DB on Google Cloud SQL and then access that DB
           | from a Firebase Function
           | 
           | God no. The last time I checked, Firebase functions had
           | intensively bad latency times for me. So bad that I decided
           | to learn AWS Lambdas to get my work done. And yes, Lambda
           | just blew Firebase and GCP functions out of the water.
        
             | asciimike wrote:
             | > God no. The last time I checked, Firebase functions had
             | intensively bad latency times for me.
             | 
             | Was this cold start latency specifically or request latency
             | in general? Do you know what region you were deployed in?
        
             | hn_throwaway_99 wrote:
             | I don't know when you tried this, but I don't think this is
             | valid anymore:
             | 
             | 1. If cold start times are a big deal, you can now set a
             | minimum number of instances with Cloud Functions so they
             | don't scale to 0. You can also now set concurrency on Cloud
             | Functions so one function can run multiple requests
             | simultaneously on a single function.
             | 
             | 2. There are tons of other serverless options if you want
             | to, say, have a Firebase front end but a backend API served
             | in your language of choice that uses the Firebase Admin API
             | to do whatever you want, e.g. App Engine or Cloud Run.
        
             | inlined wrote:
             | [cloud functions for firebase manager] Lambda is indeed an
             | innovative and solid product. Cloud functions for firebase
             | has been getting a lot better recently too!
             | 
             | The biggest innovations lately has been our release of v2.
             | V2 is built on Run and can support concurrent executions in
             | the same container. This dramatically reduces the number of
             | cold starts, and makes min instances reservations even
             | cheaper if you want to eliminate cold starts for a given
             | workload. Plus, Firebase lets you configure CPU separately
             | from memory in V2, so you can give functions extra oomph if
             | they need it. Docs are at [1]
             | 
             | Finally, Firestore's SDK was slower than we liked in GCF so
             | we've done a number of improvements there. About half a
             | year ago we redesigned the SDK so we could lazy load the
             | networking layer. This lets you handle Firestore events
             | without loading the bulk of the SDK. We have a more extreme
             | update in the works that will let you configure the
             | Firestore SDK to prefer REST over gRPC so you can avoid
             | heavy dependencies in latency sensitive/event driven
             | environments like GCF.
             | 
             | [1]: https://firebase.google.com/docs/functions/beta
        
             | jsmith99 wrote:
             | Firebase functions are just GCP functions. To reduce
             | latency you can keep them warm for quite a small fee.
        
       | eikaramba wrote:
       | I have to also mention https://directus.io/ here. Coming from
       | Strapi, Feathers.js and Supabase i have to admit it is the
       | closest competitor to Supabase i know. There are things Supabase
       | is doing better but the Admin Interface and the Customization
       | Capabilities of Directus are just unmatched.
        
         | soulofmischief wrote:
         | How would you compare it to Feathers?
        
         | threatofrain wrote:
         | https://appwrite.io
        
       | endisneigh wrote:
       | It's sad to see people invest in things like firebase without
       | understanding my the technology. Right tool for the right job.
       | 
       | If you don't need scale then you don't need firebase. If you need
       | joins, don't use firebase, etc etc.
       | 
       | If one insist on using a proprietary managed database I'd use
       | Spanner.
        
         | danielvaughn wrote:
         | I've been pretty critical of Firebase on HN, perhaps too
         | strongly. My experiences with it have all been the same, it
         | goes like this:
         | 
         | Client has a new-ish codebase that was written by relatively
         | inexperienced front end developers. They aren't confident
         | enough in the backend, and are attracted to Firebase because it
         | lets them write everything from the front end.
         | 
         | Then they proceed to create the most convoluted DB model and a
         | spaghetti backend that's split between the front-end repo and
         | various cloud functions.
         | 
         | In practical terms it's been a nightmare every time, for me
         | personally.
        
           | trefoiled wrote:
           | It's amazing just how accurately this describes my exact
           | experience as a FE engineer tasked with creating a newish
           | codebase for a client.
        
         | [deleted]
        
           | [deleted]
        
         | nicoburns wrote:
         | Is Firebase even capable of supporting high scale? My
         | experience with it has been that performance is pretty poor
         | when working with large datasets.
        
           | bootloop wrote:
           | Realtime Database? No. Firestore however, scales as most GCP
           | services do and is it's in-house built replacement.
        
           | rockwotj wrote:
           | Firebase is a large suite of products - are you talking about
           | the Realtime Database? The answer is it depends on what "high
           | scale" is. There are parts of the RTDB that didn't scale well
           | when I worked on it (indexes are built in memory on demand so
           | building the initial index is slow), but there are projects
           | that could fix that.
        
         | johndfsgdgdfg wrote:
         | I absolutely agree. Moreover with any Google products you will
         | never know when they will shut it down or hike the prices like
         | they have done countless times.
        
           | endisneigh wrote:
           | In my opinion one should refrain from any managed service
           | that can't be self hosted.
           | 
           | Not clear to me why the authors don't use managed Postgres.
           | Supabase is close enough I suppose. Personally I don't see
           | what you get with supabase vs an Orm and vanilla managed
           | Postgres.
        
             | moooo99 wrote:
             | The appeal for firebase is that you can get away without
             | your own backend for quite a while. It's perfectly feasible
             | to consume databases directly from your frontend app
             | without having to deal with a lot of caching or networking
             | concerns, the firebase SDK does that for you. You basically
             | get a complete API layer without having to write a lot of
             | code yourself. It is very similar with stuff like auth
             | handling, which is also tightly integrated into the
             | database offering.
             | 
             | This makes development incredibly easy, especially in early
             | stages and if you're starting out as a solo/small scale
             | project. It is even better if you don't have an in depth
             | knowledge about backend development/architecture and just
             | want to build a product.
             | 
             | You don't get any of those benefits with a regular managed
             | Postgres offering, at least not that I'm aware of. Supabase
             | comes a lot closer to firebase than a regular managed
             | postgres + ORM offering would but you also get an oepn
             | source project that you could potentially self-host _.
             | 
             | _ from what I heard self-hosting Supabase is possible, but
             | a rather complex undertaking. There is some documentation
             | around it, but is definitely a lot more complex than using
             | their hosted offering is.
        
       | seibelj wrote:
       | > _We love PostgreSQL which Supabase utilizes. We plan to do more
       | research on scalability, since column-based databases can't grow
       | as big as their NoSQL counterparts._
       | 
       | I would argue there are very, very few types of problems NoSQL
       | solves better than relational DB, and the "benefit" of quickly
       | deploying schema changes is actually a nightmare later on. That
       | it took so long for these devs to realize this is... perplexing
        
         | klabb3 wrote:
         | If you have more write queries than a single machine can handle
         | you're in trouble though, right?
         | 
         | Not defending NOSQL in any other way, but this could be a legit
         | requirement for some apps, no?
        
       | lordofgibbons wrote:
       | >Authentication out of the box is nice. (Built-in Firebase email-
       | verification is, in our opinion, a poor experience though).
       | 
       | >Firebase mandates Google / GSuite sign-in
       | 
       | Is Firebase authentication different from GCP Identity Platform?
       | I've read the docs for both Firebase and Identity Platform and
       | the lines seem blurred..
       | 
       | Do these issues extend to Identity platform? I haven't heard of
       | many people using it, but it looks very feature-rich.
        
         | dilatedmind wrote:
         | They are the same, there is also some functionality for
         | managing firebase auth users in the gcp console.
        
         | hn_throwaway_99 wrote:
         | Yes, they are the essentially the same (again, more confusing
         | branding).
         | 
         | Firebase Auth is great, _with_ the notable exception that I am
         | worried it will become Google project #2898 to die on the vine.
         | It has received virtually no substantive updates for about 2.5
         | years. The last big one was they added SMS 2FA in early 2020.
         | Given that Google themselves has long ago stated SMS is
         | insecure for 2FA, it 's ridiculous they have no other options,
         | nor have they said anything about adding options in their
         | official channels. Here's a post from Dec 2021 in the google
         | groups forum, and again there have been no real substantive
         | updates since: https://groups.google.com/g/firebase-
         | talk/c/RBRdDHPybC8
         | 
         | > Is Firebase Authentication dead?
         | 
         | > I apologize for the inflammatory subject line, but I think
         | this is an important matter that the Firebase and Google team
         | should be transparent about.
         | 
         | > What does the future of Firebase Authentication look like? Is
         | it in maintenance mode? Is there any roadmap for future
         | development?
         | 
         | > I migrated my user base to the Firebase platform a few years
         | ago, mainly based on their Authentication platform. It looked
         | like it had a lot of promise. There was a lot of development
         | going on with it at the time. Although it didn't have all
         | features I wanted, the pace of development seemed to show a
         | good trend line going in that direction. At the time, they said
         | MFA was on the roadmap. I considered other AaaS options, but
         | chose Firebase Auth based on where I thought it was going in
         | the future.
         | 
         | > Fast forward a few years, and it seems like there is no
         | activity any more with Firebase Auth. I'm still waiting for
         | TOTP and WebAuthN MFA. SMS is not a no-starter, and even Google
         | has said that SMS is not secure MFA. There is no way to control
         | the password strength policy, nor lock-out behavior when
         | incorrect passwords are entered.
         | 
         | > Now I need to make a decision: whether to stick with Firebase
         | Auth, or to move on to a different AaaS platform. Will Firebase
         | Auth pick up the feature development pace again, or is it on a
         | long death spiral? I'd appreciate insight from Google what
         | their plans are in a concrete way.
         | 
         | > Thank you.
        
       | coys wrote:
       | Jack Considine is always a good read
        
       | [deleted]
        
       | hilti wrote:
       | I've been using Firebase and Firestore extensively in past
       | projects, because I was attracted by it's simplicity on first
       | sight.
       | 
       | Then there's the day you need some relational queries. It's
       | somehow possible, but you need to rethink your data structure.
       | 
       | Then you figure out, that the realtime part of Firebase is CPU
       | intense and slows down your browser.
       | 
       | Call me nuts, crazy or whatever - I've replaced most of these
       | applications with SQLite (WAL enabled) and use either server-
       | side-events (SSE) for almost realtime notification or the HTTP
       | streaming API.
       | 
       | It works perfectly for my needs and is pretty simple to deploy.
        
         | honzajde wrote:
         | How would you handle "db-notifications" with sqlite - to my
         | knowledge this is a reason why you would need postgresql with
         | its' (pg) NOTIFY
        
           | b3morales wrote:
           | SQLite calls this an "update hook":
           | https://www.sqlite.org/c3ref/update_hook.html
        
             | rockwotj wrote:
             | SQLDelight had neat built in support for this
             | 
             | https://cashapp.github.io/sqldelight/
        
             | hilti wrote:
             | Exactly! Or in some cases I create a view - for example a
             | highscore list - that is queried by a simple server-side
             | script and sends the data as JSON to the client.
        
       | norwalkbear wrote:
       | For videogame development, firebase is godsend. Just an absolute
       | easy way to add features into mobile games.
       | 
       | Core competencies of most game devs aren't web stacks. I can see
       | how web devs might feel differently.
        
         | jm20 wrote:
         | Thoughts on Firebase vs Playfab?
        
         | giancarlostoro wrote:
         | Also could see it for mobile devs trying to get an idea going.
        
           | fakedang wrote:
           | I thought the same way, but I think now Supabase is much
           | better than Firebase. Simply because you get a lot more
           | functionality from the postgresql DB compared to the nosql
           | DB.
        
             | endisneigh wrote:
             | It's sad how people don't use things for their intended use
             | case. The main thing you're buying with firebase is
             | scalability
        
               | paulgb wrote:
               | "Intended" according to whom? The firebase landing page
               | makes a couple references to being scalable, but
               | otherwise it doesn't appear that using Firebase at a
               | smaller scale is outside its intended scope at all.
        
               | endisneigh wrote:
               | Intended accordingly to the technology, not marketing
        
               | paulgb wrote:
               | What does "intended according to the technology" even
               | mean? Just because software is built to scale up, doesn't
               | mean that using it at a smaller scale goes against its
               | intention.
               | 
               | Marketing copy aside, it's not as if the technical docs
               | discourage people from using it for non-scale use cases.
        
               | endisneigh wrote:
               | It's a key value store. People complain about that it
               | doesn't have joins. It's not a relational database. Just
               | one example.
               | 
               | It works best as a simple document store.
        
               | paulgb wrote:
               | Ah, gotcha, I see the connection now.
        
               | duxup wrote:
               | A large amount of the tutorial videos out there make
               | scalability without having to really think about it a big
               | selling point, among others.
        
             | giancarlostoro wrote:
             | Fair I am not saying it is the only option. Parse was
             | really neat before I ever heard of Firebase, Meta acquired
             | them but at least they released it somewhat open source.
        
       | coupdejarnac wrote:
       | I see Supabase's Realtime hasn't reached the production milestone
       | yet. How far away is that? I'm interested in using it for an
       | offline first app. Watermelon sync would be nice.
        
       | inlined wrote:
       | Hi there, I'm the manager of Cloud Functions for Firebase. I
       | wanted to note that Firebase is getting better for large
       | deployments and we're continuing to invest in the area.
       | 
       | First, the article might have been written before our recent
       | feature to skip deployments of unmodified functions. If the
       | source, env, and secret metadata SHA has not changed, we skip
       | deploying that function. At minimum, this means large deployments
       | that fail can be retried and make progress (more on that below).
       | 
       | Second, we've started investing in a feature called "codebases."
       | At its simplest, codebases are multiple folders of functions.
       | This makes it easier to deploy single codebases, but it also
       | means you're likely to skip deploys of functions in codebases
       | other than the ones you're working on. If you want to invoke
       | functions in another codebase, consider a Pub/Sub, Task Queue, or
       | Eventarc Custom Event (coming in a few weeks) function depending
       | on the feature set that suits you best. Codebases are just
       | getting started and we have hopes to develop this feature in the
       | future.
       | 
       | Finally, we've set aside budget in Q4 to rewrite part of the core
       | of our deployment logic to improve the way we batch, backoff, and
       | retry function deployments in the face of quotas (yes, they are
       | retried multiple times, even when we give up due to quota
       | errors). We hope to substantially raise the reliability of 100+
       | function deployments.
        
       | klabb3 wrote:
       | It's funny because Google pretty much invented this model that
       | users want and love. App Engine was launched in 2008, before GCP,
       | before docker and before Cloud was a term, basically. It had a
       | globally replicated persistence layer, job queues, auth, scale to
       | 0, a generous free tier, a fully fledged local dev server and a
       | single command to deploy, and all config lived in a single file.
       | At the time it was really innovative, and attracted a lot of hip
       | startup- and college grad types.
       | 
       | The reason people liked it is, imo, because it was a _single
       | product_ with _multiple features_. GCP OTOH, has been about
       | decoupling (or loosely coupling) the product suite, and users are
       | supposed to pick and choose from a giant array of half-products.
       | Simply being aware of all products, their interoperability and
       | predicting the cost is a full time job, easily (it 's mostly
       | large enterprise who can absorb that cost). There's nothing wrong
       | with the pick-and-choose model, if your products are simple, low
       | level, and interoperable. But the product suite has grown
       | organically, seemingly without coherence, so there's very little
       | in terms of paved paths to walk - it's so confusing. When a
       | shining star like Firebase comes along (2014) Google clearly
       | knows not to mess with it too much. But even Firebase isn't
       | strong enough to resist the gravitational pull of the GCP
       | behemoth.
        
         | djit wrote:
         | I miss the App Engine days. As you said it was ahead of its
         | time, simple, straightforward and cheap!
        
         | asciimike wrote:
         | > The reason people liked it is, imo, because it was a single
         | product with multiple features. GCP OTOH, has been about
         | decoupling (or loosely coupling) the product suite, and users
         | are supposed to pick and choose from a giant array of half-
         | products.
         | 
         | "There are two ways to make money, bundling and unbundling." -
         | Jim Barksdale
         | 
         | The quote is mostly provided in jest, but at the same time
         | there are many customers who want something totally bundled
         | that solves 90% of their problems in 20 minutes but literally
         | can't solve the last 10%, and there are other customers that
         | want generic building blocks that can solve 100% of their
         | problems, even if it takes years to do.
         | 
         | I think it makes sense that Google offers customers both.
         | 
         | > But even Firebase isn't strong enough to resist the
         | gravitational pull of the GCP behemoth.
         | 
         | Part of the reason we got acquired is because of the above: we
         | knew that we had a number of limitations (e.g. infra
         | scalability) that could be solved, and we knew that GCP had DX
         | problems offering a bundled mobile offering (App Engine wasn't
         | "mobile" focused).
         | 
         | And that acquisition really paid dividends: we were able to
         | build a _ton_ of "bundled" services for Firebase by 2016, and
         | continue deeper integrations with GCP (Storage, Functions,
         | Firestore, Auth, etc.). There are definitely UX differences
         | (some of them intentional, due to different audiences), some
         | not (e.g. it seems like not having an integrated log viewer is
         | a DX miss, though my assumption is that staffing on the
         | Firebase side is down so the decision was made to just send
         | folks to the GCP console :/).
        
           | snovv_crash wrote:
           | I believe it was the inventor of Regex who said:
           | 
           | Easy things should be easy, and complicated things should be
           | possible.
           | 
           | The problem with GCP is that a bog-standard setup is
           | considerably more complicated than it was before. Maybe the
           | config files are roughly the same, but there isn't a single
           | dashboard where you can see everything from storage to
           | instance usage to queue delays anymore. Instead there are a
           | bunch of dashboards, each with way too much detail for
           | getting a broad overview of your metrics.
        
             | asciimike wrote:
             | > I believe it was the inventor of Regex who said:
             | 
             | > Easy things should be easy, and complicated things should
             | be possible.
             | 
             | Was he being serious when he said that? I'd hardly call
             | regex a technology where easy things are easy and
             | complicated things are possible (there are plenty of
             | impossible things in regex implementations e.g.
             | backtracking in RE2).
        
               | js2 wrote:
               | It is an adage from Alan Kay and correctly worded is
               | "Simple things should be simple, complex things should be
               | possible." It wasn't about any specific technology but
               | rather for what they were building at PARC.
               | 
               | https://www.quora.com/What-is-the-story-behind-Alan-Kay-
               | s-ad...
               | 
               | Larry Wall adopted it for Perl, but he's still not the
               | inventor of regular expressions:
               | 
               | "In a nutshell, Perl is designed to make the easy jobs
               | easy, without making the hard jobs impossible."
               | 
               | https://www.quora.com/What-is-the-origin-of-the-phrase-
               | make-...
        
               | andirk wrote:
               | How about: easy + common things should have tools built
               | for them out-of-the-box, and complicated things should be
               | offered a path to the bare metal.
        
         | js2 wrote:
         | > App Engine was launched in 2008, before GCP, before docker
         | and before Cloud was a term
         | 
         | Cloud computing was a term at least as far back as 1999. We
         | didn't have the technology quite right that soon, but we had
         | the idea and the term:
         | 
         | https://en.wikipedia.org/wiki/Opsware
         | 
         | https://www.wired.com/2000/08/loudcloud/
         | 
         | Archived version of Wired article: https://archive.ph/TeLPQ
        
         | lowbloodsugar wrote:
         | Yeah I was there. It was great because it was, apparently,
         | impossibly cheap. Then they decided to take it out of beta and
         | jack the prices. People who were spending $10/mo suddenly had
         | $1000/mo bill.
         | 
         | Never trust google.
        
           | klabb3 wrote:
           | Yeah I don't think PaaS should ever be proprietary in terms
           | of API surface. It's just perverse incentives, you get
           | subsidized until market saturation, and then they jack up the
           | prices. The cloud providers should, imo, compete on uptime,
           | resilience, performance, etc. Kinda like the VPS or VPN
           | providers of today.
        
             | asciimike wrote:
             | Let's take a quick example of S3: GCS was able to take the
             | same API and they both compete on uptime, performance, etc.
             | Price/GB has remained stable or decreased with new tiering
             | options over time. Managed K8s clusters, SQL databases,
             | etc. are all competing in similar ways.
             | 
             | If folks want to build proprietary APIs, and people choose
             | to use them because they are faster/better/cheaper/more
             | suited to a particular use case, I'm not sure why that's a
             | bad thing.
             | 
             | Engineering is tradeoffs, proprietary API surface is one of
             | many things people consider.
        
               | klabb3 wrote:
               | True, I didn't mean to come off as a purist. I think it
               | depends on the service provided and it's maturity level.
               | If you need basics like auth, persistence etc i think
               | those parts should be open, at the very least have a
               | stable API that has >1 provider. (The SRE analogy would
               | be a SPOF).
               | 
               | For things like push- and email notifications, it makes
               | more sense that a provider is involved (although APIs
               | should probably still be open). New innovations can
               | always start out proprietary, and the inventors can
               | always offer support and managed infra for OSS projects.
               | 
               | Why? I believe the health and future innovations within
               | the tech sector relies on healthy competition, and imo,
               | that means that the majority of standard services have
               | multiple providers to choose from. The only way to
               | migrate from one provider to another is through
               | standardized, or open, APIs. VPCs is a pretty good
               | example of this: I can get the premium option from GCP or
               | AWS, and have uptime, bandwidth, and choose a DC from all
               | over the world. OTOH, I can get a cheaper, local one,
               | depending on my needs.
        
       ___________________________________________________________________
       (page generated 2022-10-15 23:00 UTC)