How we built Hamiltix.net for less than $1 a month on AWS
blog.badsectorlabs.com
blog.badsectorlabs.com
Having dealt with payment gateways, I would not assume that.
I can "change the price" of anything on Amazon with dev tools, but that won't help me when I go to buy it. I appreciate the concern because amazingly this has been a real vulnerability on sites before (recently on a crypto exchange I think).
Firebase still has a ton of features we don't have, what would you say are the most important things for us to work on?
Because it is based on P2P/decentralized cryptography, it is actually pretty hard and cutting-edge to implement (you get end-to-end encryption automatically with it!), but we've made it ridiculously easy for developers to use:
- Easy getting started guide: https://hackernoon.com/so-you-want-to-build-a-p2p-twitter-wi...
- 4 minute nad 40LOC interactive coding tutorial: https://scrimba.com/c/c2gBgt4
It is alpha though, still has several more features that need to be added to make it usable for different types of app (so you might want to stick with Firebase till then). Please let me know if you have any questions or anything else I can help with!
We have pretty in depth conversations on the chat room too, here https://gitter.im/amark/gun but I'm more than willing to answer any other questions you have that might not be covered!
- You can have more than 1 graph at the same time, yes.
- Storing data on edges can be done in GUN by having an "edge node", Neo4j has a special built-in edge node which makes things easier (including bidirectional edges, which can be done in GUN, but requires making an edge node).
- Neo4j's Cypher query language has a lot of built in edge search algorithms, we have not (but plan to) built these yet.
- Neo4j has a very nice dashboard, our community has built a couple similar tools, but nothing as comprehensive.
Summary: Neo4j, being over a decade old, has a lot of features that we haven't built yet.
Why use GUN instead? The biggest kicker is it being based on a P2P/decentralized (Master-Master) architecture, which makes ops/scaling much easier and a ton of other things. If you don't need this, probably stick with Neo4j for its feature set.
Lock-in is a problem but it's true for any non-open service you integrate with. I've considered it and figured I'd rather have the features firebase offers than not. Plus I could actually swap to a CouchDB service like Cloudant really easily for my use case (sync'ing JSON structures between browser sessions).
On Scaleway, I averaged 53 outages every month. Average response times were slower. Longer outages meant I had to manually hard-restart the server, which corrupted all the database indexes. Scaleway also has a huge problem with machine availability. Last time I checked, everything was out of stock.
I'm hosting on AWS now, and it's about as reliable as DigitalOcean.
Outages are all tracked by Pingdom.
Scaleway not so.
I like the idea behind serverless development, but DO is $5/month and is easy to setup and maintain. From what I understand as your business grows AWS costs skyrocket and just starting out it's more complicated than a DO solution.
The idea is great, but looking forward to the day where serverless is the default solution because it's easier and cheaper. Not sure we're there yet.
Once you hit high levels of traffic, instead of panicking and trying to add more servers and fixing DB structure, you do a cost benefit analysis and see what to do next. Either work on reducing your cost slope, or make it logarithmic by moving to regular servers.
> Once you hit high levels of traffic, instead of panicking and trying to add more servers and fixing DB structure, you do a cost benefit analysis and see what to do next. Either work on reducing your cost slope, or make it logarithmic by moving to regular servers.
...and that's a good reason to try to avoid the lock-in of AWS specific services. Relatively entry level setups on alternative platforms will let you scale well past the system where AWS costs starts to get painful and people start panicking about how to cut costs. When you hit that point you really don't want to be facing a major re-engineering effort to be able to even use other options to bring the cost down just as the costs are soaring.
It's actually closer to 70x
Hetzner: 1.25 USD per TB (after 30 TB free per server) [1]
AWS: 90 USD per TB [2]
So, 100 TB at Hetzner will cost you 125 USD (not counting the 30 TB free). You would pay 9000 USD at AWS.
I had to migrate away from Hetzner because I was actually paying 300 dollars on traffic alone.
https://github.com/nzoschke/gofaas
One difference is that I use SNS for cheap email or SMS error notifications.
The CRUD functions themselves are easy to write and test.
Then everything else is handled by the infrastructure layer. Auth, security policies, rate limiting, request timeouts, autoscaling, logs, tracing, etc.
With Rails the developer has to build a lot of this into the application layer. And the dev has to do more operations over time to maintain the app and database.
I am working on a boilerplate app that demonstrates all the functionality you get from “serverless” and documents all of the things we no longer have to worry about:
Once you have made this investment, you get scale (almost) for free (at least as concerns development/sys admin time). No need to worry about your $5 DO conking out in the middle of the night because you got Slashdotted or whatever the kids call it these days.
Oh god no.
Maybe if this system is not expected to ever grow in complexity. Otherwise this will become a big source of frustration really soon. And even if it does not, it's very easy to get a flood of non-actionable alerts for a transient condition.
It would be better to collect error rates and alert on that. Also the other golden signals.
Not to mention that for back-end developers, the learning curve is steep and ever-changing especially when one considers the "build" process. Is it grunt, or gulp these days, or webpack, or NPM, or some Frankenstein combination of all of them?
developer toolset : amazon lambda
business toolset: zapier
personal toolset: ifttt
correct here?