Frontend developers! Have you ever wondered why to choose a certain type of database for a project, how to create an API, how to deploy to AWS, or what a container is? You're in the right place! This series will teach you all about backend development specifically targeted at frontend developers: you know how to code, you may have heard certain backend terminology, but you don't consider yourself fullstack. You'll learn backend concepts and how to implement them using AWS.
In this first post of the series, we'll start off by defining what the backend is, what difficulties there are within backend development, and then we'll discuss what the cloud is and how it relates to backend development.
Traditionally, the definition for a frontend vs. backend developer is that frontend developers work on the client side -- they build the interface that users interact with. Backend developers work on server side code. That can include building APIs, database interaction, and dealing with server configuration. I started my career as a backend developer, working mostly on building data science systems -- I had to think a lot about scalability, how to handle and analyze large amounts of data, and how to deploy those systems in dependable ways.
Some of the questions a backend developer may have to answer include: How do you scale a system for a million users? More than a million? How much data needs to be stored? How fast does it need to be accessed? Are there long running jobs that need to be managed? There are so many trade offs that must be weighed when building these systems. We'll talk about a bunch of them in this series.
One big evolution in backend development is the cloud -- though it's impacting almost everyone online, not just backend devs.
The cloud allows you to access computer resources on-demand. You may have used Google Drive or iCloud to store your files online rather than your own computer or phone wo that you have more storage space. This is a perfect example of how the cloud is used.
Many companies also use the cloud for their server infrastructure. You've probably heard of servers before, they're essentially computers that send information to other computers. We use them to handle the request/response cycle for websites -- they take a request and based on it handle business logic, database queries, etc. and then send a response back to the client.
In comes data centers -- these hold all the needed servers for a company, and they buy more and more servers as the company grows. They would have staff to manage the data center and they'd need to install software on and maintain the servers yourself.
The cloud allows you to access the provider's servers and use them instead of needing to manage the data centers yourself. This provides a lot of benefits to the company, first you only need to pay for what you use instead of all the servers you buy for a data center. You also have global availability with most cloud providers, you don't need to have data centers all over the world to speed up your response time globally -- the cloud provider does that for you. And, you don't need to pay for the data centers or data center staff yourself, instead that's done by the cloud provider. AWS has a whitepaper explaining these benefits in further detail.
There are different families of cloud services.
- Infrastructure as a service (IaaS) is the lowest level where you have more control over the operating system and runtime for your services. Examples include Amazon EC2 and Digital Ocean.
- Platform as a service (PaaS) - provides cloud components where you manage the application logic and data but not the servers or anything low level. Examples include Heroku and AWS Elastic Beanstock.
- Software as a service (SaaS) - cloud services an end user directly uses with no cloud management needed. Some examples include Dropbox, iCloud, and Slack.
- Function as a service (FaaS) - allows you to deploy just a function into the cloud, you don't need to do server management or anything like that. AWS Lambda is a great example of this.
On that note, AWS, or Amazon Web Services, is a cloud provider (and my employer) who has over 200 different cloud services. We'll be chatting about a bunch of these services throughout this series.
Next time, we'll go a little deeper into the logistics of using the cloud. How can you set up an AWS account with a billing alarm and an IAM user? If you have topics you'd like to see answered in this series, please let me know in the comments or via twitter.