End to End Deployment on GCP

Table of Contents Disclaimer Introduction Assumptions Architecture Create a Project Enable APIs Create VPC Create Subnets Create Firewall Rules Create Private connection to DBs Create NAT Router Create DB Populate env vars Push container to gcr Create Instance Template Create Managed Instance Group (MIG) Create IPv4/IPv6 address Create Backend Service Setup Load Balancer Cleanup Disclaimer This tutorial is provided “as-is” without any representation or warranties, express or implied.

Risk First Assessment

We are all familiar with the usual way how software project deliverables work: requirements, design, development, testing, deployment, monitoring… However, how many times do we do a risk assessment of our projects? We always seem to focus on the steady state where most of the things work. We don’t spend as much time in thinking about failure scenarios / risks to our project. I differentiate this from say a threat analysis / matrix.

BioHacks

I recently read a book called “The Gene” (by Siddhartha Mukherjee). It gives a great introduction to the history of our understanding of the human genome. That got me curious and I started playing around with DNA Sequences (in the software world !). I wrote simple functions to do things like DNA transcription, DNA Reverse Complement etc. It is available for anyone to use at: biohacks.jimmyislive.dev/ The backend is AWS Lambda functions.

'Remember Me' using the Go gorilla framework

A ‘Remember Me’ type functionality is something that is available on most websites today. Essentially what it does is that if the checkbox is checked when logging in, the session is kept logged in for a much longer duration (say a week or month). Otherwise, when you close the browser, the session terminates and you have to log in again the next time you visit the site. In golang, it is implemented easily using the gorilla toolkit.

GoCVE

Just released a new tool I have been working on: GoCVE GoCVE is a simple golang based command line tool to query CVE data. All you have to do is download the CVE data and insert it into a local database you run (currently sqlite and postgres are supported). The tool helps you to download CVE data and also populate the DB. You can then use GoCVE to conveniently get, search or list CVE data, from the command line.

Co-operation and Competition

I came across an interesting term in a book I just read. The Origins of Virtue by Matt Ridley. In it he used the term “Co-operation and Competition” as a means to describe the “tug-of-war” within the various biological processes of the human body. The same applies to industry / society / economies too. A healthy combination of both is required to thrive. Co-operation on it’s own would devolve into something like Communism.

Go Docker Container

If anyone is looking for a ubuntu based container with golang 1.13, I just pushed one up to docker hub: docker pull jimmyislive/goubuntu And this container has vim ! (Not sure why many public containers don’t have any editor installed on them.) The Dockerfile used to build this container is available on Github

Text to Morse Code

Recently I learnt morse code. It was pretty easy to translate characters to dot/dashes (it took me under a day). I then wrote a Go program to translate text to morse code and back. If anyone wants to play with it, it is available at text2morse.jimmyislive.dev The site is hosted by Netlify and the backend is built using terraform, api-gateway and aws lambda. Enjoy !

Automated setup of a static site on S3 using Terraform

Many people, businesses don’t need a dynamic website. they just need a placeholder on the web that gives information to customers about their business, contact info, address etc. A static website is a pretty easy way to achieve this. AWS S3 allows you to host static content and serve it up as webpages. You can set it up manually by following instructions here. This post provides scripts for automating it via Terraform.

AWS Config

AWS Config is a service provided by AWS to keep track of configurations (and their possible drift) of all the resources you bring up in AWS. When your infrastructure setup is small, you probably don’t have to be worried about a configuration store for your resources. But as you grow, it would become increasingly difficult to manage and keep track of all the moving pieces, especially if you have a team of engineers continually deploying and changing things.