OVERVIEW

Tldr; I passed my AWS Developer associate exam, but in the actual day job, that knowledge wasn’t cutting it. I felt I was getting ‘left behind’ in conversations. And I also believe in ‘train how you play’ – flashcards are for exams, tutorials are better for the day job.

Since I had a Whizlabs subscription anyway I used the Deep-Dive lab (affiliate link disclaimer) and got a lot out of it personally. It filled a lot of gaps between the exam theory and the practical.

So, onto the longer version:

Hands on experience was finally needed

I passed my AWS Developer Associate exam back in March 2020, but in terms of DynamoDB I hadn’t used it all that much since then. Not only that, the breadth of knowledge for passing an exam can’t cover the level of detail required to get hands on.

And that’s where I’d got to at work – I am now on a project that uses heaps of new different technology and I couldn’t ‘kick the DynamoDB can down the road’ anymore. It was time to switch my attention to improving on DynamoDB. I was getting left behind in conversations at work, and I knew that was only going to get worse.

Why DynamoDB is important anyway

It’s tempting to say it’s important just “because it’s in the exam” – but I prefer to think about why it’s such a big part of the exam. I tend to think it’s important because AWS believe it to be important. Which means they’re pushing it/they’re offering it as a managed service (with economies of scale benefits).

This has the knock-on effect of being adopted on many projects, including the one where I work:

  • I can be a heap cheaper than using RDS (CPU/RAM heavy) – when you’re getting large loads/dealing with large data sets so might be worth rethinking whether you really need SQL capabilities.
  • The scalability and performance of DynamoDB can be done horizontally (just add more partitions) rather than the typically vertical (add more grunt via CPU/RAM) solution with relational databases.
  • The amount of data being processed is only getting larger and larger. Requirement’s we had for data 10 years ago are vastly different to today.

I found the intro section of the course to explain the trade-offs between SQL/NoSQL very well incidentally.

I needed a grip on the fundamentals first

One thing I like about (well-structured, coherent) tutorials is that they weren’t “polluted” with domain knowledge from your company. You necessarily focus on the simple building blocks of the technology. I am not especially promoting Whizlabs here, although here’s an affiliate link to the course just in case you’re interested, but I benefitted from learning these areas, which are the broad areas of the course.

  • Why even use NoSQL – getting out of the relational way of thinking.
  • How tables work in DynamoDB especially the capacity modes of provisioned vs on-demand.
  • How items and tables relate.
  • How DynamoDB and CloudWatch interact.
  • How to use the CLI (whilst as a developer I usually use the AWS SDKs, the CLI are a quicker point of entry, and a great way to prototype/validate your ideas).
  • How indexes work – I really benefitted from trying out some tutorials on this. Previously my knowledge was probably ‘abstract exam trivia’.
  • Global tables – I don’t use these in my job, but the idea of multi-region/replicated data seems pretty crucial for high – performance solutions.
  • Backup and restore – not the glamorous side of development. However, migrations happen all the time, and data can be overwritten accidentally.

So at least find out about these topics, whichever means you use to get hands-on with them.

Some useful tutorials from the course

After looking at my flashcards when I passed the AWS Developer Exam I had a bit of a primer. But I passed back in March 2020 – and whilst there was some overlap in subjects, it was got to finally get some ‘meat on the bones as it were’.

Where my flashcards covered a bit of capacity modes and indexes, the course gave me some real insights.

Capacity

  • I got some useful insight into On-Demand vs Provisioned capacity from playing around with the CLI as per the instructions.
  • There are rules around switching between on-demand and provisioned capacity which might help at work with understanding ramping up load to DynamoDB.
  • There was also some Python code which was really helpful to take and use a reference when using the SDK.
  • The capacity tutorial was as especially good as you got to see the CloudWatch metrics that were affected as the result of your code overwhelming. I like the idea of controlling the data I send and seeing how that affects what I see in CloudWatch. You never know when that knowledge might come useful in a production scenario.

Transactions

  • I got a far better understanding of Local Secondary Indexes (LSI) and Global Secondary Indexes (GSI) from setting up data that used them.
  • Global Secondary Indexes were especially useful to learn about because in the real world, you often don’t know how data will be searched for in advance, and you may need ‘more ways in’ than the ones that existed when you created the table.
  • At work we have a need for both eventual and transactional consistency as we have different requirements from different consumers.

Scans vs queries

I knew the difference between a filter (after data retrieval) vs a query (before data retrieval) in terms of previous UI work. But learning about the ScannedCount vs Count metrics was very insightful. The project I work on is heavily biased towards using CloudWatch metrics, and so it was good to see there is a way of working on improving our retrieval process.  

There’s more than just these areas, but this is where I got the most value.

Conclusion

I’d recommend this course if you wanted to know about the areas I covered. As I went through the course I found myself thinking “so that’s what they were talking about” when relating subjects to my work situation. At the very least you can probably see from this article which areas to focus on if you need to get a bit more hands-on.

Personally, I found the Python files for capacity testing the most useful, and now I have a template for other tests, that is set to up to use the AWS SDK. From my own point of view it was great to ‘train how I play’, namely have a set of materials that relate to the day job, not the exam, as they’re two different beasts.