I was lucky enough to get invited to the Github Actions Beta programme. I have also been doing a lot of work with AWS SAM, and had been looking to publish some common serverless patterns to the Serverless Application Repository. As a proponent of all things serverless, I was wondering how Github Actions could be configured to enable publishing to the AWS Serverless Application Repository, What is the Serverless Application Model? The Serverless Application Model (SAM) is an open source…
Using Typescript with SAM & Serverless Framework
December 23, 2019
Making it easy to deploy code to AWS is a major focus of most serverless frameworks. Python and Javascript tend to be well supported in this regard, and more or less work right out of the box. Handling dependencies, like those installed via package.json, and languages that compile down to javascript (like typescript), can be tricky at times. Typescript throws a few spanners into the process. Typescript requires an extra compilation step and many tutorials out there don't include such a step so…
Applying Code-Splitting to AWS Lambda
September 13, 2019
Serverless Hero Yan Cui recently posed the question "Just how expensive is the full AWS SDK" ? Plenty of people are concerned about cold starts, so it makes sense to be concerned with how can we make our functions as lean as possible to ensure the smallest cold starts and the fastest executions possible. After all, time is money - especially when we are paying by the 100ms. In Yan's article, he noted that you can cut down the time node spends importing a particular SDK client in a few ways. The…
Monorepos and AWS Codebuild
February 03, 2019
A Monorepo generally requires specialised tooling to manage efficiently once they reach an appreciable size. We recently have been working with a client that has a large node-based monorepo that was encountering increasingly larger build times. By introducing optimisations which included the use of lerna, newer npm features (ci installation, package caching) and de-duplicating development dependencies, we were able to achieve a 1000% speed improvement. This story began with a simple conundrum. A…
Bootstrapping GKE Clusters for testing
January 03, 2018
I've recently started to learn the internals of Kubernetes. I've settled on building an operator ; which is essentially a means of extending functionality in a Kubernetes cluster by implementing a Kubernetes controller with storage backed by Custom Resource Definitions. This touches on a lot of concepts that are reused in multiple areas in the Kubernetes code base, and requires covering a large surface area of the Kubernetes golang client. It's a great way to slowly unravel the Kubernetes code…