I took the challenge! Build a full stack volunteer platform in ASAP? You got it! The one problem was that I was on my own with some frontend and backend knowledge that was learned separately. It was a combination of fear, excitement, and curiosity, but I started studying up on how the backend system for this platform should scale and how AWS works so that I could easily integrate my project with what is currently available.
It was the responsibility and ownership that drove me to diving deep into how everything works instead of simply using sqllite, developing everything locally, and pushing the complicated stuff to the tech lead such as deploying it on EC2, monitoring it, and configuring it. By the end of the first week, I finished experimenting with the different services on AWS and learning about the services and how to scale such systems.
Here were some of the best resources for learning these:
LinkedIn Learning Courses
AWS Certified Solutions Architect (Skim series) helped me grasp the different services available on AWS. This is 9 course series and it goes over more than you need to know, so I would highly recommend skimming through the course to get an overview of the different services available. Although this gives a good overview of Amazon Web Services (AWS), I would also recommend signing up for AWS and trying out the different services yourself. One of the biggest fears I had was being charged an insane amount for trying something out, but that unlikely would happen if you are just starting.
Architecting Big Data Applications is a two part series that helped me learn the different databases, batch processing services, and streaming services available as well as their pros in cons in different scenarios. I really liked that the course was entirely examples and how one would approach data engineering in different scenarios. I would highly recommend the course if you are considering data engineering.
Designing Data Intensive Applications
(Extra) Grokking the System Design interview is a good introduction to system design for interviews. I don’t think that it is enough to pass interviews, but it gives a good outline of how interviews should go. I used this course for my interview with Robinhood.
Although Grokking the System Design interview was a good introduction to system design, it did not contain the level of intricacy to pass system design interviews. I think that the Designing Data Intensive Applications was great in terms of covering these details. The book went over not only how databases work, but also the different kinds of databases, details on replication and sharding, streaming and batch processing, tolerating failure, and more! I would highly recommend reading this book more than once if you have the time.
Trying Out AWS
As I mentioned earlier, I initially thought AWS was intimidating. Not only did the technology seem abstract and complicated at the same time, but also it felt risky to try out AWS with the risk that you might be charged for trying something without knowing the consequences.
But to learn something, you have to try it out. And even if you do make a mistake, you know that you will never make that same mistake again. I would also say that most of the services you will be using will probably not charge an insane amount of money. In fact, Amazon makes it incredibly easy for new users to use AWS without paying anything. If you are new to AWS, you get to use it for an entire year without having to pay a subscription fee. Although if you do use any complex services, you may be charged for them. But it is unlikely that a new user would use complicated services, and they would probably stick with using S3, DynamoDB, and Lambdas, and these three services are free if not incredibly cheap.
There’s no better way to learn AWS than simply trying it out or learning from developed examples. There is of course still a lot for me to learn about system design and using AWS, and I will update this article as I continue learning.
Thanks for reading!