As someone who has obtained both the AWS Solutions Architect and DevOps Professional certifications the question I am asked the most is, how did I study for them. This is a harder question to answer than you might think. However, today I will share my approach to how I studied for both exams and provide my insights into what the exam experience is like.
With the pre-requisite out of the way, let's quickly cover what the Professional SA exam is assessing. At a high level, it validates whether you have the technical skills to design distributed applications and systems on the AWS platform. At a more detailed level, can you demonstrate competencies in the following areas:
- Designing fault tolerant, scalable, and highly available systems leveraging AWS.
- Selecting appropriate services that best solve a given problem with stated requirements.
- Communicating how to migrate a complex workload to AWS.
- Deploying wide-scale applications to AWS that supports large enterprises.
- Understanding of AWS costs and how to optimize them.
These skillsets are assessed in a variety of domains during the exam. The domains are divided as shown below.
During the exam, you are not told whether a given question belongs to one domain or another. But, more on that in a minute.
Let me begin by stating that exposure and hands-on experience with AWS are going to put you out front when it comes to getting a professional certification. Even working through simple use cases like hosting, securing, and deploy static websites are going to help you on the exam. Building applications on AWS is the best way to study. I, for instance, had roughly five years of experience using AWS before I ever sat for an exam.
That said, I still needed to study for the professional exam because my exposure to AWS was with only ~25-30% of the services.
There is no one size fits all when it comes to studying for an exam. But, I can share the approach I took to studying given my existing background in AWS. Below are the steps I took in a roughly chronological order.
- Download the exam blueprint to determine what the breakdown of domains are for the exam. This is important to know so you can target your studying to the highest percentage domains first.
- Read through the exam blueprint and highlight areas you might not be as fresh on. For instance, Networking is a big one to understand as it is a key pillar to running workloads in AWS. The more you know about networking the better you're going to fare.
- After reading through the domains write down AWS services that have a connection with that domain. An example might be, EC2 Spot Fleets and their connection with optimizing costs in AWS.
- With services in hand, I ranked them 1-3 in terms of how much I knew about them. This scoring gave me a baseline to begin studying various services in a priority order. 1 = never used it, need to study. 2 = knew of it but not the details, need to understand deeper. 3 = used it and knew the main scenarios, refresh on edge cases.
Now that you have your weak areas identified it is time to begin getting familiar with them. The process is going to vary based on how you best learn. For me, I am a hands-on and write it in my own words type of learner. So my approach to improving my weak spots was as follows:
This is a great place to kick off your learning because it lists a lot of high-level content that will get you started. These pages often have the following things that are important to know:
- How the service works and its main value proposition
- How to get started with the service (i.e. provision it)
- Sample use-cases
- Features and benefits the service offers
The use-cases section is important here when it comes to becoming a Certified Solutions Architect. You need to understand why a customer would want to leverage a given service. The use-cases section helps you understand what a customer is looking to gain from using this service.
Reading the one-pager about the service is not going to give you the tools you need to determine if that service is the right answer on an exam. You must understand how to provision the service as well. So go ahead and go through the manual steps of the Getting Started guide for that particular service.
As you are going through the process of spinning the service up, take note of any configuration settings, present or missing, that you are not sure of. This could be things like encryption at rest if it is a storage service. If it's there or not is important to know when it comes to storage services.
Most services you can deploy an application to or incorporate into a development workflow. Don't spend days on this step, but a few hours of using the service in a sample project will go a long way to understanding the deployment model, quirks, and edge cases that might surprise you.
An example here might be using AWS Lambda. Once a function is created, how would I as a developer develop code to use it. How would I deploy my code to the function? How would I allow my function to access other resources like S3 or RDS?
The exercise of actually using the service you are weak on is going to level you up a lot faster than the documentation.
This is the last step in my mind. I don't start here because I want to know the value proposition of a service and get hands-on experience with it. If you learn by reading first, you might want to start here instead.
When I am working through this step I take extensive notes in a Google Document. I start by going through the documentation and taking notes on different pieces of terminology. For example, if I was studying AWS Elasticbeanstalk my terminology notes might look like this:
Application: The top-level object in Elasticbeanstalk that contains environment configurations and application versions.
Environment: The infrastructure configuration for an application that can be deployed to.
Once the terminology is documented, read up on the limitations of the service. If this was used at scale what are the hard limits and soft limits. For example, S3 has a soft limit of a 100 buckets initially and you can request more via a support ticket.
How you are charged for using the service is critical to understand. You might be asked how to optimize the cost for that service on the exam, so deep knowledge of how the service is charged back to the customer is critical to understand. An example here might be Elastic Map Reduce. Understanding the provisioning of worker nodes in a map-reduce job and how they are charged to the customer is important to know. Once you know they are on-demand pricing you can look at using spot instances instead.
If rewriting things in your own words is not useful to you, don't do it. Whatever method works for you to retain information is quite fine. However, terminology, limitations, and cost are the key things you need to know about any service.
When it comes to the services that you ranked as a (2) or (3) earlier need attention as well. They might not need as much attention, but you should assure yourself of that.
To do that you can use the same method we used up above but in an abbreviated format. My approach to these services has been to make sure I can answer these five questions:
- What is the use-case/problem being solved with this service?
- How do I provision this service and what are the key parameters?
- What are the key pieces of terminology in this service?
- What limitations/constraints does this service have?
- How are customers charged for this service?
If you can answer these questions about a service you likely know enough to assess its fit on an exam question.
Under NDA I cannot talk about what is actually on the exam. However, I can provide my suggestions and insights about taking AWS Professional Certification exams.
- Study every day for 1-2 hours leading up to your exam. But, the morning of your exam, no studying. This can do harm to your confidence going into the exam and cause you to overthink answers.
- Get a good night of sleep the night before.
- Eat a healthy balanced meal before the exam, bathroom breaks count against your exam time.
- If you prepare well going into the exam, time is not a problem.
- Read the entire question before jumping to the answers.
- Identify what the question is asking and determine the domain it is touching on.
- Immediately rule out the answers that are definitely wrong. If it is some obscure service in the answer you have never heard of, most likely eliminate it.
- Do take a practice exam, don't overthink how you do on it. They are good to take to understand the format of the questions and the time it takes you to answer them. However, in my experience, they are often full of tricky questions and that is not the norm on the exam.
Getting a certification in Amazon Web Services is a huge feather in your cap. However, don't just get one to get one. They are beneficial to your career, but they also teach you a lot about the AWS eco-system. Getting the certification without understanding the eco-system will benefit you far less than understanding the eco-system and having a certification. Also, note that for the DevOps Professional exam I used this same studying tactic. The difference was in what I needed to study, but not how I studied it.
If you enjoyed this post and are hungry to start learning more about Amazon Web Services in preparation for getting AWS certified, I have created a new course on how to host, secure, and deliver static websites on AWS! It is a book and video course that cuts through the sea of information to accelerate your learning of AWS. Giving you a framework that enables you to learn complex things by actually using them.
In this article, we’re going to explore why young programming languages with modern features can’t be adopted quickly. Additionally, we’re going to take a look at one exceptional example that got specific parameters right to be both young, modern and mature, just ready for adoption at small and big scale.