안녕하세요.
|
개발자 입니다.

thumbnail
TCP_TW 옵션?

개요? 최근에 프로젝트를 진행하면서, 리눅스 커널단의 설정에 의해 이슈가 발생하였다. 그래서 이번 기회에 TCP_TW 설정에 대해 알아보고자 한다. 이전에 이슈가 된 설정은 , 옵션이었는데, 이 옵션들은 상태의 소켓을 재사용하는 옵션이다. TIME_WAIT? TIME_WAIT 상태는 TCP 연결이 종료된 후, 일정 시간 동안 유지되는 상태이다. 이슈 최근 azure 의 를 세팅하면서 외부 요청에 대한 타임아웃이 발생하는 이슈가 있었다. 환경 AKS에 하나의 파드에 두개의 컨테이너를 띄운 상태 NAT 게이트웨이를 사용 이슈 시나리오 A컨테이너에서만 외부API를 호출하면 바로바로 응답이 옴 B컨테이너에서만 외부API를 호출하면 바로바로 응답이 옴 A컨테이너에서 외부API호출 후 바로 B컨테이너에서 외부API를 호출하면 타임아웃이 발생함 AKS초기 구성시에는 해당 현상이 발생하지 않았었다. 그런데, 어느 순간 해당 현상이 발생하기 시작했다. 서버 구축을 해주던 인프라팀에서 “tcp…

July 31, 2023
프로그래밍
쿠폰 발급 (3) - 레디스 적용

레디스를 적용해보자 시나리오 1. Coupon 이 생성 될때, 발행갯수만큼 CouponTicket(userId가 null 상태)을 DB에 저장한다. 2. 쿠폰 발급, CouponTicket의 ID를 Redis에 쌓는다. 3. 쿠폰 배급 Redis에 쌓이 CouponTicket을 가져온다. 가져온 CouponTicket이 이미 userId가 정해져있는지 DB에 확인하고 정해져 있지 않다면 userId를 맵핑하고 저장한다. 쿠폰티켓 결과를 반환해준다. 구현 1. Coupon 이 생성 될때, 발행갯수만큼 CouponTicket(userId가 null 상태)을 DB에 저장한다. 2. 쿠폰 발급, CouponTicket의 ID를 Redis에 쌓는다. 여러 방법이 있겠지만, 스케쥴러를 적용해보기로 했다. 일정 갯수 이하일때 Redis에 쌓기. Redis 설정하기 스케쥴러 적용 1초에 한번씩 체크 2000개 이하일때 10000개씩 밀어 넣게 구현 3. 쿠폰 배급 Redis에 쌓이 CouponT…

May 23, 2023
시리즈
쿠폰 발급 (2) - 부하테스트

새로운 요구사항 팀장: 잘 구현 해주셨군요. 대략적인 쿠폰 발행에 대해 이해도가 높아진것 같네요. 서버로 이제 구현해주세요. 세팅하기 발급 서비스 동시 요청 테스트 오래걸리는 작업은 까지 나왔다. 좀 더 빨리 할 수 없을까? 고민이 되었다. 이미 발급이 종료되었다면 빠르게 리턴하면 좋지 않을까? 테스트 결과 로 절반 정도 시간이 단축되었다. 중간점검 쿠폰이 발급해야되는 양만큼 정확히 발급 테스트 완료 100ms 이하 처리 속도 테스트 완료 서버 부하 테스트를 위한 준비 컨트롤러 CouponTicket 또한 발급하고 데이터 베이스에 저장 코드를 추가하였다. 부하 테스트 API 부하 테스트를 진행하고자 한다. 부하 테스트는 응답시간만 간단하게 체크 할 것이기 떄문에, K6 부하 테스트를 활용한다. k6.io K6 테스트 스크립트 높은 트래픽에서의 속도만 측정할것이기 때문에 시간은 길게하지 않았다. 응답시간이 만족스럽지 않다. 어디에서 지연이 되는걸까? 아무래도 “CouponTic…

May 21, 2023
시리즈
쿠폰 발급 (1) - 로컬테스트

요구사항 팀장 : 다음주에 99% 할인 쿠폰 발행 행사를 하려고하는데, 다음주 까지 개발해주세요. 요구사항은 다음과 같습니다. 쿠폰은 최대 발행 갯수를 가지고 있습니다. 쿠폰은 발행 갯수 만큼 발급 할 수 있습니다. 쿠폰 발행 갯수 보다 쿠폰티켓을 초과 발급 할 수 없습니다. 대규모 트래픽에서도 쿠폰 발행 갯수를 초과해서는 안된다. 응답시간은 요청당 100ms이하로 한다. 정의 쿠폰 최대 발행 갯수를 가진다. 쿠폰티켓 발행된 갯수를 가진다. 쿠폰티켓 발행 갯수는 최대 발행 갯수를 초과 할 수 없다. 쿠폰 티켓 발행한 쿠폰이 존재한다. 쿠폰 티켓을 소유한 유저ID 를 가지고 있다. 도메인 우선 도메인 부터 파악해보고자 한다. 쿠폰은 쿠폰티켓을 발급 할 수 있다. 쿠폰 티켓이 발급될때 발급 카운터를 증가시킨다. 동시요청 호출에도 안전할까? 쿠폰 발행은 동시에 여러 요청이 들어올 수 있다. 이때 동시에 여러 요청이 들어오면 어떻게 될까? 동시요청 테스트 시나리오 100개 발급 제한 쿠…

May 20, 2023
시리즈