See how a Microsoft engineer enabled Go on web apps in Azure Websites

 

@WadeWegner

wwegner@microsoft.com
http://www.wadewegner.com

... alternatively titled:

Go on Azure

Agenda

  • Me: by day, by night
  • Why Go?
  • Why Azure?
  • Motivation
  • Early prototypes
  • Getting more sophisticated
  • Continuous deployment
  • Outstanding issues/questions

By Day

  • Program Manager at Microsoft
  • Focused on Azure
  • Currently working on an unreleased set of products
  • Work remotely from my basement

By Night

  • Beer
  • Homebrewing
  • Xbox (currently Destiny)
  • Family
  • OSS
  • Learning

Why Go?

Why Azure Websites?

Motivation

First Prototype

How does this work?

HttpPlatformHandler

  • Process management of http listeners
  • Proxy request to managing process
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="httpplatformhandler" path="*" verb="*"
                 modules="httpPlatformHandler" resourceType="Unspecified" />
        </handlers>
        <httpPlatform processPath="d:\home\site\wwwroot\go\bin\go.exe" 
                      arguments="run d:\home\site\wwwroot\server.go" 
                      startupTimeLimit="60">
            <environmentVariables>
              <environmentVariable name="GOROOT" value="d:\home\site\wwwroot\go" />
            </environmentVariables>
        </httpPlatform>
    </system.webServer>
</configuration>

Getting More Sophisticated

Site Extensions

Continuous Deployment

Kudu & Git

Outstanding Issues

  • Restarting w3wp process on multiple VMs
  • Returning the git remote url automatically
  • Built-in Go language support 
    • Short term: "go-lite" package
  • Automatically handle static resources

Thank you!

See how a Microsoft engineer enabled Go on web apps in Azure Websites

By wadewegner

See how a Microsoft engineer enabled Go on web apps in Azure Websites

  • 757