App Engine for Go Now in General Availability
groups.google.com
groups.google.com
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!
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.
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!
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.
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!)
http://www.h4labs.com/dev/ios/swift.html
Anyway, I'd like to hear from other Go web developers. Libraries, frameworks, etc that work well on App Engine.
https://h4labs.wordpress.com/2014/10/13/simple-go-web-server...
Direct source: https://github.com/melling/GoWebServer
Go on App Engine is not hard: https://cloud.google.com/appengine/docs/go/
or is the CSS messed up ?
This looks a lot cleaner and usable http://imgur.com/zLdnKuy
edit: also you can just twitter bootstrap everything together
It's not that Google prevents you from getting your data, but as you develop you start to lean on more and more App Engine specific services (e.g. Datastore, identity, images, task queues, etc.) just because they're so convenient to integrate with. You also have to engage in a lot of funny little hacks to deal with App Engine idiosyncrasies.
The next thing you know, you've got 50,000 lines of code and the thought of porting it all to another platform with an identical topology is hardly any more palatable than the prospect of rewriting it all from scratch (since you've invariably accumulated warts you'd like to refactor anyway).
App Engine is great for MVPs and toy projects. And it can be great for large scale projects, but you better be sure you'll never want to run it anywhere else...
I believe this is way simpler. Using interfaces will coral your datastore code into one location. Then, you only need to change that code in a very modular way. Heck, give the job to a friend and go for a walk. You can review the changes he made later without worrying that he crossed your routes up. Heck, you can even run your tests (same tests as before since you are using an interface) against your new datastore.
The biggest difference is that you don't have to do any server management. You toss your app to Google, and they handle all of the deployment, distribution to multiple machines, load balancing, etc. I'm assuming that's the case for AE+Go as well.
Google App Engine is a very tightly controlled, and very inflexible, system for deploying applications which use google's App Engine services, Datastore, task-queues and an array of other useful things.
App Engine provides a very restricted development environment, you can choose from three programming languages, Python, Java and Go. For each of these they provide a custom modified runtime/compiler for running/building your application. The trade-off for this is that App Engine is able to automatically scale the number of instances of your application running to meet user demand (if you are able to pay for it). The restricted environment is somewhat idiosyncratic and is designed for scalability of stateless servers with a large, also idiosyncratic, datastore with memcached caching for speed. Good for a wide range of web-service development preferably with lots of independent requests which touch separate pieces of data.
It may not sound like it from the description, but I really like App Engine. But, it is important to know what it is for, and what it is not for.
Give it a try :)
(This was a first-hand source of frustration for the team I was working with a few years ago.)
You have been warned.
It eventually resolved after a few hours, but both during & after the incident, there wasn't any public communication from Google.
https://groups.google.com/forum/#!topic/google-appengine/IIv...
https://groups.google.com/forum/#!topic/google-appengine/voR...
Doesn’t make my comment untrue. Or worth downvoting. If we don’t like the lies, what else can we do but call attention to them?