본문 바로가기

728x90
반응형

Server

(21)
[LocalStack] LocalStack에서 EC2를 다뤄보자. 목차 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스 개요 최근 LocalStack을 결제하지 않고 이것저것 다뤄보는 중이다. EC2에 관련된 데모 영상이 있어 해당 영상을 보고 이것저것 따라 해봤는데 제대로 성공하기까지 꽤나 시간이 걸렸다. 단순 LocalStack을 이용해 EC2를 생성하는 것이라면 짧은 시간 안에 해결했겠지만 LocalStack의 EC2에 ssh 접속이 가능한 걸 보고 성공하기까지 많은 삽질이 있었다.  이 포스팅에서는 LocalStack에서 EC2를 생성하고 EC2에 ssh 접속하기까지 무엇이 필요한지 어떻게하면 되는지를 간단히 기록해보려 한다. 1.  Hobby Plan 준비사실 이 부분부터 준비헀으면 그렇게 많은 시간을 소비하지 않았을 것이다. 필..
[LocalStack] LocalStack에서 Simple Email Service를 사용해보자. 목차 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스 개요이메일 전송 기능 개발을 가정해보자. AWS를 사용한다면 SES(Simple Email Sevice)를 사용할 수 있을 것이다. SES를 사용하려면 이메일 인증 절차가 필요한데 오래걸리진 않지만 번거롭다. 또한 인프라와 개발을 분담해야하는 경우 개발하는 쪽에서 인프라가 준비될때까지 해당 기능을 계속 미뤄둬야할까? 이러한 상황에서 LocalStack을 사용하면 해당 기능의 뼈대가 되는 코드를 미리 작업할 수 있을 것이다. 또한 AWS의 비용 지출을 잠시 신경쓰지 않아도된다. 각설하고 LocalStack의 SES를 사용하는 방법을 알아보자. LocalStack SES 송신메일 설정하기LocalStack에서 SES를 사용하..
[LocalStack] 24년에 다시보는 LocalStack 설치하기 목차 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스 개요23년 이쯤에도 LocalStack을 다뤘는데 신기하게 24년에도 LocalStack을 다시 다루게 되었다. 23년에 정리했던 내용을 보니 docker-compose.yml에 localstack을 실행할 수 있도록 환경을 구성하거나 pip로 localstack을 다운로드하여 사용하는 방식이다. 실험해보고 싶은 아이디어가 생겨 24년에 와서 다시 localstack을 사용했는데 23년에 썼던 방식과는 조금 달라져있었다. 그래서 LocalStack을 설치하고 셋팅하는 방법을 다시 작성해보고자 한다. LocalStack Desktop24년에 들어 LocalStack 문서를 보니 LocalStack Desktop이라는 App..
[Redis] Redis Lock과 Redis Connection Pool HTML 삽입 미리보기할 수 없는 소스 개요 FastAPI에 Redis를 이용해 비동기 통신에 대한 성능 테스트를 시험 중이었다. locust에 Numbers of users는 1000 spawn rate는 100으로 설정하고 worker는 3개 정도를 주어 테스트 했다. FastAPI의 로그를 보고 있으니 다음과 같은 에러가 발생하고 있는 걸 확인했다. 위에 첨부한 이미지에서 확인할 수 있다시피 redis connection과 관련된 에러이다. 다음은 이 에러의 TraceBack 중 일부이다. ... File "/Users/jako/private/git-repo/backend-playground-src/coupons/src/repository/redis_repository.py", line 33, in..
[NGINX] Multiple Upstream 구성하기 HTML 삽입 미리보기할 수 없는 소스 개요 AWS-EC2에 Nginx의 Reverse Proxy를 이용해 FastAPI와 연계해 놓은 구성에 추가로 FastAPI를 등록해서 사용해야 한다. 이때 추가로 등록하고자 하는 FastAPI는 기존에 연계해 놓은 FastAPI가 아닌 전혀 다른 프로젝트를 기반으로 하는 것이다. 1. 도식 아래는 이해를 돕기 위해 기존에 등록한 구성의 도식이다. 만약 "http://www.example.com/"를 입력하면 먼저 설정해 놓은 "A-Service"로 라우팅 된다. A-Service의 Wroker를 증가시킴으로써 Nginx의 Upstream의 구성이 달라질 수는 있겠지만 위 도식은 일반적인 예제를 그린 것이다. 이러한 설정에 다음과 같은 구성을 추가적으로 설정하려 ..
[NGINX] 504, Gateway Time-Out HTML 삽입 미리보기할 수 없는 소스 개요 FastAPI + LangChain을 이용한 간단한 WAS를 AWC-EC2에 올려놨다. 이 구조에 더해 Reverse Proxy로써 Nginx도 같이 구성해 놓은 상황이다. 또한 LangChain에서 특정 결과를 내기까지 적어도 60~80초가 걸리는 현상이 존재하는 상황이기도 하다. 그렇다보니 요청을 한 후 응답을 받기까지의 시간이 60초가 넘었을 때 Nginx에서 504 Gateway TimeOut이 뜨는 현상이 발생했다. 어떻게 해결할 수 있을까? 1. Nginx에 설정 추가하기 Nginx에서 일단 설정을 다음과 같은 설정을 추가해 주자. location / { # 아래 항목 추가 proxy_connect_timeout 300; proxy_send_tim..
3. Delivery Guarantee - Mandatory HTML 삽입 미리보기할 수 없는 소스 1. mandatory란? RabbitMQ에 Message를 발행할 때 특정 Exchange의 Routing Key가 없어도 메시지가 발행된다. 이때 mandatory 옵션을 적용하게 되면 Message가 발행 됐을 때 오류를 캐치할 수 있다. 즉, Message 라우팅 실패를 알리는 데 사용할 수 있는 가장 간단한 옵션이다. 만약 Message 라우팅에 성공하면 발행자에게는 별도의 결과를 알려주진 않는다. 2. Setting mandatory 옵션을 테스트하려면 RabbitMQ에 Exchange만 생성해 두자. Routing Key는 선택사항이다. 3. Rabbitpy로 mandatory 사용하기 Rabbitpy에서 mandatory 옵션은 Message 객체의 ..
2. Rabbitpy를 이용해 RabbitMQ 다루기 RabbitMQ를 사용할 때 참고하기 위해 작성한 글 HTML 삽입 미리보기할 수 없는 소스 개요 Python에서는 AMQP protocol에 따른 통신을 수행하기 위해 유명한 라이브러리인 "pika"라는 게 존재하지만 여기서는 "rabbitpy"를 통해 RabbitMQ를 다뤄보기로 하자. 본 포스팅에서 작성할 내용은 Exchange, Queue, Binding을 어떻게 코드로 작성하는가에 대한 기본적인 내용만 담을 것이다. rabbitpy, install $ pip install rabbitpy rabbitpy, Connection rabbitpy를 이용해 exchange, queue, binding 기타 등등의 다양한 기능을 다루기 전에 rabbitmq에 대한 connection을 열어야 한다. co..

728x90
반응형