
App Engine for Go Now in General Availability - agonzalezro
https://groups.google.com/forum/#!topic/google-appengine-go/as9wUqT77YU/discussion
======
chrisfosterelli
I've been trying out App Engine for Go the last couple weeks for a side
project, but it's been a bit of a headache. Having to use their data store was
a little annoying to begin with, but I was able to get past that one. Once I
started playing with user accounts I was very frustrated to learn that they
only support Google Account login functionality... I have been looking at
implementing my own but Go doesn't appear to have a common authentication
package and the advice often seems to be "roll your own". Any advice for doing
this?

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!

~~~
blaincate
I have been a python appengine user for last 2-3 years. It is really useful to
get a prototype out fast.

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!

~~~
markdown
> User : only google account supported

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.

~~~
gtaylor
> 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.

~~~
markdown
> They merely provided some very useful observations.

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.

------
melling
I've been using Go on App Engine for the past 6 months for a weekend project.
My goal is to build a little search engine for Swift language/iOS resources.
At the moment, I don't crawl any sites, just search titles and tags. I've been
happy with the performance. Seems snappy?

[http://www.h4labs.com/dev/ios/swift.html](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.

~~~
quadrature
is it supposed to look like this
[http://imgur.com/0vngGP1](http://imgur.com/0vngGP1)

or is the CSS messed up ?

~~~
melling
Yes, I'm an engineer. :-(. I was going for a simple Google results look. I had
something that I thought was nicer but Google wanted mobile ready pages so I
made it sparse.

~~~
quadrature
No worries, I was just wondering if something was wrong on my end. There's a
lot of simple things you could do to make it look better, you can start by
pushing the whole site up. Right now most of the valuable content happens
below the fold of the site. A lot of the stuff on top either doesn't need to
be there or doesn't need to be the size that it is, so just prioritizing the
screen space for results would go a long way. Then you can do simple things
like adding dividers between results.

This looks a lot cleaner and usable
[http://imgur.com/zLdnKuy](http://imgur.com/zLdnKuy)

edit: also you can just twitter bootstrap everything together

~~~
melling
Thanks. I'll give it a try.

------
pekk
Whether to use Go on App Engine or not is a much less important question than
whether to use App Engine or not. Java is also a good choice on App Engine.
But either way, using App Engine dramatically affects almost any decision
you'll make about how to build, and it ties your fortune to the sometimes-
capricious product decisions made for App Engine.

~~~
ryandvm
This cannot be stated strongly enough. App Engine is a powerful platform, but
the lock-in is very real.

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...

~~~
jamra
One of the techniques to mitigate that problem specifically in Go is to create
interfaces for everything. For example, instead of calling the datastore
directly, create an interface with only the methods you need. Then, if you
need to swap out your data store, you do so from the implementation of the
interface, not having to change the code your business logic runs in.

~~~
Jabbles
How is that simpler than writing a package that replaces the datastore, then
changing your imports?

~~~
jamra
If that feels simple to you, knock yourself out.

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.

------
webkike
I have been really enjoying Go App Engine support for some time now. It's
pretty convenient to write web apps in Go, although to be fair all my projects
have been super simple. I don't really have any experience making anything
beyond a simple forum.

------
ariwilson
Nice! I've been using this for a few years for my Scrabble solver app but it's
good to know they've committed to it for the long term :).

------
nodivbyzero
This is good news. Just out of curiosity, how App Engine with Golang is
different than Digital Ocean with Golang????

~~~
fmstephe
Digital Ocean is (I believe) a virtual machine hosting service. You get a VM
with some OS and an ip address.

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 :)

~~~
jsolson
It's not so restricted if you use Managed VMs instead of (or in addition to)
the sandboxed App Engine: [https://cloud.google.com/appengine/docs/managed-
vms/](https://cloud.google.com/appengine/docs/managed-vms/)

~~~
pokstad
Yup, I just did a tutorial on using MVM's:
[http://pokstad.com/2015/07/29/golang_and_docker_on_gae.html](http://pokstad.com/2015/07/29/golang_and_docker_on_gae.html)

------
alanh
PSA: Google is notorious for blatantly lying about App Engine availability.
Today’s yellow alerts and red exes, on the uptime/status page, somehow always
become yesterday's green checks.

(This was a first-hand source of frustration for the team I was working with a
few years ago.)

You have been warned.

~~~
crb
On the contrary, check out
[https://status.cloud.google.com/summary](https://status.cloud.google.com/summary).
Serious incidents (eg
[https://status.cloud.google.com/incident/appengine/15019](https://status.cloud.google.com/incident/appengine/15019))
include a full incident report, including root cause analysis,.

~~~
jfoster
There have been incidents that Google didn't acknowledge at all. There was one
day where all sites using custom domains were redirected to Google.com for
several hours, including their own Chrome Web Store. (which, I presume, runs
on App Engine)

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/IIvw-WuBY2A)

[https://groups.google.com/forum/#!topic/google-
appengine/voR...](https://groups.google.com/forum/#!topic/google-
appengine/voRDhS3nS78)

------
0xFFC
off topic , Do you think they will do same thing for dart too ?

~~~
yowmamasita
Probably not. But you use Dart, NodeJS and any other languages with Managed
VMs

[https://cloud.google.com/appengine/docs/managed-
vms/](https://cloud.google.com/appengine/docs/managed-vms/)

