전체 글 59

[JPA 스터디] 객체와 테이블

※유튜버 '나무소리'님의 강의를 참고하였습니다.자원 접근 레이어비즈니스 컴포넌트: 도메인 규칙과 업무 흐름을 캡슐화해서 입력을 받아 결정·변환·검증하고, 필요한 인프라(리포지토리, 외부 API)를 오케스트레이션한 뒤 결과를 내는 자율적인 모듈도메인 규칙과 업무 흐름을 캡슐화도메인 규칙: 할인, 재고, 상태전이 같은 비즈니스 룰/불변식캡슐화: 메서드 몇 개만 노출입력을 받아컨트롤러나 다른 계층이 넘겨주는 커맨드/DTO를 파라미터로 받는다.필요한 인프라(리포지토리, 외부 API)를 오케스트레이션 한 뒤리포지토리: 엔티티 저장·조회 같은 영속성 접근자외부 API: 결제/알림/배송 같은 시스템 연동오케스트레이션: 호출 순서/트랜잭션 경계를 잡고 조율비즈니스 로직 레이어에 놓여있다.자원 접근 모듈: DB·파일시스..

카테고리 없음 2025.08.28

[JPA 스터디] 영속성의 이해

길어지는 취준 기간...공부로 멘탈 잘 잡아보자!감사하게도 유튜버 '나무소리'님께서 무료로 강의를 올려주셨다...영상을 기반으로 공부하며 개인적인 이해를 돕도록 위하여 내용을 추가해보려고 한다.나무소리님의 강의 재생목록은 밑에서 링크로 공유하겠다. 필요하신 분들은 방문해서 유익을 얻으시길 바란다.개요영속성: 영원히 계속되는 성질이나 능력트랜잭션 ACID 중 D=Durability와 직결된다.Durability: 커밋이 성공하면 전원이 나가도 데이터가 살아 있어야 한다.영속화: 어플리케이션의 상태와 상관 없도록 물리적인 저장소를 이용해 데이터를 저장하는 행위어플리케이션의 상태와 상관 없도록어플리케이션(프로그램)이 실행 중일 때만 유지되는 데이터가 있다(예: 메모리에 올려둔 객체, 변수 값, 캐시에 임시로 ..

카테고리 없음 2025.08.27

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..

반응형