목록Study (58)
자바칩
✅ FastAPI의 장점비동기 처리 + 빠른 개발 속도 + 유연한 Python 생태계항목설명⚡ 비동기 처리async/await 기반, 수천 동시 요청에도 효율적 (Uvicorn + Starlette)🐍 빠른 개발Python 기반, 생산성 최고🔧 유연한 구조Flask처럼 가볍고 자유로운 구조 (무겁지 않음)📚 자동 문서화Swagger + Pydantic 타입으로 API 문서 자동화💡 AI/ML 친화Python 생태계 덕분에 AI/데이터와 연동하기 쉬움❌ FastAPI의 한계항목이유❗ 트랜잭션 자동 제어없음. 수동으로 직접 관리해야 함❗ 선언적 트랜잭션 불가@Transactional 같은 건 없음❗ 대규모 엔터프라이즈 통합AOP, JTA, JMS 같은 Java 생태계 통합 부족❗ 구조 표준화 부족자유..
⚡ 핵심 차이 요약: "비동기 vs 멀티스레드" 개념비동기 (Asynchronous)멀티 스레드 (Multi-threading)기본 철학작업을 기다리지 않고 "예약"하고, 다른 일 함각 작업을 별도 스레드에서 동시에 실행구현 예Python async/await, JavaScript PromiseJava Thread, ExecutorService, @Async자원 효율✅ 매우 효율적 (I/O 작업에서 유리)❌ 스레드 수가 많아지면 자원 부담 ↑사용 예시웹 요청, DB 쿼리 기다릴 때CPU 연산, 블로킹 작업 병렬 처리모델코루틴 기반 (cooperative)병렬 처리 기반 (preemptive)🧠 쉽게 말하면:▸ 비동기(async):"기다리는 동안 다른 일 좀 하자"한 개의 스레드 안에서 여러 작업을 순차..
Python FastAPI vs Java Spring Boot의 동시성 모델 차이를 짚고 들어가자.Spring Boot에서도 비동기 처리(동시성)는 가능한데, 약간의 설정 + 구조 차이가 있다.✅ Spring Boot에서 동시성 처리 방법1. 기본 구조: @RestController + 비동기 서비스 (@Async)Spring은 기본적으로 스레드 기반 동시성 모델이다.비동기를 하려면 @Async를 써서 새로운 스레드에서 처리하게 할 수 있다.📌 예시: Spring Boot에서 @Async 기반 비동기 API // 1. 비동기 서비스 정의@Servicepublic class OperationRecordService { @Async // 비동기 실행 public CompletableFuture..
async def + await 구조를 잘 쓰고 있다면,FastAPI는 동시성을 아주 잘 처리한다.즉, 여러 클라이언트가 동시에 요청해도 차례차례 막히지 않고 병렬 처리됨 (진짜 동시 실행은 아님 → 비동기 cooperative 방식임).🔍 왜 async + await 구조가 동시성에 강한가?📌 기본 원리:Python의 asyncio 기반 구조는 non-blocking I/O를 전제로 함await 키워드가 붙은 I/O 작업(MongoDB, HTTP 등)은 I/O가 끝나는 동안 다른 작업으로 컨텍스트를 넘김즉, 하나의 요청이 DB 응답을 기다리는 동안 다른 요청을 처리할 수 있음✅ 동시성 보장되는 이유@router.get("/records")async def get_all_records(...): ..
RDBMS (관계형 DB): 데이터를 테이블(table) 단위로 관리NoSQL (MongoDB 등): 데이터를 컬렉션(collection) 단위로 관리RDBMS (ex. MySQL) 용어NoSQL (ex.MongoDB) 용어테이블 (Table)컬렉션 (Collection)행 (Row)문서 (Document)열 (Column)필드 (Field) MongoDB에서는 컬렉션 안에 여러 개의 문서(document)가 JSON(BSON) 형태로 저장됨테이블과 비슷하지만, 각 문서의 구조가 유동적일 수 있다는 것이 큰 차이점
✅ json.dumps()과 jsonify()의 역할함수역할json.dumps()파이썬 객체 → JSON 문자열로 변환jsonify()파이썬 객체 → JSON 응답(HTTP Response) 으로 변환 (Flask 전용)🔍 json.dumps()과 jsonify() 자세히 비교항목json.dumps()jsonify()📦 모듈import json (json 표준 라이브러리)from flask import jsonify📤 출력JSON 문자열만 반환JSON 문자열 + HTTP 응답 객체 (Response)📄 Content-Type 설정❌ 없음✅ 자동으로 application/json 설정📱 사용 용도내부 데이터 처리, 로그 저장 등API 응답 처리용🧠 Flask context 필요❌ 필요 없음✅ F..
1. 컨테이너 목록 보기docker ps -a 2. 컨테이너 중지 (이미 실행 중이면). docker stop 컨테이너ID 3. 컨테이너 삭제docker rm 컨테이너ID 4. 이미지 삭제docker rmi 이미지이름
1. Dockerfile 생성 (Python 3.9.13 버전과 Flask 기준)# Python 3.9.13 slim 이미지 사용 FROM python:3.9.13-slim # 작업 디렉토리 생성 WORKDIR /app # 의존성 설치 (pip 먼저 requirements.txt) COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt # 소스 코드 전체 복사 COPY . . # Flask 앱 실행 (app.py 기준) CMD ["python", "app.py"] 2. WSL2에서 명령어 실행# 프로젝트 루트로 이동 cd /mnt/c/프로젝트# Docker 이미지 빌드 docker build -t flask-app . # ..