CS/자료구조 & 알고리즘2025. 11. 15. 17:11[알고리즘] 레이트 리미터(Rate Limiter) 설계에 사용하는 알고리즘

대규모 트래픽을 처리하는 대부분의 시스템은 공통으로 Rate Limiting(요청 제한)을 사용합니다.API 남용 방지, 과금 정책 관리, 트래픽 폭주 대응, 서비스 안정성 확보 등 모든 백엔드 시스템에서 필수적인 요소입니다. 그런데 레이트 리미터 구현을 생각하면 많은 개발자들이 카운터 증가시키기(INCR) 정도에서 멈추곤 합니다.하지만 실제 운영 환경에서는 정확도, 자원 사용량, 동시성, 버스트 허용, 처리율 평탄화 등 고려해야 할 요소가 훨씬 많습니다. 그래서 이번 글에서는 레이트 리미트 알고리즘 대표 4가지 방식을실제 운영 기준에서 비교하고 어떤 상황에서 어떤 방식을 선택해야 하는지 정리해보겠습니다. 왜 레이트 리미팅이 필요한가? 시스템은 항상 처리할 수 있는 한계가 있습니다.만약 갑작스런 트래픽..

CS/디자인 패턴2025. 7. 30. 16:24[디자인패턴] 싱글톤(Singleton) 패턴

프로그래밍을 하다 보면 "이 객체는 애플리케이션 전체에서 하나만 존재해야 해" 라는 요구사항이 종종 등장합니다.예를 들어 설정값, 테마, 로깅, 데이터베이스 커넥션 풀 등은 객체를 여러 개를 생성하면 중복 관리나 상태 불일치 같은 문제가 발생할 수 있습니다. 이럴 때 사용하는 대표적인 디자인 패턴이 바로 싱글톤(Singleton) 패턴입니다. 싱글톤 패턴의 개념 싱글톤 패턴은 애플리케이션 전역에서 하나의 인스턴스만 생성해서 사용하도록 보장하는 디자인 패턴입니다. 자바에서 객체를 생성할 때마다 new 키워드를 사용하여 메모리를 새로 할당받습니다.그러나 모든 상황에서 객체가 매번 새로 만들어질 필요는 없습니다.오히려 하나의 객체만 존재해야 하는 경우가 바람직할 수도 있습니다. 그럴 때 사용하는 것이 바로 싱..

CS/TIL2025. 4. 22. 22:33[TIL] 서버리스 아키텍처

서버리스 아키텍처란? 서버리스 아키텍처는 개발자가 서버 인프라를 직접 관리하지 않고, 클라우드 제공업체가 서버의 프로비저닝, 확장, 유지보수 등을 자동으로 처리하는 컴퓨팅 모델입니다. 개발자는 비즈니스 로직 구현에 집중할 수 있으며, 서버는 여전히 존재하지만 개발자에게는 추상화되어 보이지 않습니다. 대표적인 서비스로는 AWS Lambda, Google Cloud Functions, Azure Functions 등이 있습니다. 서버리스의 주요 장점 자동 확장성: 트래픽 증가에 따라 자동으로 리소스를 확장하여 안정적인 서비스를 제공합니다.비용 효율성: 사용한 만큼만 비용을 지불하는 'pay-per-use' 모델로, 리소스 낭비를 줄일 수 있습니다.빠른 개발 및 배포: 인프라 설정 없이 코드 작성에 집중하..

CS/TIL2025. 4. 9. 23:35[99클럽 면접 스터디 TIL 1일차] 동시성 문제 해결

Q. 동시성 문제란 무엇이며, 이를 해결하기 위한 기본적인 전략을 설명해주세요. 실제 운영 환경에 적용한 사례가 있다면 함께 설명해 주어도 좋습니다. ✅ 동시성 문제란?동시성 문제(Concurrency Issue)란 여러 스레드가 동시에 동일한 자원에 접근하거나 수정하려고 할 때 발생하는 문제입니다.멀티스레드 환경에서 자주 나타나며, 잘못된 동작이나 비정상 종료로 이어질 수 있습니다.❗️대표적인 동시성 문제 유형 문제 유형 설명 Race Condition 두 스레드가 동시에 자원에 접근하여 실행 순서에 따라 결과가 달라지는 현상Deadlock서로의 자원을 기다리며 무한 대기하는 상태Livelock서로 양보만 하다가 진전 없이 루프를 반복하는 상태Starvation특정 스레드가 자원 접근 기회를 계속 박탈..

CS/자료구조 & 알고리즘2024. 11. 11. 21:10[자료구조] 스택 vs 큐

스택(Stack) 입력과 출력이 방향이 한 곳으로 제한이 되며, 후입선출(LIFO, Last In First Out) 원칙을 가지고 있습니다. 스택의 사용 예시 1. 웹 브라우저 방문기록(뒤로 가기) : 가장 나중에 열린 페이지부터 다시 보여주는 형식으로 스택 구현 2. 역순 문자열 만들기 : 가장 나중에 실행된 것부터 실행을 취소한다 3. 후위 표기법 계산 4. 수식의 괄호 검사 (연산자 우선순위 표현을 위한 괄호 검사)  스택(Stack) 코드 예시 데이터 넣을 때는 push()데이터 최상위 값을 뺄 때는 pop()비어있는 지 확인하고자 한다면 isEmpty()꽉차있는 지 확인하고자 한다면 isFull()  push와 pop할 때는 해당 위치를 알고 있어야 하므로 기억하고 있는 '스택 포인터(SP)'..

image