Sign in

Senior software engineer designing and building AWS microservices, typically serverless. Working primarily with Python and TypeScript.

Subscribing and responding to changes within S3 buckets

Recently celebrating its fifteenth birthday, Amazon Simple Storage Service (S3) was the first service to launch within the vast collection of AWS amenities available to us today. Offering everyone object storage in the cloud, S3 supports a wealth of APIs for object storage, retrieval, and versioning.

Objects within S3 are persisted to resources called buckets. These buckets, created by users, store unlimited numbers of objects each ranging from 0 to 5TB in size. Replication can be configured between buckets for asynchronous copying of objects either within or between AWS accounts. Whenever an object is created, deleted, or replicated, we may…


Lessons learned maintaining serverless software in production

With over two years experience developing software on serverless cloud platforms — much of that time spent continuously deploying changes to production — now seems as good a time as any to share some tips and tricks when it comes to maintaining serverless software in production.

Diagram by Author

Working exclusively on Amazon Web Services (AWS), this experience spans from Lambda functions, to Step Functions, to Aurora Serverless relational DB clusters, and more! There’s plenty lessons learned which cover all these technologies.

Starting with throughput. “Serverless is more!”, I hear you cheer. It certainly is. The ease with which serverless technology scales is…


A reflection on the pros and cons compared to in-house software

In the last twelve months, contributing to open-source code has become an increasingly exciting and prominent factor in my life. Covid-19 restrictions have played a significant role here — giving me time to contribute at home and give back to the open-source communities that have shaped my career so far.

source: Viktor Forgacs, Unsplash

Ranging from CPython, the most widely used Python runtime, to the Amazon Web Services Cloud Development Kit (AWS CDK), my open-source contributions have varied considerably in size. As we know, size isn’t everything — the value of a feature or bug fix shouldn’t be judged by the line count. Rather…


Browser-based shells configured with AWS CLIs and SDKs

Cloud computing involves a myriad of tools to build your software and provision hardware. These tools ultimately depend on the programming languages chosen and the underlying technology adopted. With Amazon Web Services (AWS), you may find yourself using the AWS Command Line Interface (CLI) or the AWS Serverless Application Model (SAM) CLI in addition to traditional apparatus like Bash and Node.js.

Managing these tools can be cumbersome, particularly if you’re new to AWS or unlikely to be using them on a regular basis. …


Seamlessly rolling out new features to your application users

With any large scale software project, there are multiple avenues to consider when it comes to deployment: whether to ship your new software all at once, roll out the project in phases, or release a canary into the coal mines.

With all-at-once delivery, your new product will be presented to users in a single, “big bang” release. This would be the quickest approach, but yields large room for error which may come back to bite the development team further down the line. …


A New Approach to RESTful APIs in Amazon Web Services

A recent addition to API Gateway, HTTP APIs provide a new avenue to define RESTful APIs in AWS. Similar to their REST API counterpart, HTTP APIs integrate seamlessly with HTTP endpoints and Lambda functions to serve requests, whilst aiming to operate at lower cost with lower latency.

Working with the latest version of AWS Cloud Development Kit (CDK) — 1.42.0 at the time of writing — let’s run through a short demo of HTTP API. We’ll explore how to set up the API, configure paths, and handle requests sent to the API for processing.

CDK constructs for HTTP API remain…


Synchronous processes to ingest large volumes of data in AWS

Since their first launch in November 2016, Step Functions have proved to be a valuable resource for the orchestration of both simple and complex processes in AWS. They offer an abundance of great features — supporting synchronous tasks, asynchronous callbacks, and activities on EC2 and ECS instances.

Permitting over 2,000 execution starts per second, Step Functions sufficed for the majority of use cases. However, you may have wondered, how could we manage workflows for greater volumes of data? Regardless of our approach to this, how could we minimise costs if we’re processing so many events?

AWS addresses these questions with…


Detecting faces, objects, and scenes using Amazon Web Services

Ranging from hand written number recognition, to facial identification, to speech analysis, machine learning proves invaluable across an abundance of fields. With a growing community joining Amazon Web Services, the demand for classification algorithms in the cloud continues to grow. So what does AWS offer that we can apply to our applications?

Launched in 2016, Amazon Rekognition allows us to detect objects, compare faces, and moderate images and video for any unsafe content. This is only a few of the many features it delivers. …


Launching database servers with MongoDB compatibility in AWS

Announced early in 2019, Amazon DocumentDB delivers MongoDB compatibility to Amazon Web Services (AWS). Arriving only a few months after MongoDB challenged cloud providers with a new open-source license, DocumentDB is built from the ground up as a document database service, taking advantage of MongoDB’s open-source functionality.

source: SD Times

Starting with a clean slate on the AWS console and a fresh stack initialised by the AWS Cloud Development Kit (CDK), let’s provision and configure a DocumentDB instance both by hand and programmatically. An AWS account is required (free tier available). Beginning with the console, let’s visit the DocumentDB page.

Console Configuration

Presented with a…


Build and deploy your AWS services using AWS CDK and Jenkins

When you define your infrastructure as code, you’ll often want to build and deploy your service with a pipeline — this forms the foundations for Continuous Integration and / or Continuous Delivery (CI / CD) further down the line. If you’re looking for a tool to achieve precisely that, then look no further, for declarative Jenkins pipelines will serve you well. Released in February 2017 as part of the Jenkins Pipeline Plugin, declarative pipelines are designed to automate the build and deployment process.

Working with a fresh AWS Cloud Development Kit (CDK) project, let’s implement a declarative Jenkins pipeline that…

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store