시스템 설계

요구사항사내 고용 메세지 큐를 Kafka로 사용해야 한다현재 RabbitMQ 기반으로 작동 중지연이체 서비스는 유지되어야 한다(은행 점검 시간 종료 후, 자동으로 송금해주기다양한 은행, 다양한 점검 시간핵심 기능 설계지연이체 등록 API 개발지연이체 실행 구현스케줄러를 통해 DB의 데이터를 읽어와 송금 API에 전송데이터가 많아지면 5분 안에 모든 데이터의 송금을 완료 할 수 없음문제 해결 방법1. 스케줄러 늘리기=> 겹치지 않게 Read 해야하는 이슈가 발생, 복잡한 분기가 만들어짐=> 여러개의 스케줄러가 한번에 송금 요청 시 송금 요청 API server 부담 2. 메세지 큐 두기(Kafka) 이슈 사항토픽에 같은 송금 건이 쌓일 수 있다. (delay 상태가 만들어 짐)상태 체킹 로직 추가 컨슈머 ..
처리율 제한 규칙domain: authdescriptors: - key: auth_type Value: login rate_limit: unit: minute requests_per_unit: 5 상세 설계 그림클라이언트가 요청을 보내면 먼저 처리율 제한 미들웨어를 통하고 제한 규칙을 캐시에서 가져온다(빈번한 요청이 생김으로 캐시에 보관)처리율 제한이 걸리면 429 too many requests, 아니면 API 서버로 동작 분산 환경에서 구현단일 서버의 경우는 쉽겠지만 여러 대의 서버와 병렬 스레드의 경우 경쟁조건과 동기화의 문제가 있다경쟁 조건위와 같이 병행성이 심한 경우에서 경쟁 조건 이슈가 발생한다해결 방안으로1. 락을 건다(시스템 성능을 상당히 ..
네트워크 시스템에서 처리율 제한장치는 클라이언트 또는 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치이다특정 기간 내에 전송되는 클라이언트의 요청 횟수를 제한한다사용자는 초당 2회 이상 새 글을 올릴 수 없다.같은 IP 주소로는 하루에 10개 이상의 계정을 생성할 수 없다.같은 디바이스로는 주당 5회 이상 리워드를 요청할 수 없다.이점DoS 공격에 의한 자원 고갈을 방지비용 절감서버 과부하를 막는다설계클라이언트와 API 서버 사이에 처율을 체크하는 장치를 둔다 처리율 제한 알고리즘 종류토큰 버킷누출 버킷고정 윈도 카운터이동 윈도 로그이동 윈도 카운터1. 토큰 버킷 알고리즘간단하여 이해도가 높고 많은 기업들이 보편적으로 사용토큰 버킷은 지정된 용량을 갖는 컨테이너, 사전에 설정된 양의 토큰이 버킷에 ..
기본적인 서버 설계의 모든 것이 들어가 있는 그림입니다. 로드밸런서부하 분산 집합에 속한 웹 서버들에게 트래픽 부하를 고르게 분산하는 역할입니다.일단 ip로 접속하면 서버로 바로 가는게 아니라 로드밸런서로 갑니다.서버1 다운 시 서버 2로 전송 가능트래픽이 증가하면 새로운 서버를 만들고 자동으로 트래픽 분산 DB의 다중화db는 하나만 사용하는게 아닙니다.데이터 원본은(master)에 부(slave) db에는 사본을 저장하는 방식입니다두 개의 역할은 쓰기 연산과 읽기 연산으로 구분됩니다. 쓰기 연산보다 읽기 연산이 훨씬 많이 요청됩니다그래서 복제 db에 읽기 연산을 하고 주 데이터 서버에 쓰기를 하게 됩니다 메세지 큐만약 연산이 몰린다면 서버가 과부하가 걸릴 수가 있습니다그럴 때 메세지 큐를 통해서 연산의..
시스템 설계 할 줄 아시나요? 농담으로 백엔드 개발자를 json 상하차라고 한다 RestAPI가 대세인 현재 클라이언트와 서버 구조로 화면과 클라이언트를 담당하는 프론트엔드 서버와 DevOps를 담당하는 백엔드 이렇게 나뉘어져있다 그 중 나의 전문 분야인 백엔드는 db를 설계하고 데이터를 가져와 CRUD API를 구현하여 json 형태로 response를 보내주는 설계 부분 외 기능이 없으면 보통 크게 어려움이 없는 반복되는 일이다. 비록 서비스 회사에 있지만 스타트업 특성상 크게 어려운 작업들이 없었고 프로그래머로써의 실력을 기르고 싶어졌다. 실력을 증진 시키는 방법은 다양한 선택지가 있다.새로 나오는 기술들을 다루기풀스택이 되기 위한 프론트엔드 공부기본기라고 하는 알고리즘 공부 등오픈 소스 코드 보기..
두잇 두두
'시스템 설계' 카테고리의 글 목록