BackEnd 93

gRPC란 무엇인가

정의Google이 만든 고성능 RPC 프레임워크. HTTP/2 + Protocol Buffers(ProtoBuf) 를 사용해 서버 간 통신을 최적화합니다.핵심 아이디어원격 서버의 함수를 지역 함수처럼 호출(stub 호출)하고, 요청/응답 데이터를 바이너리(ProtoBuf) 로 직렬화해 작고 빠른 전송을 달성합니다.전송 패턴단건(Unary), 서버 스트리밍, 클라이언트 스트리밍, 양방향 스트리밍(bidi) 모두 지원합니다.왜 gRPC를 쓰는가 (HTTP/2 + ProtoBuf의 이점)HTTP/2 멀티플렉싱: 하나의 커넥션에서 여러 요청/응답을 동시 처리(Head-of-line blocking 최소화).헤더 압축(HPACK): 반복되는 헤더 전송 비용 축소.바이너리 직렬화(ProtoBuf): JSON 대비 ..

BackEnd 2025.09.25

Django에서 wsgi.py와 asgi.py가 둘 다 있는 이유

Django는 기본적으로 두 가지 실행 환경을 모두 지원합니다. wsgi.pyWSGI(Web Server Gateway Interface) 용 진입점전통적인 동기 방식 서버 (예: Gunicorn, uWSGI, mod_wsgi)에서 사용안정적이고 오래 쓰여 왔으며, HTTP 요청/응답 처리에 최적화단점: WebSocket, 비동기 처리 불가asgi.pyASGI(Asynchronous Server Gateway Interface) 용 진입점최신 비동기 서버 (예: Uvicorn, Daphne, Hypercorn)에서 사용HTTP + WebSocket + 장기 연결 같은 비동기 기능 지원Django 3.0 이후 공식 지원왜 둘 다 있나?Django는 레거시(WSGI)와 최신(ASGI) 환경 모두 지원운영 환..

BackEnd/Django 2025.09.23

Spring Boot vs Django: 가장 큰 차이와 구조적 특징 비교

1. 히스토리와 철학Spring BootJava 진영의 전통적인 Spring Framework를 기반으로 2014년 등장.“설정 지옥(XML)” 문제를 해결하기 위해 자동 설정(Auto Configuration), Starter 패키지 제공.IoC / DI 컨테이너(Bean 관리), AOP, Annotation 기반 설정이 핵심.대규모 엔터프라이즈 시스템, MSA 환경에 맞춰 발전.DjangoPython 진영의 대표 웹 프레임워크, 2005년 등장.MTV(Model–Template–View) 패턴 기반.“Batteries included” 철학: ORM, Admin, Auth 등 기본 기능을 모두 포함.빠른 개발 속도(Production-ready) 지향.2. 내부 구조와 동작 순서Spring Boot어..

BackEnd 2025.09.23

Django vs DRF: 적용 전/후 핵심 비교

1) 약어와 한줄 정의Django: 파이썬 웹 프레임워크. 서버 렌더링 기반의 전통적 웹 앱(MVC/MVT) 개발에 적합합니다.DRF (Django REST Framework): Django 위에 올라가는 확장 프레임워크. RESTful API 서버를 쉽게 만들기 위한 직렬화/인증/권한/페이징/필터/문서화 등 API 개발 필수 기능을 제공합니다.2) 왜 등장했나 (배경)Django만으로도 JSON 응답을 만들 수 있지만, 반복되는 JSON 직렬화, 인증/권한, 페이징, 필터, 문서화, 브라우징 도구 등을 매번 직접 구현해야 했습니다.DRF는 이 반복을 표준화해 생산성, 일관성, 가독성, 보안 기본기를 끌어올립니다.3) 내부 동작/구조(큰 축)Django 핵심: URLconf → View → Templat..

BackEnd/Django 2025.09.23

TCP/UDP 포트 번호 정리

