AWS is the 500-pound gorilla in the room of cloud platforms. In terms of market share, AWS owns more of the cloud market than its closest four competitors combined. The ubiquity of a single platform means that when developers are in the market for a new job, there’s an incredibly good chance that they’ll find “AWS” underneath the desired skills for developer roles. By having a firm understanding of AWS development, you’ll distinguish yourself and become highly valued in your team or company.
The amount of services and functionality in AWS can be overwhelming; this article boils down the most essential skills you should know as an AWS developer.
So you’ve written a web application, now what? Deployment of web applications to AWS is one of the most basic, and one of the deepest skills to know as an AWS developer. There are not only multiple ways to deploy to AWS, but they continue to evolve as new methods emerge and older ones are sunsetted. Because of this evolution, the following overview of AWS deployment methods should be checked to make sure there aren’t newer methods suggested.
First, you should be comfortable manually deploying a web application to an EC2 instance. Understanding this foundation will allow you to build on it and potentially create your own automated deployment scripts.
Next, you should know CloudFormation well and understand how to use that to not only deploy an application, but also stand up your application infrastructure. You should also be familiar with Elastic Beanstalk and the work it does for you. The jury is still out on whether EB is the best or worst service for deploying apps to AWS, but it is used at a lot of companies so knowing it is a good idea.
Finally, containers are becoming more and more popular, so knowing how to deploy applications with Elastic Container Service (ECS) for Docker or Elastic Kubernetes Service (EKS) for Kubernetes is becoming more and more essential.
The power of AWS is sometimes a double-edged sword. Although it allows you to do a lot, it also doesn’t hold your hand. Being self-reliant and understanding the ins and outs of the AWS Security Model and IAM is essential. Often, the most common bugs and issues that arise in AWS come from a misunderstanding of IAM by developers. Getting extremely familiar with how Roles and Policies work will enhance every part of your AWS work.
Secrets management is also another tricky subject that arises often. AWS launched a new service last year—appropriately called Secrets Manager—that really takes the complexity out of managing and retrieving any secrets (like API keys, passwords, etc.) in your web applications.
3. AWS SDK
The AWS Software Development Kit (SDK) is how your application is going to interact with AWS in the code. The API layer is absolutely huge in the SDK; even as a pro you will constantly find new things that can be accomplished with it. Being familiar with the SDK is going to pay dividends, because interacting with AWS isn’t going to be unfamiliar to you. It’s common for developers to not even know where to start when pulling down an object from an S3 bucket or connecting to a DynamoDB table. Don’t be that developer. Get some experience with SDK and see how easy it is to use one of the most powerful technologies in the world.
Databases are an essential part of every web application and AWS has numerous options for satisfying that use case. The problem is figuring out which database service is right for your application. Without understanding all the options and some of the pros and cons, you run the risk of picking the wrong option and hindering your application’s growth.
Take a look at the current options available in RDS. Aurora continues to improve and add new layers of compatibility with MySQL and PostgreSQL. Try to understand why you might want to use Aurora instead of the other options. DynamoDB continues to be a popular choice for quick and simple NoSQL database needs. One of the best parts is its REST-based API, which means no long-running database connection is needed. Finally, DocumentDB is the new kid on the AWS database scene, providing MongoDB compatibility. If DynamoDB doesn’t work for your document database needs, then DocumentDB might do the trick.
If you’re a developer, then you know how frustrating hitting a roadblock can be. But you also likely know how much easier it gets to deal with roadblocks after you’ve got some experience overcoming them. AWS is no different in this regard. Every time you overcome an issue in AWS, it only makes debugging and fixing the next issue that much easier.
Unfortunately, there’s no roadmap to debugging. It really just takes getting in there and gaining experience with AWS. Although most issues you’ll encounter will likely be either related to IAM permissions or VPC bases access rules (e.g. Security Groups), there’s just no replacement for getting into the platform and developing. You’ll run into issues and dig yourself out. Consider that experience when you encounter your next issue to be able to debug it effectively.
Serverless services in AWS, such as Lambda and API Gateway, are solving more and more developer’s problems these days. Understanding when and why to use them is an essential skill for every AWS developer. Serverless architecture is great for certain types of functionality and you should do research and try out this type of architecture. Since Serverless is a fresh approach, it’s not always understood by more seasoned developers. By gaining some experience with this new technology paradigm, you can distinguish yourself in your team and in your company.
An open-source framework that makes building applications on Serverless architecture so much easier is the Serverless Framework. By utilizing Cloud Formation and the AWS SDK, this framework allows you to use simple configuration files to build powerful Serverless technologies.