Go on App Engine: tools, tests, and concurrency
13 Dec 2013
Tags: appengine

Andrew Gerrand

Johan Euphrosine

* Background

When we [[https://blog.golang.org/go-and-google-app-engine][launched Go for App Engine]]
in May 2011 the SDK was just a modified version of the Python SDK.
At the time, there was no canonical way to build or organize Go programs, so it
made sense to take the Python approach. Since then Go 1.0 was released,
including the [[https://golang.org/cmd/go/][go tool]] and a
[[https://golang.org/doc/code.html][convention]] for organizing Go programs.

In January 2013 we announced
[[https://blog.golang.org/the-app-engine-sdk-and-workspaces-gopath][better integration]]
between the Go App Engine SDK and the go tool, promoting the use of
conventional import paths in App Engine apps and making it possible to use "go
get" to fetch app dependencies.

With the recent release of App Engine 1.8.8 we are pleased to announce more
improvements to the developer experience for Go on App Engine.

* The goapp tool

The Go App Engine SDK now includes the "goapp" tool, an App Engine-specific
version of the "go" tool. The new name permits users to keep both the regular
"go" tool and the "goapp" tool in their system PATH.

In addition to the existing "go" tool [[https://golang.org/cmd/go/][commands]],
the "goapp" tool provides new commands for working with App Engine apps.
The "[[https://developers.google.com/appengine/docs/go/tools/devserver][goapp serve]]"
command starts the local development server and the
"[[https://developers.google.com/appengine/docs/go/tools/uploadinganapp][goapp deploy]]"
command uploads an app to App Engine.

The main advantages offered by the "goapp serve" and "goapp deploy" commands
are a simplified user interface and consistency with existing commands like
"go get" and "go fmt".
For example, to run a local instance of the app in the current directory, run:

	$ goapp serve

To upload it to App Engine:

	$ goapp deploy

You can also specify the Go import path to serve or deploy:

	$ goapp serve github.com/user/myapp

You can even specify a YAML file to serve or deploy a specific
[[https://developers.google.com/appengine/docs/go/modules/][module]]:

	$ goapp deploy mymodule.yaml

These commands can replace most uses of `dev_appserver.py` and `appcfg.py`,
although the Python tools are still available for their less common uses.

* Local unit testing

The Go App Engine SDK now supports local unit testing, using Go's native
[[https://developers.google.com/appengine/docs/go/tools/localunittesting][testing package]]
and the "[[https://golang.org/cmd/go/#hdr-Test_packages][go test]]" command
(provided as "goapp test" by the SDK).

Furthermore, you can now write tests that use App Engine services.
The [[https://developers.google.com/appengine/docs/go/tools/localunittesting#Go_Introducing_the_aetest_package][aetest package]]
provides an appengine.Context value that delegates requests to a temporary
instance of the development server.

For more information about using "goapp test" and the aetest package, see the
[[https://developers.google.com/appengine/docs/go/tools/localunittesting][Local Unit Testing for Go documentation]].
Note that the aetest package is still in its early days;
we hope to add more features over time.

* Better concurrency support

It is now possible to configure the number of concurrent requests served by
each of your app's dynamic instances by setting the
[[https://developers.google.com/appengine/docs/go/modules/#max_concurrent_requests][`max_concurrent_requests`]] option
(available to [[https://developers.google.com/appengine/docs/go/modules/#automatic_scaling][Automatic Scaling modules]] only).

Here's an example `app.yaml` file:

	application: maxigopher
	version: 1
	runtime: go
	api_version: go1
	automatic_scaling:
	  max_concurrent_requests: 100

This configures each instance of the app to serve up to 100 requests
concurrently (up from the default of 10). You can configure Go instances to
serve up to a maximum of 500 concurrent requests.

This setting allows your instances to handle more simultaneous requests by
taking advantage of Go's efficient handling of concurrency, which should yield
better instance utilization and ultimately fewer billable instance hours.

* Conclusion

With these changes Go on App Engine is more convenient and efficient than ever,
and we hope you enjoy the improvements. Please join the
[[http://groups.google.com/group/google-appengine-go/][google-appengine-go group]]
to raise questions or discuss these changes with the engineering team and the
rest of the community.
