2025/01 4

저스틴 비버 문제

저스틴 비버 문제란 인스타그램에 저스틴 비버가 게시글을 올릴 때마다 인스타그램 시스템 전체가 느려지거나 다운되는 현상을 말합니다.이런 저스틴 비버 문제는 소수의 유명인들의 게시글이 몇 분만에 수백만개의 좋아요를 받으면서 발생하였습니다. 1. Justin Bieber 문제이러한 문제는 인스타그램 초기에 좋아요 개수를 계산하는 방식에서 발생하였습니다.인스타그램은 게시글을 조회시에 좋아요 수를 같이 조회하게 되어있습니다. 수억 명의 팔로워를 갖는 저스틴 비버의 게시글은 초당 엄청난 좋아요 개수 조회 요청이 발생하였습니다.boardidtitleuser1asdf저스틴 비버likeuserboard_id홍길동1인스타그램은 원래 정규화된 좋아요 스키마를 사용해서 좋아요를 기록했습니다. 사용자가 좋아요를 누를 시 좋아요..

카테고리 없음 2025.01.31

Django - Throttling

스로틀링은 클라이언트가 api에 요청할 수 있는 속도를 제한하는 데 사용된다. django에서는 권한에 따라 인증되지 않는 사용자에게는 제한적으로 스로틀링을 적용할 수 있고, 분당 몇 회의 요청을 제한하는 bust throttling과 하루 요청 제한을 제한하는 sustained throttling을 적용할 수 있다.또한 각각 api 마다 다른 스로틀링을 적용할 수 있고, burst와 sustained 스로틀링을 동시에 적용할 수도 있다. 예시로 분당 30회, 하루 1000회로 동시에 제한이 가능하다.애플리케이션단의 스로틀링은 브루트포스 공격이나 ddos 공격을 막기 위한 방법으로 사용하면 안된다. 공격자는 항상 ip스푸핑이 가능하고 django의 스로틀링은 원자성이 보장되게 속도가 계산되지 않기 때문에..

django 2025.01.18

GraphQL

1. 서론내가 진행하게 된 개인 프로젝트에서 플린코 게임 서버를 구현하게 되었다.플린코 게임을 어떻게 하면 안전하게 구현할지 생각하다가 stake 플랫폼에선 플린코가 어떻게 작동하는지 궁금해 플레이했다.stake에서는 서버에서 공의 route를 정해주는 방식이다.여기서 보면 stake는 GraphQL을 사용하는 걸 알 수 있다.  2. GraphQL?GraphQL은 페이스북에서 만든 쿼리 언어이다. gql이라고도 부른다. 인기는 매우 높지만 openapi에선 실제로 사용하는 곳이 많진 않다고 한다.gql은 sql과 같은 쿼리 언어이다.gql과 sql의 차이는 sql은 데이터베이스 시스템에 저장된 데이터를 쿼리하는것이 목적이고, gql은 클라이언트가 서버로부터 데이터를 효율적으로 쿼리 하기 위한 목적이다...

카테고리 없음 2025.01.11