728x90
반응형

전체 글 185

Spring Boot에 Redis와 연동하여 처리율 제한 장치(Rate Limiter) 적용하기(Spring Boot + Redis + Bucket4j)

Spring Boot에 Redis와 연동하여 처리율 제한 장치(Rate Limiter) 적용하기(Spring Boot + Redis + Bucket4j) 포스팅 동기 개인 프로젝트를 진행하면서 처리율 제한 장치를 적용해야하는 상황이 발생했습니다. 처리율 제한 장치를 구현하기 위해서는 크게 2가지 방법이 있는데, Client와 Server 사이에 MiddleWare를 두어서 Gateway를 이용하는 방법과 Server에서 구현하는 방법이 있습니다. 저는 Gateway를 사용하기에는 규모가 작은 프로젝트라서 Server에 직접 구현하였습니다.^^ 추가로 처리율 제한 장치에 여러 알고리즘이 존재하는데, 리소스를 고려하여 구현이 간편한 토큰 버킷 알고리즘을 사용했습니다.^^ 이 모든 내용을 혼자만 알고있기에는 ..

0+ 스프링 2023.10.22

[가상 면접 사례로 배우는 대규모 설계 기초] 2. 처리율 제한 장치(Rate Limiter)

[가상 면접 사례로 배우는 대규모 설계 기초] 2. 처리율 제한 장치(Rate Limiter) 아무리 대용량 데이터를 처리할 수 있다고 하더라도, 악의적인 목적을 가진 사용자가 무한정으로 서버에 요청을 하면 문제가 발생하기 마련입니다. 그래서 빅 테크 기업에서는 네트워크 시스템에서 처리율 제한 장치(rate limiter)를 설계합니다. 이번에 처리율 제한 장치가 무엇인지 알아보자! 처리율 제한 장치(Rate Limiter) 처리율 제한 장치란 클라이언트 또는 서비스가 보내는 트래픽의 처리율(rate)를 제어하기 위한 장치입니다. HTTP를 예로 들면 특정 기간내에 전송되는 클라이언트의 요청 횟수를 제한하는 것 입니다. API의 요청횟수가 제한 장치에 정의된 임계치(threshold)를 넘어서면 추가로 ..

운영체제 핵심 개요

운영체제 핵심 개요 운영체제란? 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어를 의미 🤔 운영체제 같은 대형 프로그램을 모두 메모리에 올리면 메모리가 낭비되는 것 아닌가요? 맞습니다.!! 운영체제처럼 규모가 큰 소프트웨어를 모두 메모리 올린다면, 메모리 낭비가 심합니다. 따라서 이러한 메모리 낭비를 고려하여, 운영체제 중 필요한 부분만 컴퓨터 전원이 켜짐과 동시에 메모리에 올려놓고, 그렇지 않은 부분은 필요할 때만 메모리에 올려서 사용합니다. 🤔 운영체제 하면 항상 커널 이야기가 나오는데 커널은 뭐죠? 메모리에 항상 올라가 있는 운영체제의 부분을 커널이라고 부릅니다. (커널은 운영체제 코드 중에서 핵심적인 부분을 의미) 운영체제의 기능 운영체제는 컴퓨터 하드웨어와 사용자 또는 소프트웨어 사이에 존재합니..

[가상 면접 사례로 배우는 대규모 설계 기초] 1. 사용자 수에 따른 규모 확장성

[가상 면접 사례로 배우는 대규모 설계 기초] 1. 사용자 수에 따른 규모 확장성 넌 대용량 데이터를 다루지 않으면서 왜 이책을 보는거야? 🤔 최근 면접을 진행하면서 꼭 빠지지 않은 질문이 있었다. 바로 대용량 데이터 처리 대한 질문이었다. 그럴때마다 나는 우물쭈물 어쩔줄 몰라했다…. 😇 대용량 데이터를 처리할 수 있는 환경이 아니었단 말이야! 라고 핑계를 댈 수 있다. 진짜로, 나는 지금까지 대용량 데이터를 처리할 기회(?)가 없었다. ㅎㅎㅎㅎㅎㅎㅎㅎ 그런데 훌륭한(?) 개발자라면 대용량에 대한 설계를 고려하면서 애플리케이션을 개발해야 한다고 생각한다. 컴퓨터의 존재 목적 자체가 사람이 감당할 수 없는 대량의 데이터(1,000개, 10만개… 1,000만개!!)를 처리하기 위해 등장했다고 생각하기 때문이..

[스프링 DB] MySQL의 트랜잭션 격리 수준(Transaction Isolation Level) 파헤치기

[DB] MySQL의 트랜잭션 격리 수준(Transaction Isolation Level) 파헤치기 모든 내용은 InnoDB를 기준으로 설명합니다.^^ 트랜잭션 격리 수준이란? 백엔드 개발자라면 트랜잭션 격리 수준(isolation level)이란 용어를 들어본 적이 있을 것 입니다. 그런데 트랜잭션 격리 수준 정확히 뭔가요? 🤔 트랜잭션 격리 수준이란 여러 트랜잭션이 동시에 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수있게 허용할지 말지를 결정하는 것 입니다. 즉, 하나의 트랜잭션 내에서 또는 여러 트랜잭션 간의 작업 내용을 어떻게 공유하고 차단할 것인지 결정하는 것을 의미 합니다. 트랜잭션 격리 수준은 크게 4가지로 구분 됩니다. READ UNCOMMITTED RE..

[스프링 DB] 트랜잭션 전파(propagation)

[스프링 DB] 트랜잭션 전파(propagation) 트랜잭션 전파에 대해서 알기 전에, 먼저 트랜잭션에 대해서 간단하게 설명 하겠습니다.^^ 트랜잭션? 🤷‍♀️ 트랜잭션(Transaction)을 번역하면 “거래” 라는 의미 입니다. 데이터베이스에서 트랜잭션은 하나의 “거래”를 안전하게 처리하도록 보장해주는 것을 의미합니다. 다시 말하면 작업의 완전성을 보장해주는 것 입니다. 👍 참고 트랜잭션은 하나의 Connection을 가져와 사용하다가 닫는 사이에 발생합니다. 트랜잭션의 시작과 종료는 Connection객체를 통해 이뤄지기 때문입니다. 2023.07.06 - [0+ 스프링/0+스프링 DB] - [스프링 DB] 트랜잭션의 이해 [스프링 DB] 트랜잭션의 이해 [스프링 DB] 트랜잭션의 이해 개발을 하..

728x90
반응형