2025/03 15

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)

이 글은 FastAPI와 Celery를 이용한 이메일 전송 시스템을 설계하며 고민했던비동기 처리 구조, Redis 큐 분리, asyncio 사용 이유에 대해 정리한 기록입니다.🔗Github Repositoryhttps://github.com/kgh-codingWorld/email-server.git 개요홈페이지에서 사용자가 'Contact Us'를 통해 이메일을 보내면,지정된 담당자에게 메일이 전달되는 비동기 이메일 전송 서버를 구현했다.초기에는 Redis 리스트큐(rpush / blpop) 방식으로 직접 큐를 관리하려 했지만,이후 구조를 단순화하고 안정성 확보를 위하여 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

[AWS] AWS 기본 개념(3) - CloudWatch, Auto Scaling, API Gateway

모니터링 및 관찰성CloudWatchAWS 리소스 및 애플리케이션의 운영 상태를 실시간으로 모니터링하고, 로그를 수집 및 분석할 수 있는 통합 모니터링 서비스로, 를 통해 시스템의 성능, 가용성, 운영 상태를 효율적으로 곤리하고 자동화된 대응을 설정할 수 있다.  1) 지표(Metrics) 수집 및 시각화EC2, RDS, Lambda, ELB 등 다양한 AWS 리소스의 지표(예: CPU 사용률, 디스크 I/O, 네트워크 트래픽 등)를 실시간으로 수집하고 시각화할 수 있다.  2) 로그 수집 및 분석애플리케이션 및 시스템 로그를 수집하여 중앙에서 검색, 분석, 저장이 가능하다. 이를 통해 오류 원인 분석 및 보안 감사에도 활용된다.  3) 경보(Alarm) 설정설정한 임계값을 기준으로 경보를 생성할 수 있..

카테고리 없음 2025.03.25

[AWS] AWS 기본 개념(2) - 데이터베이스 서비스와 네트워킹 서비스

데이터베이스 서비스1. RDS(Relational Database Service)아마존이 제공하는 완전 관리형 관계형 데이터베이스 서비스로, 사용자가 데이터베이스 관리 및 유지보수에 대한 부담 없이 손쉽게 데이터베이스를 구축하고 운영할 수 있게 지원한다.  1) 완전 관리형 데이터베이스 서비스데이터베이스 설치, 유지 관리, 패치 적용, 백업, 모니터링 등 데이터베이스 운영에 필요한 작업을 AWS가 자동으로 수행한다.  2) 다양한 데이터베이스 엔진 지원MySQL, PostgreSQL, Oracle, SQL Server, MariaDB, Amazon Aurora 등  3) 자동 확장 및 성능 최적화성능 요구사항에 따라 인스턴스를 유연하게 변경할 수 있으며, 읽기 복제본(*리드 레플리카)을 활용해 읽기 성능..

카테고리 없음 2025.03.25

[AWS] AWS 기본 개념(1) - 컴퓨팅 서비스와 스토리지 서비스

AWS(Amazon Web Services) 아마존이 제공하는 클라우드 서비스로, 전 세계적으로 가장 널리 사용되는 클라우드 플랫폼 중 하나이다.IT *인프라 구축에 필요한 컴퓨팅, 스토리지, 데이터베이스, 네트워크, 보안 등 다양한 서비스를 제공한다.*인프라: IT 분야에서 주로 정보 시스템을 운영하기 위해 필요한 기반 시설이나 자원(하드웨어, 소프트웨어, 네트워크 등 서비스를 제공하는 데 필수적인 구성 요소 포함) 1. 클라우드 컴퓨팅이란?인터넷을 통해 서버, 스토리지, 데이터베이스, 네트워킹, 소프트웨어 등의 IT 리소스를 주문형으로 제공받아 사용할 수 있는 기술이다. 사용한 만큼 비용을 지불하며, 필요에 따 빠르게 확장 또는 축소할 수 있는 유연성이 장점이다. 2. AWS의 주요 서비스 컴퓨팅 서..

AWS 2025.03.24

[컴퓨터공학/운영체제] 운영체제 기초 | CPU, 메모리, 파일 시스템 관리

운영체제란 무엇인가?운영체제(Operating System, OS)는 하드웨어와 소프트웨어 사이에서 중재 역할을 하는 핵심 시스템 소프트웨어다.사용자가 프로그램을 실행하거나 파일을 저장하는 것처럼 단순한 행동을 하더라도, 그 이면에서는 운영체제가 CPU, 메모리, 저장 장치 같은 자원을 알맞게 배분하고 관리하고 있다. 운영체제가 필요한 이유CPU - 연산을 수행하는 두뇌메모리(RAM) - 프로그램과 데이터를 임시로 보관파일 시스템(디스크) - 영구 저장 공간여러 프로그램이 동시 실행될 때, 이 자원들을 아무 통제 없이 쓰게 되면 충돌, 속도 저하, 보안 문제가 발생한다. 이 자원들을 효율적이고 안전하게 분배하는 역할을 운영체제가 수행한다. 운영체제의 주요 목적자원 관리(Resource Management..

[컴퓨터공학] 컴퓨터 개념 기초 | 메모리 계층 구조

"RAM이 느려서 CPU가 기다린다"는 말의 진짜 의미는 무엇일까?본문에서는 CPU와 메모리 간의 병목을 해결하기 위한 계층적 메모리 구조를 분석한다.왜 다양한 메모리가 필요한가?CPU는 점점 빨라지는데, 메모리는 그 속도를 따라가지 못한다.*물리적 제약의 차이: CPU는 집적도가 높은 소수의 회로에 초고속 연산을 집중시키는 구조다. 반면 메모리는 데이터를 많이 담는 게 우선이므로 회로를 촘촘하게 배치할 수 없다.*기술 발전 속도의 차이: CPU는 고속화에 특화된 설계 개선이 매년 이루어졌지만 메모리 기술은 발전 속도가 느리고 대부분 용량 증가 위주로 발전한다.이로 인해 CPU는 데이터를 기다리느라 멈춰서는 상황이 빈번하게 발생한다. 이 문제를 해결하기 위해 컴퓨터는 속도와 용량, 가격 사이에서 균형을 ..