In my last post I talked a bit about my desire to give recreating my blog using AWS, and in particular using a serverless setup (API Gateway -> Lambda, etc). One of the things i failed to mention is that I've already been working on this off an don for a while and already gotten deep into what's needed to get it done. My general intention for these posts is a sort of development journal, documenting what I'm doing, the issues that I ran into, ways that I ended up fixing those problems, and general thought process I went through to get things done.
Since I've already started working on this, I'd like to share what I've gone through so far, to get more or less up to date, and then start doing proper journal-like entries. I've already started to take notes for some of my future posts, but for the time being, let's get started on what I've done so far.
While I've worked with AWS services on and off for years, the number of services that I've been exposed to have been minimal; generally S3, DynamoDB, and a smattering of others, none of which I would claim to have any sort of serious expertise in (especially given how quickly the services are built upon and improved). My current team at Amazon spent the last year building up a service using mainly the serverless model that I'm going for with my blog platform using Cloud Formation (essentially configuration to define AWS infrastructure). I've had some opportunities to make changes to the CloudFormation configuration, but I didn't find updating the YAML to be very friendly or fun.
When the CDK's GA was announced in July, I was excited by the prospect of putting a user-friendly layer on top of Cloud Formation and started to experiment with it a bit to understand how the APIs work in general and to setup some infrastructure as well.
If you found the idea of writing code to create infrastructure, with all the bells and whistles you expect from an IDE experience intriguing, then a great place to start would be the CDK Workshop that the CDK team put together. It will walk you through the prerequisites for which ever language you choose (though I expect to be doing all of the implementation in Java), as well as walk you through setting up your first application. This makes for a good jumping off point for playing around with creating and updating new resources. This experimenting has also helped me to understand the different AWS services that I'll be using at a much more fundamental level. Being able to use auto-complete to make suggestions is awesome.
Starting here will allow you to get up to speed on things in preparation for the next post.
This whole project is intended to be a thorough deep-dive on the entire process from beginning to end. I'll be sharing as much as I can as I go. I may go on some tangents here or there if I find that I keep doing things the hard way. I basically want to automate as much of the process as possible. I'll try and keep any tangents I go on as separate posts so you can know ahead of time what you want to read and what you want to avoid, though I hope that all the posts will be helpful in some way.
In my next post, I'll go through some example code for defining an API in API Gateway, and why doing so with out-of-the-box CDK code won't scale.