네트워크 통신에서 **포트(port)**는 하나의 IP 주소 내에서 여러 애플리케이션을 구분하기 위한 논리적 번호입니다.예를 들어, 같은 서버의 192.168.0.10 IP를 사용하더라도 80번 포트는 웹 서버(HTTP), 22번 포트는 SSH 접속으로 각각 다른 애플리케이션을 실행할 수 있습니다. IANA(Internet Assigned Numbers Authority)는 포트를 아래와 같이 구분합니다. Well-known Ports (0–1023) : 잘 알려진 포트, OS 및 표준 서비스에서 사용Registered Ports (1024–49151) : 특정 업체·애플리케이션에서 등록한 포트Dynamic/Private Ports (49152–65535) : 클라이언트가 임시로 사용하는 포트 (Ephe..

BackEnd 2025.08.27

Sync / Async / Blocking / Non-Blocking 정리

네트워크 I/O, 동시성 프로그래밍을 공부하다 보면 자주 등장하는 개념이 바로 동기(Synchronous), 비동기(Asynchronous), 블로킹(Blocking), 논블로킹(Non-Blocking) 입니다.처음 접하면 혼동하기 쉬운데, 사실 이들은 서로 다른 기준의 개념입니다.1️⃣ 개념 정리 구분 의미 특징Synchronous (동기)요청 후 응답까지 기다림함수 호출이 끝나야 다음 코드 실행Asynchronous (비동기)요청 후 바로 다음 코드 실행응답은 콜백, 이벤트, Future/Promise 등으로 나중에 처리Blocking (블로킹)스레드가 멈춤작업이 완료될 때까지 해당 스레드는 대기Non-Blocking (논블로킹)스레드가 멈추지 않음요청 후 바로 반환, 스레드는 다른 작업 수행 가능즉..

BackEnd 2025.08.05

헥사고날 아키텍처 적용기: Project 설계 사례 (auth + sms)

1️⃣ 프로젝트 개요이번 Project는 사용자 메시지 전송 시스템을 예시로 한헥사고날 아키텍처 + 멀티모듈 구조 프로젝트입니다. 프로젝트의 목표:도메인 중심 설계: 핵심 비즈니스 로직을 외부 시스템(DB, 메시징 등)과 분리확장성과 유지보수성 확보: 외부 API, DB, 메시징 교체에도 최소한의 수정으로 대응멀티모듈 구성: 서비스별 역할을 모듈 단위로 명확히 분리 2️⃣ 모듈 구성Project/├── core # 도메인/유스케이스/포트 (비즈니스 핵심)├── auth # 사용자 인증 및 메시지 요청 API└── sms # SMS 전송 서버core프로젝트의 심장도메인 엔티티, 유스케이스, 포트 인터페이스 정의auth관리자 및 사용자 인증, 메시지 전송 요청 처리메시지 전송 요..

BackEnd 2025.08.03

헥사고날 아키텍처

헥사고날 아키텍처, 왜 도입하고 어떻게 활용할까?서비스가 커질수록 시스템의 복잡도는 기하급수적으로 증가한다. 외부 API 연동, 메시지 큐, 캐시 시스템, 다양한 DB 등과 연결되는 로직이 늘어나면서 자연스럽게 이런 고민이 생긴다.“내 핵심 비즈니스 로직은 어디에 있고, 외부 시스템과의 연결은 어디까지 확장돼야 하지?” “Kafka나 Redis를 붙이면 구조가 뒤엉키는데, 이게 맞는 방향일까?”이러한 질문에 답하기 위한 아키텍처가 바로 헥사고날 아키텍처(Hexagonal Architecture), 또는 Ports & Adapters Architecture이다. 이 글에서는 헥사고날 아키텍처의 핵심 개념부터 패키지 구조, 실제 구현 시 유의할 점까지 모두 정리해본다.헥사고날 아키텍처란?헥사고날 아키텍처는 ..

BackEnd 2025.07.30

Spring Batch 실행 순서 정리

Spring Batch는 Job → Step → Reader/Processor/Writer 구조로 구성되며, 실행 시 각 컴포넌트가 정의된 순서와 스프링 컨텍스트 초기화 흐름에 따라 동작합니다. 이 글에서는 클래스 단위 기준으로 실행 순서를 정리합니다.✅ 실행 순서 흐름 (클래스 단위)BatchApplication└─ BatchConfig ← @Configuration: Job, Step, Reader 등 Bean 등록└─ UserJobLauncher ← @Component: JobLauncher로 수동 Job 실행 └─ ImportUserJob ← BatchConfig에서 정의된 Job ..

Spring Boot 어노테이션 실행 순서 정리

Spring Boot 애플리케이션이 실행될 때, 다양한 어노테이션들이 어떤 순서로 처리되는지 정확히 이해하는 것은 설정과 초기화 과정을 설계하는 데 매우 중요합니다. 이 글에서는 애플리케이션 구동 시 어노테이션이 처리되는 순서를 정리합니다.✅ 전체 흐름 요약Spring Boot는 SpringApplication.run(...) 실행 시 다음과 같은 단계로 어노테이션을 처리합니다:1. @ComponentScan2. @Configuration3. @Enable* / @Import4. @Component / @Service / @Repository / @Controller5. @Autowired / 생성자 주입6. @PostConstruct7. @ApplicationRunner / @CommandLineRun..

BackEnd/Spring Boot 2025.06.24