In today’s world, understanding the ecosystem beyond coding can be the difference between a junior and a senior software engineer. One part of that ecosystem is cloud computing infrastructure like Amazon Web Services (AWS). Schno Mozingo, Head of Curriculum at Codesmith, walks us through the basics of AWS, how companies and developers are using it, and why understanding AWS can help bootcampers land higher-level engineering positions. Listen to the podcast or read the article!
- Head of Curriculum at Codesmith and Lead Instructor at Codesmith’s LA campus.
- Got into the tech industry in 1995 working in C and Perl across the finance and telecom sectors before moving into web development.
- Came into technology from a non-technical background – Schno doesn’t have a Computer Science degree and didn’t grow up programming computers but leveraged a technical curiosity and tenacity to break into the industry.
- Developed curriculum for AWS training as part of Codesmith’s DevOps unit
- Why he loves teaching future developers at Codesmith: “Coding is a meritocracy - it’s not about your degree. If you can do the work and be a good human and coworker, this industry has a place for you. That’s how I built my 25-year career in tech. At Codesmith, I have the opportunity to pay it forward and help open doors for others looking to make substantive change and participate in this meritocracy. I’m really glad I found a way to give back to this industry that has given so much to me.”
What is Amazon Web Services (AWS)?
The Origin Story
In the old days, if a company wanted to have a presence in the technology space, they needed a data center, a place to host computers, and an IT team to run everything. You had to hook up redundant power, backups, and temperature control (machines run hot). A lot of resources, time, and effort went into the equipment and the software to give you a foothold in the technology space. That presents a barrier to entry for companies, entrepreneurs, and innovators who don’t have the resources to build all of this infrastructure.
Back in the early 90s, Amazon was one of the early players in e-commerce and AWS grew out of their need to build that infrastructure for themselves. CEO Jeff Bezos required every department of Amazon to act like its own mini company – if they needed data or resources from another department, they had to build an enterprise-grade interface to retrieve the data. They took this mindset (along with a lot of money and resources) to build data centers that had all of the hardware, redundant power, and IT teams managing them, and made them available to other companies.
Now, instead of building the infrastructure themselves, companies can essentially rent the infrastructure from AWS, lowering the barrier to entry for innovators and entrepreneurs. Companies don’t have to have an on-site data center, they can rely on AWS, its redundancies, high availability, and all the things that make that infrastructure valuable. These data centers are spread throughout the world, providing disaster recovery – if a center fails in one location, it can roll over into another region.
What is AWS for?
AWS provides dozens of services, ranging from standard servers that host websites to databases storing persistent data, all the way to robotics, game development, and Augmented Reality. As a company, you identify which AWS services you need, and as web developers, we only need a small subset of those. We need to host our website, route URLs, and have a way to store data and files like videos and images.
How to use AWS
How developers use AWS
There’s a bit of a learning curve, but it’s relatively easy to set up all of these services in AWS and get your website hosted with a full API. Companies will employ continuous integration and deployment through third-party vendors like Jenkins or Travis CI. Once it’s configured, the web developer is mostly done with AWS. Developers work with their code repository to push up the code and merge it into the base, and then the continuous integration and deployment pieces take over, run tests on the code, and send it up to AWS for deployment. The impact is very minimal on the web developer writing code and making changes. It’s pretty awesome to realize that all of the manual changes needed to deploy that code are now automated.
What jobs require AWS knowledge?
Larger companies have DevOps engineers who are responsible for setting up and maintaining various AWS services such as EC2, S3, RDS, Route 53, etc. However, in smaller companies and startups, you end up wearing a lot of hats. Some Codesmith alumni have gone to companies with as few as four people and in that situation, so you may find yourself being a database administrator and be in charge of DevOps. At Codesmith, we really emphasize not getting tied to any one type of framework or language. You’re building the skills of an engineer. You’re learning how to research, parse, and implement – that ability is what qualifies you to be an engineer, not your understanding of React or Angular. It’s the underlying ability to dig in, research, and understand. DevOps is just another arena of technology to strengthen, broaden, and deepen your knowledge.
Who uses AWS?
Companies that use AWS
The US government and CIA are just a couple of examples! Amazon represents a large part of internet traffic. Other big players include:
Can a company use AWS regardless of their technology stack?
There are a lot of technology stacks that AWS accommodates. One of the basic elements of AWS is an AMI – Amazon Machine Image - and people can create custom AMIs out of whatever tech stack they want to use. It is available and adaptable to any other tech stack a company wants to use.
What are some cloud alternatives to AWS?
There are other competitors to AWS in the cloud space:
- Google offers Google Cloud
- Microsoft offers Azure
- Oracle has an offering as well – Oracle Cloud Services
None of these cloud providers comes close to the footprint that AWS has in the space. AWS has about 30% of the market share and Azure might be second to them at around 15%.
AWS was the pioneer and set the bar. Google, Microsoft, and Oracle all came to the game a bit later. Amazon had the vision and foresight to say “this is how we’re going to build our company internally with this focus on networking best practices, on extensibility, adaptability, and scalability” as a mandate – I think that’s really paid off.
Should beginners learn AWS?
As a beginner, you should be aware of AWS, but you don’t need to focus on it. As a beginner, you’re crawling – AWS is walking. When you’re starting out as a beginner coder, you want to get the fundamentals of logic flow and get an understanding of algorithms and data structures. But it’s important to know that there is a broader ecosystem beyond connecting the dots as an engineer, and it supports, maintains, and makes the code available for people. Broadening your scope outside of those programming fundamentals and understanding AWS, the broader ecosystem, and other cloud systems is vital in our current technology world.
Is AWS difficult to learn?
It’s a steep learning curve and you’ll need to understand some technology fundamentals before undertaking AWS training:
- Client-server technology: the relationship between a client (your laptop browser) and the server (the machine sitting on the back end receiving your browser requests)
- An awareness of different types of network protocols, like HTTP in web technology, a secure version called HTTPS, and the different ways we can talk back and forth between client and server
- A basic understanding of an IP address and how we address things on the internet
- Understanding DNS (domain name services) and how we turn a URL into an IP address
These aren’t beginner concepts; they’re topics that will arise as you broaden your scope and understand the ecosystem around web development.
Why does Codesmith teach AWS as part of the DevOps unit?
At Codesmith, we take a holistic approach to building well-rounded engineers who are autonomous problem solvers. We see a lot of developers wearing many hats at startups these days. The broader and deeper your understanding of the ecosystem surrounding web development, the more prepared you will be to get a mid- or senior-level engineering job.
We teach the parts of DevOps that support web development:
- Containerization with Docker
- Continuous Integration and Deployment with Travis-CI
- EC2 - elastic compute cloud, which is essentially your server
- RDS - relational database service to supply persistent data
- S3 - static file service
- ECR - Container repository that integrates with AWS services
- IAM - identity and access manager
- Elastic Beanstalk - a wizard to build environments for your application using AWS services and a GUI to monitor and maintain them.
How can beginners get started learning AWS?
Fortunately, we live an age where everything is available through a couple of clicks:
- Amazon is always putting out AWS tutorial videos – start there.
- Check out Youtuber, Max Schwartzmeller
- I always recommend the O’Reilly books on AWS
- And of course there’s Codesmith's Software Engineering Immersive, where we offer DevOps training that includes AWS as part of a holistic approach to becoming a well-rounded problem-solving engineer.
How to Land Data Science Jobs in Seattle
Tips and tricks from a Metis alum and a career coach!
How to Land Data Science Jobs in Seattle
Tips and tricks from a Metis alum and a career coach!
What is Natural Language Processing?
A Thinkful mentor gives an intro to NLP for beginner data scientists.