IT 57

2진수와 10진수 그리고 변환하는 방법

💡 공통규칙 한 자리수로 부족해지면 왼쪽 자리수를 하나 늘리고, 자신의 자리수는 0으로 되돌림 두 자리수, 세자리 수…반복10진수0~9까지 10개의 숫자를 수로 표현우리가 평소 사용하는 숫자 카운팅 방식원리(두 자리수부터 적용)오른쪽 끝이 9일 때: 9 → 0왼쪽 끝이 9일 때: 9 → 0(자신의 자리수는 0으로 되돌림) & 왼쪽 앞에 한 자리수를 추가예시9의 다음 수: 왼쪽 끝이 9이므로 0으로 만들고, 왼쪽 앞에 한 자리수를 추가하여 1019의 다음 수: 오른쪽 끝이 9이므로 0으로 만들고, 왼쪽 끝이 1이므로 다음 단위인 2로 바꿔주어 2099의 다음 수: 오른쪽 끝이 9이므로 0으로 만들고, 왼쪽 끝이 9이므로 자신의 자리수는 0으로 만들고 그 앞에 한 자리수를 추가하여 100각 자리는 10의 ..

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)

이 글은 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를 부여필요한 시스템 자원(파일, 입출력..