Introduction β¨
Infrastructure and Architecture
Some of the terms I hear senior backend developers π¨βπ»π©βπ» use casually in conversations.
And when people with more experience speak, they tend to use terms like this that matter.
And as I would do whenever I notice the use of words or concepts, I researched it π΅οΈββοΈ.
Well, It turns out that they are fundamental to know π.
You probably know what they mean but do not know the right word for them.
Letβs have a brief look into what they are
Infrastructure β©
Infrastructure refers to the underlying software or hardware tools/resources that enable you to run and support your application. You can also see it as a structure that protects and manages your entire application, where an application lives.
Infrastructure is like the foundation, walls, and utilities (like plumbing and electricity) of a building that protect and manage the entire structure where your application lives.
Creating an infrastructure would involve:
Configuring physical servers to host your apps
Setting up network components like load balancers, DNS settings and firewalls
Managing databases e.t.c
Examples of these include:
Hosting your app/containers/Virtual Machines on cloud platforms like AWS, GCP or Azure
Setting up Nginx/Apache for proxy, e.t.c
Security setup like enabling HTTPS for secure communication
Pictorial examples of an infrastructure
Architecture π
Architecture, on the other hand, focuses on designing the high-level structure of the application. It describes how application components interact and how data flows between them. To be consistent with my analogy π , Software architecture is like the arrangement and layout of the rooms and spaces within the building.
It defines how different areas are organized, how people (or processes) move between rooms, and how various functions and interactions are held within the building.
Building architecture as a backend engineer involves making decisions about:
How data moves between parts of the app
The app structure for codebase maintainability
Frontend (HTML, CSS, React, etc.)
Backend (authentication, validation, your backend framework, etc.)
Business logic layer (services, models)
Data access layer (your database, ORM/ODM)
etc
Pictorial examples of architecture
Conclusion
To wrap it up, Infrastructure is all about the resources that allow you to host and run your application, while Architecture is about the design and structure of the application itself and how parts of the application interact with each other to achieve a goal. Usually, an Infrastructure or Architecture will be built by a team of people as it might become as complex as a project. A person can also build one out depending on their expertise, the project size and the timeline.
Ps: This is not a detailed look into what they are. Instead, It is meant to help you learn about them. They are related to what we do with systems design.
I hope this is helpful.
Have a great week βοΈ