Serverless Ready in One Month: Key Takeaways
The Genesis of an Idea
On day one of my internship with Serverless Guru, I found myself looking at the AWS Console, overwhelmed by the sheer number of services. There’s nearly 200 services, although, if i’m being honest, I stopped counting when I hit 160. It’s overwhelming to even know whereto start. Take a deep breath, the serverless framework and AWS training are fantastic, and you can start building with a serverless approach much faster than you thought possible. I wholeheartedly recommend learning and building with them.
Day 2 of our internship with Serverless Guru we were given an assignment: Build a full-stack serverless application on AWS. Twenty-one days later, we had successfully built a Serverless API and a front-end on AWS. First, we had to figure out what problem we wanted to solve. One thing I love about software development is how open sharing of knowledge is. Listening to podcasts, watching tutorials on youtube, and finding resources on twitter have helped me learn new tools and frameworks. After discussing this, our group decided to build a site intended for sharing educational software + web development videos and podcasts.
If you’re a developer who hasn’t worked with AWS , their web console can be overwhelming to say the least.
I like the ease of posting video on Youtube and listening to Spotify podcasts, but there’s a lot of noise vs signal on those platforms. With this project we could build something simpler and laser-focused on sharing educational resources for developers without all the noise of social networks. More importantly, we also got to learn how to build full-featured applications on serverless. Faced with that goal, we began by turning to two primary resources.
First, Serverless Stack, whose tutorial on building a full stack application using the serverless framework and AWS is second to none. Second, AWS’s own training courses, which offer thorough explanations of each service, as well as how to design and think about serverless application architectures.
Prior to interning with Serverless Guru, my only significant experience with AWS was using Work mail, a managed email service. I used work mail to host email for the custom domain I use for my website. The interface isn’t the shiniest, but the service is reliable, quick, affordable, and extremely well documented. That experience mirrors the benefits I’ve found developing serverless applications on AWS. AWS Documentation is second to none. It’s great how comprehensive the documentation is, because there’s a lot of flexibility in how you structure your application. Here are the big things we learned building our project.
Twenty-one days later, we had successfully built a Serverless API and a front-end on AWS.
Key Takeaways from Our Project:
1. I recommend starting with getting a basic understanding of the services you think you want to work with, in particular API Gateway, Lambda, and DynamoDB. Once you have a basic understanding of these tools, move right into building with them.
a. Here’s the key I’ve found: Leverage the examples teachers and tutorials provide, but make sure to diverge from the examples they set. Starting out, having an example of best practices in design is great, but making mistakes is huge too. Ultimately, building with a new style of programming and framework is the best way to understand the benefits and unique traits of these tools. For instance, one of the biggest lessons came from making a misstep in our database design.
2. When querying DynamoDB, your partition key (the primary key used to fetch your data) also needs to be used when querying data. We opted to use UUIDs because that’s what the tutorial we learned from used, but it ended up imposing limitations on our queries, so we needed to use scans, which proved slightly less efficient. Biggest lesson, database design when working with DynamoDB is super important. Your partition key will be needed to fetch data, and will affect how you query your database. In the case of our project, our database design meant there were some limitations to querying. I’m viewing this as a huge positive. Making this mistake was definitely the best way to learn best practices working with DynamoDB.
3. AWS Amplify is a fantastic tool. It’s buried in AWS UI, but you shouldn’t overlook it.
a. Other services offer similar hosting, but they’re usually buying AWS services and selling it with a markup anyways, so it’s easy to use and cheaper to boot.
4. When I started coding, I had no idea how much time was spent scaffolding projects, and setting up hosting and configuring platforms to get your projects out there. I love that with the serverless approaches figuring out deployment needs to be considered as part of your application design, but then is completely hands-off and fully managed once deployed.
I’m proud of the application we built, and you can visit it at https://resource-hub.co