2024/08 4

[WebSocket] WebSocket으로 채팅 구현하기 - 이론편 (특징, 동작과정, STOMP)

WebSocket   WebSocket을 공부하기 전에는, WebSocket이 그저 양방향 통신을 제공하는 특정 기술을 말하는 줄 알았다. 하지만 WebSocket이란 기술을 의미하는 것이 아니라 양방향 통신을 제공하기 위해 개발된 '프로토콜'을 의미한다. 간단하게 설명하자면, WebSocket 통신을 사용하는 URI로 HTTP Request를 보냈을 때 요청이 올바르다면 protocol을 HTTP에서 WS(WebSocket)으로 Upgrade 한다. 그 이후에는 WS 프로토콜을 사용하여 양방향 통신을 진행한다고 생각하면 된다.   WebSocket의 특징과 통신 과정을 자세히 알아보자WebSocket 특징HTTP 통신과 다르게 서버에서 Response를 받고 난 이후에도 Connection을 그대로 유..

[Docker] ERROR 1045 (28000) : Access denied for user 'root'@'localhost' 해결 방법 총 정리

해커톤 당일 12시가 넘어서 기획이 끝이 나고, 부랴부랴 aws 계정 만들고(몰랐는데 기존에 사용하던 네이버, 구글 계정을 죄다 aws 계정으로 만들었다 삭제해 둔 상태였다. 분명 몇 달 지나면 다시 사용할 수 있다고 들었는데, 이미 사용하고 있는 이메일이라고 사용 거부당했다. 그래서 구글 계정부터 새로 만든다고 한 시간을 날려먹었다. 이런 부분을 미리 확인했어야 했는데.. 나란 놈 멍청한 놈) dockerhub 계정도 만들고, github actions workflows도 작성하고, 마지막으로 ec2에 접속해서 docker-compose.yml를 작성했다. 세팅은 끝이 났고 mysql workbench에 들어가서 db 연결한 후, 열심히 으쌰으쌰 코드 작성하고 push만 하면 끝~~~~인 줄 알았는데...

[Rate Limiter] 트래픽 제어를 위한 처리율 제한 기능 (실전편-sample code, Bucket4j)

이론 편에서는 Rate Limiter의 다섯 가지 알고리즘을 공부했었다. 이번 글에서는 SpringBoot에서 Rate Limiter를 지원하는 라이브러리를 비교해 보고, 한 가지를 사용해서 샘플 코드를 작성해 보겠다.    Rate Limiting 라이브러리   Spring에서 처리율 제한 기능을 지원하는 라이브러리들의 장단점을 살펴보고, 내 서비스에 어울리는 라이브러리를 골라보자 Guava - Rate Limiter구글이 개발한 오픈소스 라이브러리로, Token Bucket 알고리즘을 기반으로 동작장점사용이 쉽고 직관적이며 안정적임단점동시성 제어가 약하고 분산 시스템에 부적합기본적인 rate limiting 기능만을 제공함RateLimitJSliding Window 알고리즘 기반github readm..

[Rate Limiter] 트래픽 제어를 위한 처리율 제한 기능 (이론편)

Untitled 서비스에서는 request마다 요금을 내야 하는 외부 api를 사용하고 있어서, 이 경우 유저의 무분별한 api 호출 때문에 예상 비용을 초과할 수 있으므로 어느 정도의 제한이 필수적이다. 또한 동일한 짧은 시간 동안 서버에 부하를 가하는 DDos 공격등을 막기 위해서라도 api 호출에 제한을 걸어야만 한다. 이를 위한 방법으로 api 호출에 대한 요청 빈도를 제어하는 Rate Limiter에 대해 알아보자      Rate Limiter   Rate Limitting은 '서버가 특정 임계치까지만 클라이언트의 요청을 허용하는 정책' 으로, Rate Limiter는 유저의 요청이 Rate Limit 값을 초과하면 API 호출을 제한시키는 역할을 한다. 이렇게 API 호출을 우리가 원하는 수..