That said, this is the only Go hosting service I could find that has a free tier and their development binaries are very well done!
That said, this is the only Go hosting service I could find that has a free tier and their development binaries are very well done!
Finally if you do give it a try would love to hear any feedback you have.
I mean, when you know about Heroku's buildpacks you have access to all of Heroku raw power.
That said, I didn't take a very close look so maybe it was easier than I anticipated!
Let's say I have a bunch of pet projects and applications I want to run (blog, IRC bouncer, some kind of photo management). They take negligible CPU most of the time and ~128MB RAM each.
If I throw these on Heroku, I have to pay $7/each for 3 separate dynos, for a total of $21. Alternatively I can pay nothing but deal with my stuff being down 25% of the time.
If I throw them on Vultr or DigitalOcean, I pay $5 for a 512MB (768MB on Vultr) box and they all run happily ever after.
Heroku forces me to buy 4x the resources I actually need, which is a huge waste. It'd be nice to share my pool of resources so that if I use 384MB of RAM, I pay for 384MB of RAM or at least only pay for 512MB.
I know it's very unlikely you care about users like me and that's totally fine, I know things like this aren't particularly lucrative. Just thought I'd mention it since you asked about feedback.
PaaSes are expensive if your time is free.
I work for a company which donates enormous engineering resources to an opensource Heroku competitor (Cloud Foundry). As a note, Cloud Foundry lets you specify exactly how much RAM you want to use. You can try it on Pivotal Web Services[0] (hosted by my employers) or BlueMix.
You can try it on Pivotal Web Services or BlueMix.
Disclaimer: I was seconded to the Cloud Foundry buildpacks team for ~7 months.
Otherwise, you're right in that there doesn't exist a 'de facto' auth package for Go like Devise in the Rails world. Part of this is because you can't rely on stuff like ActiveRecord, ActionController, etc. to do some of the heavy lifting for you (Go being just a language, not a framework on its own).
FWIW, I'm partway through writing a concise cookie- (and optionally Redis-) backed store that effectively asks you to provide a `User` type that can satisfy `GetID() string` and `IsAdmin() bool` methods. The middleware/lib does most of the work once you call `mypkg.SetUser(yourusertype)` in your login handler.
This obviously doesn't cover features such as password reset emails, user registration, etc because you either have to make a ton of assumptions about your users' design/implementation, keep things limited, or fall into the trap of "provide options for every possible use case".
PS: Ping me via email if you want some guidance. Happy to share some code snippets and/or input as I've been down the roll-my-own path a couple of times already.
But MAJOR MAJOR MAJOR Painpoints are:
- User : only google account supported
- email : only can use <appid>@appspotmail.com
- Image upload support
otherwise very nifty to get a site out in less than a day!
The problem I ran into was that with python you could only use certain native libraries provided by google. To use third part unsupported libraries in python you had to do a hack where you submit them with the app but I managed to get it working with a bit of fiddling.
[0] Though this is true only in terms of stable features; it does have experimental support for OpenID identifiers.
Isn't google account support one account more than you'll get at AWS or Heroku or anywhere else? Why is this a MAJOR MAJOR MAJOR painpoint?
> email : only can use <appid>@appspotmail.com
Not true at all. You can use any email address simply by adding it to your permissions list.
> Image upload support
What does this mean? I've built a few photography apps on GAE and had no issues with image upload. What do you mean specifically?
These MAJOR MAJOR MAJOR painpoints aren't work mentioning in the review of a service if they are also MAJOR MAJOR MAJOR painpoints everywhere else.
blaincate wasn't doing a full review. They merely provided some very useful observations.
Simmer down. You have been zealously defensive about App Engine throughout this whole comment section.
Except they're false. False claims + Heroku promotion in a GAE announcement thread. Stay classy, people.
There are lots of bad things to say about GAE without peddling nonsense.
They won't let you run any python module with C code... which means you can forget about using BCRYPT or SCRYPT, for example.
Their image manipulation and edge caching service won't handle any photo wider than 1600px.
Domain name management is shit... you have to use Google Apps if you want that.
See this page: https://cloud.google.com/appengine/docs/quotas#Mail
"The daily email quota for billing-enabled apps depends on which billing system your app is using. See Increasing your Daily Mail Quota below to learn how to increase the quota in each case."
Once you go to the referenced page (https://cloud.google.com/appengine/docs/quotas#up_mail_quota), you find this:
"When you enable billing, the email quota remains at 100 messages per day. You must explicitly request a higher mail quota. Go to the Quota Details page of the Admin Console and scroll to the Mail section. There you'll find a link to submit a request for additional email quota. After you submit the request you can monitor its status by visiting the same link again. This will display a page that shows the status of the request: whether the request has been granted, is under review, or has been denied. If the request is granted it may be several minutes before the new quota of 20,000 messages per day takes effect. If the request is denied you cannot make another request to increase mail quota until some time has passed.
If your app needs to send more than 20,000 messages per day, you can sign up for a support package which entitles you to ask for a higher quota."
https://code.google.com/p/googleappengine/issues/detail?id=2...
- mail : send email on behalf of app users : not supported. Need to integrate with sendgrid or third party libray . native support would be good.
- Image : I could use the blob earlier, but now blobs are deprecated, and need to use google cloud.
I am not regular web developer, so other people may have valid points.
Could you explain this? You want to send outgoing email with your users email addresses in the FROM field?
> Image : I could use the blob earlier, but now blobs are deprecated, and need to use google cloud.
Could you please explain how this is a bad thing? Doesn't google cloud make things easier and faster?
How about exactly that on App Engine, rather than just something similar: https://www.allbuttonspressed.com/projects/djangoappengine
- Email: I remember it works with gmail; you can overwrite the "reply-to" header.
- Image Upload: seems to work fine by uploading to blobstore or GCS. Image serving is superb with images.get_serving_url!
https://github.com/likestripes/kolkata //user accounts API
https://github.com/likestripes/calcutta //basic UX
(ping me if you've got an interest or opinion on these!)
Don't try to go even cheaper, that way lies madness.
You probably wouldn't want to run Reddit on App Engine, but anything with medium traffic or decent monetization should work out just fine.
The only other caveat is that it may depend on what the app does and how you utilize the datastore. If you don't consider cost of the datastore when building an app, it could end up being expensive like you mentioned.