Jay's Cookbook
Menu
  • Tags
  • Categories
  • Projects
Computer Science
OS
Network
Data Structure
Algorithm
Language
Code Architecture
Python
Javascript
Typescript
Java
Backend
Backend Theory
TypeORM
Node.js
NestJS
FastAPI
Frontend
HTML/CSS
React
Next.js
Data Engineering
DE Theory
MySQL
MongoDB
Elastic
Redis
Kafka
Spark
Airflow
AI
Basic
Pytorch
NLP
Computer Vision
Data Analytics
Statistics
Pandas
Matplotlib
DevOps
Git
Docker
Kubernetes
AWS
[Backend Thoery] 백엔드 개요
backend
backend_theory

[Backend Thoery] 백엔드 개요

Jay Kim
Jay Kim 01 Dec 2023
시작 [Backend Thoery] HTTP/HTTPS

Table of Contents

  • 웹 개발이란
  • 백엔드란
  • 백엔드 요소
  • 백엔드 아키텍처
  • 백엔드 코드 아키텍처
  • 백엔드 대표적 기능
  • 백엔드 고려사항
  • 백엔드 프로그래밍 흐름

웹 개발이란

  • 프로그래밍 세계에서 웹 서비스를 개발하는 분야를 웹 개발(Web Development)이라고 한다
  • 웹 개발은 크게 UI를 담당하는 프론트엔드(Frontend)와 데이터를 담당하는 백엔드(Backend)로 나뉜다

백엔드란

  • 백엔드는 서버에서 실행되는 코드로, 유저로부터 받은 데이터를 저장하고, 유저가 요청한 데이터를 반환하는 역할을 한다
  • 유저의 요청을 받아, 로직을 처리하고 응답으로 적절한 데이터를 반환하는 역할을 한다
  • 또 데이터를 영구적으로 저장하는 데이터베이스도 백엔드 범주에 보통 포함시킨다
  • 유저가 직접 백엔드와 통신하지는 않고, 유저는 프론트엔드와 통신하며, 프론트엔드가 유저 대신 백엔드와 통신한다

백엔드 요소

  • 필수요소
    • 요청 라우팅: 유저가 보낸 요청(Request)에 알맞는 응답(Response)을 반환하기 위해 적절한 위치로 분기
    • 데이터 처리: 데이터베이스에서 데이터 읽기/저장/수정/삭제
    • 비즈니스 로직: 구현한 기능을 수행하는데 필요한 비즈니스 로직
    • 예외 처리: 어떠한 상황에도 서버는 하나의 요청에 대해 하나의 응답을 반환해야함
  • 부가요소
    • 캐싱: 자주 사용되는 데이터를 캐싱
    • API 문서화: 다른 개발자들과의 협업을 위해 API를 문서화
    • 테스트 코드: 안정적인 서비스를 위해 배포하기 전에 다양한 케이스에 대해 테스트

백엔드 아키텍처

  • API Gateway: 요청을 적절한 API 서버로 전달하는 역할
  • Load Balancer: 하나의 서버에 과부하가 걸리지 않도록 요청 트래픽을 적절히 배분하는 역할
  • API Server: 들어온 요청에 대해 적절한 로직을 수행하는 역할
  • Database: 데이터 영구 저장하는 역할
  • Cache: 자주 사용되는 데이터를 임시 저장해 빠른 읽기를 지원하는 역할
  • Queue: 들어온 요청을 비동기적으로 처리하는 역할

백엔드 코드 아키텍처

  • MVC
  • Clean code
  • Hexagonal

백엔드 대표적 기능

  • 회원가입/로그인
  • 페이지네이션
  • 검색
  • 알림
  • 채팅
  • 국제화
  • 결제
  • 장바구니

백엔드 고려사항

  • 확장성(Scalability)
  • 대용량 트래픽

백엔드 프로그래밍 흐름

  • 내가 백엔드 프로그래밍할 때 따르는 작성 흐름이다
  • 주관적이기 때문에 참고만 하고 본인 또는 속한 팀원들과 개발하기 편한 방식을 따르면 된다
- 라우팅
  1. 엔드포인트를 REST API 형태로 작성
  2. 요청에 적절한 상태 코드와 응답을 반환하도록 함
- 데이터베이스
  1. 데이터베이스와의 연결
  2. ERD로 엔티티 정의
  3. 정의한 엔티티 바탕으로 모델 클래스 정의
- 데이터
  1. CRUD에 사용할 data validation 구현
  2. 데이터 직렬화/역직렬화 구현
- 보안
  1. 회원가입/로그인/로그아웃 구현
  2. 비밀번호 암호화
  3. 쿠키 서명
- 비즈니스 로직
- 에러 처리
- 페이지네이션
- 유지/보수
  1. API 문서화
  2. 테스트 코드
  3. 로깅
- 부가 기능
  1. 캐싱
  2. 웹소켓
  3. SSE
  4. 배치 처리
시작 [Backend Thoery] HTTP/HTTPS

You may also like

See all backend_theory
12 Apr 2024 [Backend Thoery] Datetime, Timestamp, Timezone
backend
backend_theory

[Backend Thoery] Datetime, Timestamp, Timezone

10 Apr 2024 [Backend Thoery] 의존성 주입(Dependency Injection)
backend
backend_theory

[Backend Thoery] 의존성 주입(Dependency Injection)

05 Apr 2024 [Backend Thoery] 대용량 트래픽
backend
backend_theory

[Backend Thoery] 대용량 트래픽

Jay Kim

Jay Kim

Web development, data engineering for human for the Earth. I share posts, free resources and inspiration.

Rest
Lifestyle
Hobby
Hobby
Hobby
Hobby
2025 © Jay's Cookbook. Crafted & Designed by Artem Sheludko.