RabbitMQ 로그인 문제
·
RabbitMQ/트러블 슈팅
로컬에서 서버가 정상적으로 실행이되는지 알기 위해 런버튼을 눌러서 서버가 정상적으로 작동되는지 확인해 보았다. 로그인을 하였지만 권한 문제로 로그인을 못하고 있다....다만 RabbitMQ Management에 접속하는건 가능하다.그리고 처음에 RabbitMQ를 실행하여도 adminstrator 권한과 vitual hosts를 받게 된다 (초기 비밀번호 1234) 그러나 새로 계정을 만들어서 권한이 없다면 해당 명령어를 사용한다. (필자는 docker에다가 RabbitMQ 설치했으므로 docker exec에서 하는 방식으로 알려드림) 사용자 추가rabbitmqctl add_user  사용자에 권한 부여rabbitmqctl set_permissions -p ".*" ".*" ".*" 사용자에 권한 부..
STOMP란?
·
STOMP
STOMP란?STOMP는 단순(또는 스트리밍) 텍스트 지향 메시징 프로토콜입니다.STOMP는 상호 운용 가능한 와이어 포맷을 제공하여 STOMP 클라이언트가 모든 STOMP 메시지 브로커와 통신할 수 있도록 하며, 다양한 언어, 플랫폼 및 브로커 간에 쉽고 광범위한 메시징 상호 운용성을 제공합니다.STOMP는 HTTP 디자인 학교에서 나온 매우 간단하고 구현하기 쉬운 프로토콜입니다. 서버 측은 잘 구현하기 어려울 수 있지만, 클라이언트를 작성하여 연결하는 것은 매우 쉽습니다. 예를 들어 Telnet을 사용하여 모든 STOMP 브로커에 로그인하고 상호 작용할 수 있습니다! -STOMP 공식 사이트https://stomp.github.io/ STOMPSTOMP is a very simple and easy ..
RadditMQ란?
·
RabbitMQ
RabbitMQ는 클라우드 환경, 온프레미스 및 로컬 머신에 쉽게 배포할 수 있는 안정적이고 성숙한 메시징 및 스트리밍 브로커입니다. -RabbitMQ 공식 사이트-https://www.rabbitmq.com/ RabbitMQ: One broker to queue them all | RabbitMQWhy RabbitMQ? RabbitMQ is a reliable and mature messaging and streaming broker, which is easy to deploy on cloud environments, on-premises, and on your local machine. It is currently used by millions worldwide.www.rabbitmq.com Rabb..
1대1 채팅 서비스 구현 계획-(8)(우리 지금 만나)
·
우리 지금 만나
1대1 매칭서비스가 성사 된 이후 그 둘에 대해서만 채팅이 가능하게 하는 서비스 구현 계획을 세우고 있습니다.  이에 대한 연관관계는?1대1 매칭 서비스가 성사된 이후 1대1 채팅 서비스를 구현할 때 필요한 주요 연관관계는 사용자와 채팅 세션 또는 채팅 메세지 간의 관계가 있습니다.  엔티티 구조사용자(Users)1대1 매칭(Matching) 각 사용자는 1대1 매칭 엔티티를 통해 매칭 관계를 설정합니다. 1대1 매칭(Matchings)일대다(User와 연관): 두 명의 사용자(user_id_1, user_id_2)를 연결하여 매칭을 성사시킵니다.1대1 채팅세션(chatrooms): 매칭이 완료된 후 채팅 세션을 생성하여 두 사용자가 연결될 수 있도록 합니다. 1대1 채팅 세션(chatrooms)필드: ..
Karka란?
·
Kafka
Apache Kafka에서 정의하는 카프라란?카프카는 고성능 TCP 네트워크 프로토콜을 통해 통신하는 서버 와 클라이언트 로 구성된 분산 시스템입니다 . 온프레미스와 클라우드 환경의 베어 메탈 하드웨어, 가상 머신 및 컨테이너에 배포할 수 있습니다.서버 : Kafka는 여러 데이터 센터 또는 클라우드 지역에 걸쳐 있는 하나 이상의 서버 클러스터로 실행됩니다. 이러한 서버 중 일부는 브로커라고 하는 스토리지 계층을 형성합니다. 다른 서버는 Kafka Connect를 실행하여 데이터를 이벤트 스트림으로 지속적으로 가져오고 내보내 Kafka를 관계형 데이터베이스 및 다른 Kafka 클러스터와 같은 기존 시스템과 통합합니다. 미션 크리티컬 사용 사례를 구현할 수 있도록 Kafka 클러스터는 확장성이 뛰어나고 내..
EC2 nano .env를 통한 환경변수 설정
·
AWS
해당 방법은 docker-compose를 통한 .env 설정이 안되거나 etc/environment로 환경변수 설정이 안되는 사용자들을 위한 글 입니다.  !!!! 절대로 보안이 중요한 프로젝트는 해당 방법을 사용하는것을 금합니다.!!!! 몰론 AWS SDK를 통한 Amazon Secret manager를 사용하는게 가능합니다. 다만 이거는 추후에 다뤄질 예정 몰론 자신이 사용하는 레포지토리에서는 보통은 .gitignore에 .env를 명시해놔서(깃 봇들이 돌아다니기에 보안상 위배되는 코드가 있으면 경고장을 날리거나 푸쉬를 못하게 1차 적으로 막는다.) 젠킨스나 깃액션를 통해 배포를 하여도 환경변수에 대한 정보를 가져올 수 없습니다. nano .env EC2 ssh에 접속 후 해당 명령어를 통해 명시적으..
인프라 난항2-(7)(우리 지금 만나)
·
우리 지금 만나
일단 시작하기 전에 인프라 설계도 부터 보여드리고 시작하겠습니다.  로컬로 빼놓은 젠킨스 -> 비용 절감 효과를 보기위해 로컬로 옮김EC2-ECS 구조 -> 카프카 컨테이너 분리, 오토 스케일링을 통해 자동으로 컨테이너 수 조절 -> 서버의 부하를 줄임 기존 EC2-ECS 구조입니다. 전에F fargate-ecs 구조에서 EC2-ECS 구조로 변경되었지만 사실 Fargate-ECS와 EC2-ECS 두 구조를 실행하여 어느게 더 효율적일지 비교을 해볼 예정입니다. 일단 처음으로 ECS에 배포를 해봐서 상당히 난항을 겪었습니다. 포멧 도 arm64 기준으로 해야 했지만 linus x86/64로 설정 해놓는 바람에 포멧팅 오류뜨게 되었습니다.exec /usr/local/openjdk-17/bin/java: e..
AWS 미숙한 조작으로 인한 과금이 생길땐
·
AWS
EC2-ECS 오케스트레이션 구조로 서버를 구축할려고 하나 계속 사용할 순 없으니 사용을 안할땐 서버를 무조건 닫아야 한다. 더구나 인스턴스 유형을 m5.large로 사용하기에 계속 열어두면 엄청난 과금(엔터프라이즈 급은 아니지만)나가기에 사용 안할 땐 인스턴스 사용중지를 해야한다. 그래서 사용 안하는 ec2는 사용 중지를 해두었다. 하지만!오토스케일링으로 인해 서버가 다시 실행 되었던 것이다.... 오토 스케일링을 켜놓으면 내가 인스턴스를 중지시켜도 오토 스케일링에 의해 새로운 인스턴스가 실행된다는 사실을 모르고 있었다.... 하지만 내가 의도한 실수가 아니니 AWS 측에서 개인적으로 문의를 해 환불에 달라는 부탁을 해야한다... 한국돈으로 약 8만원 지출 3.5일간 서버가 돌아가고 있다는 사실을 모른..
소모임 단건 조회에 RedisLimiter를 적용 후 Jmeter 테스트-(6)(우리 지금 만나)
·
우리 지금 만나
소모임 랭킹 조회 시스템 어뷰징 방지를 위해 set을 활용해 유저id 하나당 gatheringId 값마다 하나씩 조회수를 올릴수 있습니다. 허나 이 사실을 모르고 연속적으로 어뷰징을 할 경우도 있을 수도 있어 RedisLimiter를 두어 제한된 시간동안 일정이상의 조회를 못하게 방지하는 로직을 구현하여 서버의 부하를 막고자 시작하였습니다. 일단 RedisLimiter의 이점을 이러합니다. 서버 부하 방지 및 안정성 확보이유: 많은 사용자가 동시에 소모임 단건 조회를 반복적으로 요청할 경우, 서버는 과부하 상태에 놓일 수 있습니다. 특히, 악의적인 요청(어뷰징)이나 봇 트래픽이 있을 경우, 서버 성능이 급격히 저하될 위험이 있습니다.RedisLimiter 적용 이점: Redis를 활용한 레이트 리미터는 ..
소모임 다건 목록 Redis 적용 후 Jmeter 테스트 정리-(5)(우리 지금 만나)
·
우리 지금 만나
테스트 설명전에 제가 왜 소모임 다건 목록 조회 부분에 왜 Redis를 사용했는지 설명드리겠습니다. 총 4가지로 설명드리겠습니다. 1. 고속 데이터 조회 및 응답 속도 개선이유: 소모임 목록을 여러 사용자가 빈번하게 조회할 경우, 데이터베이스에 직접 접근하여 조회할 때마다 시간이 많이 소요되고, 서버에 과부하가 발생할 수 있습니다.Redis 사용 목적: Redis는 인메모리 데이터 저장소로, 데이터베이스보다 훨씬 빠르게 데이터를 읽어올 수 있습니다. Redis에 소모임 목록 데이터를 캐시하면 데이터베이스를 거치지 않고 빠르게 응답을 반환할 수 있어 사용자 경험이 개선됩니다.2. 데이터베이스 부하 경감이유: 소모임 목록은 많은 사용자가 동시에 조회하는 가능성이 높고, 지속적인 데이터베이스 조회는 서버 부하..