목록전체 글 (225)
주뇽's 저장소
포인트 지급의 동시성 제어 - 트랜잭션과 비관적 락킹 활용하기 💡포인트를 지급하는 과정에서 동일 계정에 대한 동시 요청으로 포인트가 중복 지급되는 문제가 발생했다. 이러한 동시성 문제를 해결하기 위한 다양한 방법과 최적의 해결책을 알아보자.1. 문제 상황 - 경쟁 상태로 인한 포인트 중복 지급 🚨현재 코드의 문제점포인트 지급 로직이 트랜잭션으로 묶여있지 않음포인트 지급 여부 확인과 실제 지급 사이의 시간 간격 존재동일 계정에서 동시에 여러 요청이 들어올 경우 모든 요청이 성공하여 포인트 중복 지급경쟁 상태 발생 시나리오요청 A: 포인트 지급 여부 확인 (미지급 확인)요청 B: 포인트 지급 여부 확인 (미지급 확인)요청 A: 포인트 지급 실행요청 B: 포인트 지급 실행 (중복 지급)2. 동시성 제어를 ..
메시지 큐에서 데이터 유실 및 중복 방지 방법 – Redis + 해싱 전략, Kafka, RabbitMQ 비교하기 💡메시지 큐 시스템을 사용할 때 중요한 문제 중 하나가 바로 데이터 유실과 중복 방지이다. 시스템에 장애가 발생하거나 중복 요청이 들어올 때, 메시지가 유실되지 않도록 처리하고 중복되지 않게 만드는 것이 중요하다. 오늘은 Redis + 해싱 전략, Kafka, RabbitMQ가 각각 어떻게 데이터 유실과 중복을 방지하는지 비교해본다.1. Redis + 해싱 전략 🏃♂️ – 빠르고 간단한 데이터 유실 방지Redis는 본래 메시지 큐 전용 시스템이 아니지만, 빠른 데이터 처리를 위해 자주 사용된다. 하지만 Redis에서 메시지 유실을 방지하기 위해서는 해싱 전략을 함께 사용해야 한다. 해싱..
파이썬 슬랙봇 완벽 가이드 🚀목차슬랙봇 소개와 필요성개발 환경 설정슬랙 앱 설정하기기본 기능 구현하기고급 기능 구현하기배포 및 운영문제 해결 가이드1. 슬랙봇 소개와 필요성슬랙봇이란?슬랙봇은 슬랙 워크스페이스에서 자동화된 작업을 수행하는 프로그램이다. 단순한 메시지 응답부터 복잡한 업무 자동화까지 다양한 기능을 구현할 수 있다.왜 슬랙봇이 필요한가?업무 자동화반복적인 알림 자동화정기 보고서 생성 및 공유일정 관리 및 리마인더개발 프로세스 개선코드 배포 알림빌드/테스트 결과 공유이슈 트래킹 연동팀 커뮤니케이션 향상자동 응답 시스템팀 공지 자동화FAQ 봇 구현모니터링 및 알림서버 상태 모니터링에러 발생 시 즉시 알림성능 메트릭 추적2. 개발 환경 설정필요한 도구 설치# Python 가상환경 생성python..
S3와 CloudFront 캐시 무효화: Lambda와 Boto3를 활용한 두 가지 방법 🛠️AWS S3와 CloudFront는 웹 애플리케이션에서 정적 파일을 효율적으로 제공하기 위한 필수 도구이다. 특히, S3는 파일을 저장하고, CloudFront는 이러한 파일을 전 세계적으로 빠르게 제공할 수 있도록 돕는다. 하지만 웹 애플리케이션을 운영하면서 파일이 업데이트되었을 때 CloudFront의 캐시가 갱신되지 않는 문제가 발생할 수 있다. 이때 캐시 무효화를 통해 최신 파일을 사용자에게 즉시 제공할 수 있다.이번 글에서는 S3와 CloudFront를 사용하는 이유부터 왜 캐시 무효화가 중요한지를 설명하고, 이를 해결하는 두 가지 방법(Lambda와 Boto3)을 소개한다. 이 방법들을 통해 웹사이트..
웅덩이가 있는 길을 피해, 마을에서 학교까지 갈 수 있는 모든 다른 길을 찾는 문제를 해결해 보자. 이 글에서는 마을에서 학교까지 도달할 수 있는 가능한 경로의 개수를 구하는 방법과 함께, 동적 프로그래밍(DP)을 활용한 경로 추적 알고리즘을 단계별로 설명한다.문제점: 웅덩이가 있는 경우 갈 수 있는 길이 제한된다 😓마을에서 출발하여 학교까지 가려면 특정한 경로를 따라야 하며, 이 경로에 웅덩이가 있으면 그곳을 지날 수 없다. 따라서 웅덩이를 피해 가능한 모든 경로의 개수를 구해야 한다. 단순히 오른쪽이나 아래쪽으로만 이동할 수 있는 경우, 웅덩이를 피하면서 학교까지 도달하는 모든 가능한 경로를 찾으려면 어떻게 해야 할까?해결책: 동적 프로그래밍을 사용한 경로 계산 🛠️지도 그리기 먼저, 마을에서 학..
Docker 네트워크로 FastAPI와 Kafka 컨테이너 연동하기: 주의할 점과 해결 방법뎁쭌 2024. 9. 13. 16:20 수정 공개 삭제Docker를 사용해 서로 다른 두 개의 컨테이너, FastAPI와 Kafka를 연결하고자 할 때, 네트워크 설정이 매우 중요하다. FastAPI 컨테이너에서 Kafka와 원활하게 통신하려면 같은 Docker 네트워크 안에서 실행되어야 하며, 네트워크 설정을 올바르게 구성하지 않으면 통신 오류가 발생할 수 있다. 이 글에서는 Docker 네트워크를 이용해 두 개의 컨테이너를 연동하는 방법과 주의할 점에 대해 설명한다.문제점: Docker 컨테이너 간 통신 오류 발생 😓FastAPI 컨테이너와 Kafka 컨테이너를 각각 실행하고 나서 FastAPI에서 Kafka..
Uvicorn에서 Gunicorn으로 전환 시 발생한 Kafka 문제 해결: 비동기, 동기, 블로킹, 논블로킹 개념과 적용 방법FastAPI 프로젝트에서 Kafka를 사용해 비동기 메시지 처리를 구현하다 보면, Uvicorn 단독 실행에서는 문제없이 동작하던 코드가 Gunicorn과 함께 실행할 때 문제를 일으킬 수 있다. 이 글에서는 Uvicorn과 Gunicorn의 차이, 비동기/동기, 블로킹/논블로킹 개념을 바탕으로 Kafka와 관련된 문제를 해결하는 방법에 대해 설명한다.문제점: Gunicorn 환경에서 비동기 처리가 제대로 되지 않음 😓FastAPI와 Kafka를 연동해 Uvicorn에서 workers=4로 설정하여 실행했을 때는 비동기 처리가 잘 이루어졌다. 그러나 Gunicorn과 Uvic..
아래는 네가 설명한 블로그 포맷에 맞춰서 zsh에서 git 명령어 자동 완성 설정 방법을 작성한 내용이야:[ZSH] 자주 사용하는 명령어 자동 완성 설정: git checkout을 빠르게 사용하는 방법 💻뎁쭌 2024. 9. 10. 17:23ZSH에서 자주 사용하는 명령어를 자동 완성하여 작업 효율을 높이는 방법에 대해 이야기해보자! 😎터미널을 자주 사용하는 개발자라면, git checkout과 같은 명령어를 반복적으로 치는 것이 지루할 수 있다. 이런 반복적인 명령을 빠르게 입력할 수 있도록 도와주는 자동 완성 기능을 설정하면, 생산성을 크게 향상시킬 수 있다. 오늘은 이 자동 완성을 설정하는 방법을 알아보자.문제점: 반복적인 명령어 입력이 귀찮다 😩터미널에서 자주 사용하는 명령어를 매번 완전히 ..