I've been involved with the SmokeDetector spam hunting project for several years. In that time It's grown from
a small Python script to a large combination of Python, Ruby and user scripts. The infrastructure hasn't really changed
in that time, though, and it's starting to show. SmokeDetector, the Python script, is run by multiple users so that
random network problems that kill the instance don't take the entire system off line. Arguably, the project should
work on fixing this instability, but the alternative that we came up with works too.
At least it did. Now this distributed way of running is starting to cause issues. Keeping each instance in sync
with one another is a very difficult problem. We've built a decent solution to this for handling spam patterns,
but we've failed to replicate this for other things like permission sets or notifications. Adding this involves
integration with GitHub and a series of new commands. It's painful.
One of the recent discussions to solve this problem was a centralized database. That brings me to this course.
The AWS Serverless APIs & Apps - A Complete Introduction by Maximilian Schwarzmüller on Udemy
looked like a good overview for AWS lambda and DynamoDB, two solutions the SmokeDetector project was looking
This course provides a good overview of Amazon's API Gateway, AWS Lambda and several other Amazon services. There
is a little bit of coding involved - using NodeJS - but a large majority is dedicated to working in the various Amazon
consoles. Except for one optional lecture, the entire course can be completed using Amazon's free tier. This is
great for a course and one of the factors I used to determine if I really wanted to take the course. The instructor
is very clear, throughout the course, which aspects cost additional money so that no unexpected charges show up
The course covers the API Gateway, AWS permissions, AWS Lambda, body mapping templates, DynamoDB, authentication with
Cognito and hosting a serverless SPA. At first glance this seems like a lot to cover in an 8 hour course. The instructor
has broken these into small digestible lectures that do a good job of introducing each new service, explaining the theory
behind each and then using the service to implement functionality into the course long project.
A course long project is a good way to show how each of these Amazon services are useful to a larger project. Instead of
focusing on a small example project where it is difficult to expand the course work into the real world, a real world
project with various requirements is used. This project uses each of the services I mentioned above in a natural way.
Implementing new functionality doesn't feel forced, instead it is something that users would expect from a modern application.
I am very happy with this course. Everything was very well presented. The project was useful because I can easily understand
how each of the Amazon services function. I also have a good idea how the console works and how to troubleshoot problems
because of the work that was done in this course.
My only complaint with regard to this course is that the video lectures are interrupted with text based lectures consisting
of more details and links to documentation. I appreciate these links and used several of them, but the interruption of the
videos to present these broke the nice flow of the lectures. Presenting these links at the end of the section, I think would be
less of an interruption. This was a minor thing, though, and doesn't take away from how much I enjoyed the course.
I feel that I have a decent understanding of Amazon's services at this point. I am looking forward to applying this new
knowledge and, hopefully, improving the SmokeDetector infrastructure at the same time. I highly recommend this course
if you are thinking of migrating anything to Amazon. I feel much more comfortable about moving aspects of a project
to this new solution.