목록전체 글 (222)
주뇽's 저장소
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과 같은 명령어를 반복적으로 치는 것이 지루할 수 있다. 이런 반복적인 명령을 빠르게 입력할 수 있도록 도와주는 자동 완성 기능을 설정하면, 생산성을 크게 향상시킬 수 있다. 오늘은 이 자동 완성을 설정하는 방법을 알아보자.문제점: 반복적인 명령어 입력이 귀찮다 😩터미널에서 자주 사용하는 명령어를 매번 완전히 ..
리액트에서 HTTPS 설정을 받고 스프링으로 HTTP 요청을 유지하는 방법: Nginx를 이용한 SSL 종료 구현 🔒개발을 하다 보면 프론트엔드는 HTTPS를 사용하고 싶지만, 백엔드 서버는 HTTP를 그대로 유지해야 하는 상황이 있다. 이런 경우 Nginx를 이용한 SSL 종료(SSL Termination)를 구현하면 효과적으로 문제를 해결할 수 있다. 이 글에서는 리액트 애플리케이션과 스프링 부트 백엔드 사이에 Nginx를 두어 SSL 종료를 구현하는 방법에 대해 설명한다.문제점: HTTPS와 HTTP 혼용의 어려움 😓보안을 위해 프론트엔드에서는 HTTPS를 사용해야 하지만, 백엔드 서버는 여러 이유로 HTTP를 사용해야 하는 경우가 있다. 이런 상황에서 발생하는 주요 문제점은 다음과 같다:혼합 ..
배포를 자동화하는 방법: 깃액션과 SSH로 EC2에 프론트엔드를 배포하는 이야기 🚀개발을 하다 보면, 배포 과정이 정말 귀찮을 때가 있다. 특히나 프론트엔드 배포처럼 간단하지만 반복적인 작업을 계속해야 할 때는 더 그렇다. 매번 코드를 수정할 때마다 git push를 하고, EC2에 접속해서 git pull, 그리고 npm run dev를 하는 일이 반복되다 보면 정말 지루해진다. 이 단순하고 반복적인 작업을 자동화할 수는 없을까? 바로 그 해답이 CI/CD다! 💡문제점: 수동 배포는 너무 귀찮다 😩배포 과정을 자동화하지 않으면, 다음과 같은 흐름으로 배포 작업을 해야 한다:로컬에서 코드를 수정하고 git push 한다.AWS EC2 서버에 접속한다.서버에서 git pull 명령어를 실행한다.최신 ..
풀 리퀘스트 승인을 위한 6가지 필수 코딩 패턴 🚀효율적이고 가독성 높은 코드는 빠른 풀 리퀘스트(PR) 승인의 열쇠입니다. 다음 6가지 패턴을 따라 코드 품질을 높이고 동료들의 이해를 돕습니다.1. 조기 반환(Early Returns) 사용과 주요 로직 왼쪽 정렬 ⬅️❌ 나쁜 예:function processUser(user) { if (user.isActive) { if (user.hasPermission) { return doSomething(user); } else { return null; } } else { return null; }}✅ 좋은 예:function processUser(user) { if (!user.isActive) return ..