시작하기에 앞서 유튜브 '기술노트with 알렉' 님의 영상을 토대로 공부했습니다.
https://www.youtube.com/watch?v=_WQR6-sqqjM
핵심 주제는 백엔드만 공부를 할 게 아니라, 프론트엔드, 백엔드 등 개발의 전체적인 관점을 알아두는 것이 좋다고 합니다.

전반적인 시스템 아키텍처 (2023. 10. 18 영상 기준)
백엔드 시스템 아키텍처, 핵심 용어 파헤치기
개발 공부를 시작하면 프론트엔드와 백엔드라는 큰 산을 마주하게 됩니다. 특히 백엔드 시스템 아키텍처(System Architecture)는 수많은 구성 요소로 이루어져 있어 처음에는 낯설고 복잡하게 느껴질 수 있습니다.
이번 포스팅에서는 아래와 같은 일반적인 백엔드 아키텍처 다이어그램을 보면서 각 구성 요소가 어떤 역할을 하는지, 핵심 용어들을 하나씩 알기 쉽게 정리해 보겠습니다.
## 1. 클라이언트 (Client): 사용자가 서비스를 만나는 곳
클라이언트는 사용자가 우리 서비스와 상호작용하는 모든 접점을 의미합니다. 다이어그램의 가장 왼쪽에 있는 부분으로, 다양한 형태로 존재합니다.
- Android/iOS: 스마트폰에서 사용하는 모바일 앱의 화면과 기능을 구성하는 부분입니다. React Native는 React 기술을 사용해 웹뿐만 아니라 모바일 앱 화면을 만드는 데 특화된 프레임워크입니다.
- Web: PC나 모바일 브라우저를 통해 접속하는 웹사이트 또는 웹 애플리케이션을 의미합니다. 사용자가 가장 흔하게 접하는 클라이언트 형태입니다.
- IoT (사물인터넷): 스마트 스피커(Alexa), 스마트 워치, 각종 센서처럼 인터넷에 연결되어 서버와 데이터를 주고받는 모든 '사물' 기기를 말합니다. 이들 역시 앱이나 웹처럼 서버와 통신하는 하나의 클라이언트입니다.
## 2. 서버의 관문: 요청을 받고 처리하는 입구
클라이언트에서 보낸 요청은 서버의 특정 '입구'를 통해 들어오게 됩니다. 이 입구는 크게 API 서버와 웹 서버로 나눌 수 있습니다.
- API 서버 (API Server): **API(Application Programming Interface)**는 애플리케이션끼리 정해진 규칙에 따라 데이터를 주고받을 수 있도록 만든 통신 창구입니다. 클라이언트 앱은 화면을 자체적으로 가지고 있고, 이 API를 통해 서버에 필요한 데이터(Data)만 요청하고 응답받습니다. 예를 들어, 카카오톡에서 친구에게 메시지를 보내면 그 '메시지'라는 데이터가 API를 통해 서버로 전송되는 것입니다.
- 웹 서버 (Web Server): 웹 서버는 화면을 구성하는 모든 요소(HTML, CSS, 데이터 등)를 가지고 있다가 클라이언트의 요청이 오면 완성된 웹 페이지를 통째로 전달해 줍니다. 모바일 브라우저에서 특정 주소(URL)로 접속해 웹사이트를 보는 것이 바로 웹 서버와 통신하는 대표적인 예입니다.
이러한 서버들은 물리적인 **IDC(Internet Data Center)**에 직접 구축되기도 하지만, 현대의 많은 서비스는 유연하고 확장성이 좋은 클라우드(AWS, GCP 등) 환경 위에 만들어집니다.
## 3. 핵심 로직: 서버의 두뇌와 장기들
서버는 요청을 받으면 다양한 내부 구성 요소들과 협력하여 비즈니스 로직을 처리합니다.
- 인증과 인가 (Authentication & Authorization): 사용자가 우리 서비스에 접근할 자격이 있는지 확인하는 보안 절차입니다.
- 인증(Authentication, 승인): '당신이 누구인지' 확인하는 과정입니다. (예: 아이디와 비밀번호로 로그인)
- 인가(Authorization, 권한): '당신이 무엇을 할 수 있는지' 권한을 확인하는 과정입니다. (예: 일반 사용자는 글 읽기만, 관리자는 글쓰기와 삭제까지 가능)
- 로깅 (Logging): 서버에서 일어나는 모든 일(요청, 에러, 상태 변경 등)을 기록으로 남기는 것입니다. 이렇게 중앙에 모인 로그는 나중에 서비스의 문제를 추적하거나 사용자 행동을 분석하는 데 중요한 자료가 됩니다.
- 큐 (Queue): 요청이 한꺼번에 몰릴 때 작업을 잠시 대기시키는 줄과 같은 역할을 하는 미들웨어입니다. 큐를 사용하면 비동기(Asynchronous) 처리가 가능해져 서비스의 효율을 높일 수 있습니다.
- 동기(Synchronous): 요청을 보낸 후, 응답이 올 때까지 다른 일을 못 하고 기다리는 방식입니다.
- 비동기(Asynchronous): 요청을 보낸 후, 바로 다른 일을 계속 수행하는 방식입니다. 요청한 작업은 큐에 넣어두고 서버의 다른 서비스들이 여유가 될 때마다 큐에서 작업을 가져가 처리합니다. (작업을 큐에 넣는 것을 Publish, 가져가는 것을 Subscribe라고 부릅니다.)
## 4. 저장소: 데이터를 보관하는 곳
서비스에서 사용되는 모든 데이터는 목적에 따라 각기 다른 저장소에 보관됩니다.
- 데이터베이스 (Database): 정해진 규칙에 따라 데이터를 체계적으로 저장하고 관리하는 공간입니다.
- SQL (관계형 DB): 엑셀 시트처럼 행과 열이 있는 테이블 형태의 정형화된 구조로 데이터를 저장합니다. (예: MySQL, PostgreSQL)
- NoSQL (비관계형 DB): 테이블 형태가 아닌, 훨씬 자유로운 비정형 구조로 데이터를 저장하여 유연하고 확장이 쉽습니다. (예: MongoDB, DynamoDB)
- 파일 저장소 (File Storage): 이미지, 영상, 문서 등 파일 형태의 데이터를 저장하는 공간입니다. (예: AWS S3)
- 빅데이터/분석 (Big Data/Analytics): 사용자의 행동 데이터나 서비스 로그처럼 방대하게 쌓인 데이터를 분석하여 비즈니스 인사이트를 얻거나 서비스를 개선하는 데 활용합니다.
## 5. 자동화: 개발부터 배포까지의 과정
개발자가 작성한 코드가 실제 사용자가 이용하는 서비스로 배포되기까지의 과정을 자동화하는 기술입니다.
- CI/CD: **CI(Continuous Integration, 지속적 통합)**는 개발자들이 작업한 코드를 주기적으로 통합하고 테스트하는 과정을 자동화하는 것이고, **CD(Continuous Delivery/Deployment, 지속적 제공/배포)**는 이 코드를 실제 서버에 자동으로 배포하는 것을 의미합니다. 이를 통해 더 빠르고 안정적으로 서비스를 업데이트할 수 있습니다.
- 컴파일, 빌드, 배포의 차이:
- 컴파일(Compile): 개발자가 작성한 소스 코드(Java, C++ 등)를 컴퓨터가 이해할 수 있는 기계어 코드로 변환하는 과정입니다.
- 빌드(Build): 컴파일된 코드와 각종 리소스 파일들을 하나로 묶어 실제 실행 가능한 파일(JAR, WAR 등)로 만드는 작업입니다.
- 배포(Deploy): 빌드된 결과물을 실제 운영 서버에 올리고 실행시켜 사용자들이 접근할 수 있도록 하는 최종 단계입니다.
'개발 공부 > 백엔드' 카테고리의 다른 글
| 백엔드 공부 중 (1. ASP, 2. JSON) (0) | 2025.09.14 |
|---|---|
| 스프링 웹 개발 기초: 3가지 방식으로 웹 요청 처리하기 (0) | 2025.09.14 |
| 스프링 부트: 정적 콘텐츠와 동적 콘텐츠 처리 방식 (0) | 2025.09.13 |
| 스프링 부트 입문: 첫 프로젝트 시작하기 (김영한님 강의 정리) (1) | 2025.09.13 |
| 백엔드의 3가지 핵심 구성 요소: 웹 서버, WAS, 데이터베이스 (0) | 2025.09.03 |