Week 4, 2018 - Go in AWS Lambda; AWS Auto Scaling; Cloud AutoML

By (3 minutes read)

Go has finally arrived in Lambda, Autoscaling in AWS gets unified, and GCP introduces Cloud AutoML for easier machine learning.

Go in AWS Lambda

In a move reminiscent of Docker’s Kubernetes release, AWS also decided to release something I want while I’m on holiday. In this case the support for Go in Lambda that was pre-announced at re:Invent1.

While I haven’t been able to actually do any work on it2, there is a good post on the AWS Compute blog that explains it. Basically it comes down to calling lambda.Start from your main() function and providing a Handler function as the input.

import (
    "github.com/aws/aws-lambda-go/events"
    "github.com/aws/aws-lambda-go/lambda"
)

func Handler(ctx context.Context, request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
    // More code
    return events.APIGatewayProxyResponse { Body: request.Body, StatusCode: 200 }, nil
}

func main() {
    lambda.Start(Handler)
}

There is some flexibility in the Handler function as well, concerning what it does and doesn’t support in terms of arguments and return values.

The main difference with the other languages seems to be that you need to provide a compiled binary and provide that as a zip file. Due to Go’s excellent cross-platform compilation that’s easy enough though and you just build it into your CI/CD chain anyway.

AWS Auto Scaling

In other AWS news, they introduced a new unified scaling method. This is currently only supported in a handful of regions, which makes me think that it’s not a pure software solution, but seems to be a far easier way to handle autoscaling.

So far it’s been possible to configure autoscaling for a number of services, but you had to set up triggers etc. separately. In a way you still define the triggers separately for each service, but instead of doing so through CloudWatch alarms configured for each service separately you create a scaling plan. This plan has its own way to check the need for scaling and comes with several strategies to make it easier. And of course, it provides a single overview of all your scaling across the separate parts of your applications.

One side effect of this is that you no longer need those annoying CloudWatch alarms for scaling down that are often in an ERROR state because you’ve already scaled down to the minimum you want.

Cloud AutoML

Google’s new Cloud AutoML is a way to “democratize AI”, basically making it easier to use machine learning. Up until now, they offered 2 choices: either roll your own using Tensorflow3 or use their pre-defined models. Cloud AutoML is a way to provide a middle ground, a way to create your own models without needing the full AI/ML expertise needed to run something like Tensorflow.

The first product using this is AutoML Vision It provides a drag and drop interface that allows you to upload images and then train the model by defining what it needs to recognize. From there it will then supposedly do the rest for the model building and you can simply deploy the model into GCP.

This definitely sounds like an interesting product, and I’m looking forward to seeing where it will go in the future.


  1. Don’t get me wrong, I’m not complaining that it’s finally available. ↩︎

  2. But as I post this shortly before getting on a plane back, expect more on this in the near future. ↩︎

  3. Or an alternative ↩︎

comments powered by Disqus