전체 글 56

API Gateway의 개념

API Gateway는 클라이언트와 백엔드 서비스 사이의 중간 매개체 역할을 하는 서버이다. 클라이언트가 여러 개의 마이크로서비스와 직접 통신하는 대신, API Gateway를 통해 요청을 보내고 응답을 받는다. 🗂️ 주요 역할1. 요청 라우팅(Request Routing)클라이어트 요청을 적절한 백엔드 서비스로 전달2. 인증 및 인가(Authentication & Authorization)사용자 인증과 권한 확인을 처리해 보안을 강화3. 로깅 및 모니터링(Logging & Monitoring)모든 요청/응답을 기록해 서비스 상태나 성능 추적 가능4. 속도 제한 & 트래픽 제어(Rate Limiting & Throtting)악성 요청 방어 및 서비스 안정화5. 응답 집계(Response Aggrega..

카테고리 없음 2025.04.02

Flask + Redis + MinIO로 만드는 SSR 정적 웹사이트

🗂️ 프로젝트 소개Flask와 Redis를 활용해 정적 웹사이트를 SSR 방식으로 렌더링하고, MinIO에서 정적 리소스를 로드한 뒤, Redis에 SSR 결과를 캐시해 성능을 극대화 하는 구조를 구성한다.목적: SSR 방식의 정적 페이지 + Redis 캐시 + MinIO + Nginx + Docker 🗂️ 아키텍처 설명Client: 웹 브라우저에서 접속Nginx: 요청을 Flask 서버로 프록시Flask: SSR 처리 및 Redis 캐시 사용Redis: SSR 결과 캐싱MinIO: 정적 HTML/CSS 파일 저장소 🗂️ 핵심 구현 요소1. MinIO 설정static/ 폴더를 /data로 마운트MinIO 콘솔 접속 후 buckettest 버킷 생성index.html, index.css 업로드버킷 정..

카테고리 없음 2025.04.02

Redis의 영속성과 디스크 스와핑 - 왜 같은 '디스크 저장'인데 다른가?

Redis에 대해 공부하다가 헷갈리는 부분을 정리해본다. 겉으로 보면 Redis의 RDB, AOF도 디스크에 데이터를 저장하고,   운영체제가 RAM이 부족할 때 하는 디스크 스와핑도 데이터를 디스크로 보내는 것처럼 보인다. 둘 다 임시 저장소이면서, 결국 디스크에 의존하는 것이다. '그럼 Redis의 영속성과 디스크 스와핑은 같은 맥락에서 일어나는 일 아닌가?''Redis가 디스크에 데이터를 저장하는 것도 일종의 스와핑인가?''결국 RAM을 넘는 데이터가 디스크로 넘어간다는 점에서 같은 원리 아닌가?'하지만 이 둘은 전혀 다른 층위에서 일어나는 일이다. 비행기가 땅에 닿는다고 해서 자동차랑 같은 것은 아니다.그래도 둘 다 바퀴로 움직이니까 겉보기에는 비슷해 보인다.  Redis의 RDB/AOF는 사용자..

카테고리 없음 2025.04.02

Redis의 개념과 동작 원리

🗂️ Redis(Remote Dictionary Server)? "Key-Value 구조의 데이터 저장소" Redis는 자주 접근되는 데이터를 주기억장치인 메모리(RAM)에 저장해두고, 빠르게 꺼내쓰는 방식이다(In-memory).DB, Cache, Message Queue, Shared Memory 용도로 사용된다.  Redis는 단순한 문자열뿐만 아니라 다음과 같은 다양한 자료구조도 저장할 수 있다:String: 기본적인 키-값 List: 연결 리스트 형태로 push/pop 가능 Set: 중복 없는 집합 Sorted Set (ZSet): 정렬된 집합 Hash: JSON처럼 키-값 쌍의 묶음 Bitmap, HyperLogLog, Stream: 특별한 상황을 위한 고급 구조 Redis는 단순 캐시를 넘..

카테고리 없음 2025.04.02

MinIO(Object Storage)의 개념 및 이해

MinIO?오픈 소스로 제공되는 *분산 스토리지 솔루션으로, *클라우드 네이티브 환경에서 *S3 호환 API를 통해 데이터를 저장하고 관리할 수 있게 해준다. 주로 대규모 데이터 저장, 백업, 분석 용도로 사용되며, 경량화된 구조 덕분에 간편하게 배포하고 확장성 있게 구성할 수 있다.*분산 스토리지: 하나의 물리적인 저장장치(하드디스크 등)에 데이터를 저장하는 게 아니라, 여러 대의 컴퓨터나 저장장치에 데이터를 나눠 저장하는 방식*클라우드 네이티브 환경: 클라우드에서 태어난 애플리케이션을 위한 환경. 주로 Kubernates, 컨테이너(Docker), 자동화된 배포 같은 기술 사용.*S3 호환 API: 아마존의 오브젝트 스토리지 서비스인 S3와 같은 방식(프로토콜, 명령어, URL 등)으로 동작하는 AP..

카테고리 없음 2025.04.01

Flower의 개념

Flower는 Celery의 작업 상태를 실시간으로 모니터링할 수 있는 웹 기반 대시보드이다.Celery + Redis를 사용하는 구조에서 유용하다.왜 그럴까?Redis는 Task 상태를 저장하지 않기 때문에, Flower와 함께 쓰면 Redis 브로커에 실시간 연결되어 상태 추적을 가능하게 해주기 때문이다.Redis는 브로커 역할만 한다(메시지 큐잉).Task 실행/상태/결과는 워커 내부는 결과 백엔드에만 있다.상태 추적하려면 별도의 도구가 필요하다.여기서 Flower는 브로커 감시, Task 상태 추적, 워커 상태 감시, 수동 제어의 역할을 한다.브로커 감시: Redis 큐 상태 확인Task 상태 추적: 성공, 실패, 재시도 등 상태를 실시간으로 확인워커 상태 감시: 워커별 작업 수, Pool 상태,..

카테고리 없음 2025.03.31

Celery 개념 이해

기본 개념비동기 처리(Asynchronous Processing)소프트웨어에서 작업을 요청한 후 그 결과를 기다리지 않고 다음 작업을 계속 수행하는 방식동기 처리: A 작업 → 끝날 때까지 기다림 → B 작업비동기 처리: A 작업 요청 → 기다리지 않고 바로 B 작업 → A결과는 나중에 받음라면가게 예시동기적 방식은 손님이 라면을 주문하면 주방장이 라면을 다 끓일 때까지 대기하고 있다가 완료되면 다음 주문을 받는 것이고,비동기적 방식은 주방장이 라면을 끓이기 시작하는 동시에 다음 손님의 주문을 받는 것이다. `await` / `async'async: 비동기 함수를 정의할 때 사용await: 비동기 함수나 작업을 기다릴 때 사용 → 작업이 끝날 때까지 다른 일을 하게 해주고, 완료되면 결과를 받아옴imp..

이메일 전송 서버 구현하기(Redis Queue, Celery)

이 글은 비동기 이메일 전송 서버를 구현하면서"요청이 어떻게 처리되고, 각 기술이 어떤 역할을 하는지"를흐름 중심으로 이해할 수 있도록 정리한 개발 기록입니다.개요홈페이지에서 사용자가 'Contact Us'를 통해 이메일을 보내면,지정된 담당자에게 메일이 전달되는 비동기 이메일 전송 서버를 구현했다.초기에는 Redis 리스트큐(rpush / blpop) 방식으로 직접 큐를 관리하려 했지만,이후 구조를 단순화하고 안정성 확보를 위하여 Celery의 내장 메시지 브로커 기능을 활용하는 방향으로 전환하였다. 아키텍처 전체 동작 흐름 1. 사용자 요청 → 이메일 전송 요청 API 호출(/received)2. FastAPI 서버는 요청을 Celery 작업 큐에 등록하고 task_id 반환3. Celery 워커는..

카테고리 없음 2025.03.29

[컴퓨터공학/운영체제] 멀티프로세스 vs 멀티스레드, 기초부터 이해하기

🗂️ 개념 정리 및 실행 구조의 원리프로그램(Program)개념:실행 가능한 정적인 코드의 집합으로 아직 실행되지 않은 상태운영체제에 의해 실행되기 전까지는 단순한 데이터일 뿐임예시: .exe 파일, .py 스크립트, .class 파일 등특징: 자체로는 실행되지 않고, 운영체제의 명령 해석기(쉘, 커널 등)에 의해 프로세스로 만들어져야 함이 과정을 담당하는 주체가 바로 운영체제(Operating System) 운영체제(Operating System)역할:사용자가 프로그램을 실행하려고 하면, 운영체제가 그 요청을 받아들여 다음과 같은 일을 수행함프로그램 파일을 디스크에서 읽어와 메모리에 로드독립적인 메모리 공간을 할당프로세스 제어 블록(*PCB)을 생성하고 PID를 부여필요한 시스템 자원(파일, 입출력..

[AWS] AWS 기본 개념 완전 정복 | 서비스 종류, 용어, 조합 전략

AWS는 다양한 클라우드 서비스를 제공하며, 각각의 서비스는 용도에 따라 카테고리로 분류된다. 아래는 주요 서비스 분류와 자주 등장하는 용어들에 대한 정리다.1. 컴퓨팅 (Compute)EC2: 가상 서버 인스턴스를 생성하고 실행할 수 있는 핵심 컴퓨팅 서비스Lambda: 서버리스 방식으로 코드 실행 (이벤트 기반)ECS / EKS: 컨테이너 기반 애플리케이션 배포 및 관리Auto Scaling: 트래픽이나 부하에 따라 인스턴스를 자동으로 증감관련 용어: 인스턴스, 컨테이너, 서버리스, 스케일 인/아웃- 인스턴스: EC2와 같은 가상 서버, 실제 물리 서버 위에 만들어진 가상의 컴퓨팅 자원- 컨테이너: 애플리케이션과 그 실행환경을 패키징한 단위, 빠른 배포와 이식성 제공(예: Docker)- 서버리스: ..

AWS 2025.03.26