Django
Django는 Python 기반의 고급 웹 프레임워크로, 빠르고 안정적인 웹 애플리케이션 개발을 지원한다. "Batteries included" 철학을 따르며, 인증, ORM, 보안 등 다양한 기능을 기본적으로 제공한다. Django는 대규모 데이터 기반 웹사이트부터 소셜 네트워크, 뉴스 사이트까지 다양한 유형의 웹 애플리케이션을 개발하는 데 적합하다. 이 프레임워크는 MVT(Model-View-Template) 아키텍처를 사용하여 코드의 재사용성과 유지보수를 용이하게 한다.
Django의 장단점
장점
- 빠른 개발: Django는 개발자가 애플리케이션을 신속하게 제작할 수 있도록 지원하며, 초기 아이디어부터 배포까지 효율적이다.
- 기능 완비: 인증, 사이트 맵, 콘텐츠 관리 등 다양한 추가 기능을 기본적으로 제공한다.
- 보안: SQL Injection, XSS 방지 등 강력한 보안 기능을 내장하고 있다.
- 확장성: 높은 트래픽 요구를 효과적으로 처리할 수 있어 대규모 프로젝트에 적합하다.
- 다양성: 콘텐츠 관리 시스템, 과학 플랫폼, 대규모 기업용 애플리케이션 등 다양한 용도로 활용 가능하다.
단점
- 모놀리틱 구조: Django는 특정 방식으로 작업을 정의하고 실행하도록 강제하며, 사용자 정의 파일 구조를 허용하지 않는다.
- 소규모 프로젝트 부적합: 작은 프로젝트에서는 Django보다 Flask와 같은 경량 프레임워크가 더 적합할 수 있다.
웹 서버와 웹 애플리케이션 서버 (Upstream과 Downstream)
웹 서버와 웹 애플리케이션 서버는 클라이언트-서버 아키텍처에서 핵심적인 역할을 한다.
웹 서버
- 정적 콘텐츠(HTML 페이지, 이미지 등)를 제공하며 HTTP 요청을 처리한다.
- 클라이언트의 요청을 받아 애플리케이션 서버로 전달하거나 캐시된 데이터를 반환한다.
웹 애플리케이션 서버
- 동적 콘텐츠 생성 및 비즈니스 로직 처리에 중점을 둔다.
- 데이터베이스와 상호작용하며 복잡한 요청을 처리한다.
Upstream과 Downstream
- Upstream: 클라이언트가 서버로 데이터를 요청하는 방향.
- Downstream: 서버가 클라이언트로 데이터를 반환하는 방향.
웹 서비스 구조
웹 서비스 아키텍처는 클라이언트(웹 브라우저), 웹 서버, 데이터베이스 서버로 구성된다.
- 클라이언트: 사용자의 입력을 받고 이를 처리하여 요청을 생성한다.
- 웹 서버: 요청을 받아 백엔드 로직을 실행하며 필요한 경우 데이터베이스와 통신한다.
- 데이터베이스 서버: 데이터를 저장하고 필요한 정보를 제공한다.
주요 아키텍처 유형
- 모놀리틱 아키텍처: 모든 컴포넌트를 하나의 애플리케이션으로 통합.
- 마이크로서비스 아키텍처: 각 기능별 독립적인 서비스로 구성.
- 서버리스 아키텍처: 클라우드에서 이벤트 기반으로 실행되는 함수 사용.
프로세스와 스레드
프로세스와 스레드는 백엔드 시스템에서 작업 병렬 처리를 관리하는 데 중요한 개념이다.
프로세스
- 실행 중인 프로그램으로 독립적인 메모리 공간과 자원을 가진다.
- 프로세스 간 통신은 IPC(Inter-process Communication) 메커니즘을 사용한다.
스레드
- 프로세스 내에서 실행되는 경량 작업 단위로 메모리를 공유한다.
- 스레드는 빠른 생성과 효율적인 자원 사용이 가능하지만 동기화가 필요하다.
차이점 비교
구분 | 프로세스 | 스레드 |
---|---|---|
메모리 공유 | 독립적 메모리 공간 | 부모 프로세스와 공유 |
생성 속도 | 느림 | 빠름 |
자원 사용 | 더 많은 자원 소모 | 적은 자원 소모 |
통신 방식 | IPC 사용 | 공유 메모리를 통한 통신 |
안정성 | 하나의 프로세스 실패 시 독립적 | 하나의 스레드 실패 시 영향 |
Python에서의 활용 예시
import threading
def print_numbers():
for i in range(10):
print(i)
# 스레드 생성 및 실행
thread = threading.Thread(target=print_numbers)
thread.start()
thread.join()
위 코드에서는 Python 스레드를 사용하여 숫자를 출력하는 작업을 병렬로 수행할 수 있다.
728x90
반응형
'기록 > 백엔드' 카테고리의 다른 글
REST API란? (0) | 2024.04.14 |
---|---|
Google Cloud Storage + Spring boot - 이미지 파일 (0) | 2024.03.08 |