Redis Lua Script를 활용한 원자적 처리를 적용했던 경험을 설명해주세요
대규모 쿠폰 발급 이벤트에서 수만건의 동시요청 테스트를 진행 햇을때 데드락과 중복발급 문제가 발생
처음에는 redis 분산락으로 동시성 제어를 했으나 락을 얻고 해제하는데 시간이 소요됨에 따라
대규모 쿠폰 발급시 그 시간이 증가하게 되어 최적화 하고자 lua script를 사용을 했고
lua script는 redis 서버에서 단일 트랜잭션으로 실행 대기때문에 race condition을 방지하고
redis 서버 내에서 실행 되기때문에 락을 얻고 해제하는 시간이 없기때문에
응답시간이 약 80프로 개선되었습니다
kafka를 도입하여 비동기 처리를 구현 했던 프로젝트에서 발생한 주요 장애와 이를 해결한 방법
쿠폰 발급 및 결제 완료 시에 이메일 알림을 실시간으로 발송 하면서 지연이 발생
kafka Topic을 생성 하여 발급 이벤트 했고 이메일 알림서비스가 비동기 메세지를 처리하고도록 구현을 했지만
메세지 소비 속도가 느려지는 문제가 발생
파티션을 늘리고 컨슈머 스레드를 확장하여 처리 속도를 개선
발송 지연이 단축되었고 대량 발급 상황에서 안정적인 처리가 가능했습니다.
Spring Batch를 사용하여 대용량 데이터 처리 문제를 해결했던 사례를 설명 해주세요
만료된 쿠폰과 유효기간이 지난 데이터를 정리하면서 데이터 베이스 부하가 증가
Spring Batch 를 도입하며 chunk 기반으로 데이터를 처리했고
처음에는 Pageable 를 사용하여 읽어왔지만 데이터를 절반 밖에 읽어 오지못하여
항상 페이지를 첫번째 즉 0번째부터 읽어오도록 설정을 하여 적은 리소스로 데이터 처리
그후 zero offset방식으로 맨뒤의 아이디를 읽어와 처리하는 방식으로 처리하여 처리 속도
데이터 삭제 속도 50% 향상된 경험이 있습니다.
API 응답 속도 개선을 위해 Redis를 활용했던 방식을 구체적으로 설명
자주 조회 되는 데이터를 Redis 캐시에 저장
데이터 갱신 시 캐시를 동기화 하도록 TTL 설정
Docker 와 Jenkins를 사용한 CI/CD 구축 경험을 설명
각 서비스 폴더에 JenkinsFile을 만들어 푸시시 각 서비스 폴더에 변경이 있을때만
Docker 이미지를 빌드를 했으며 모노 레포에서도 각각 유연한 배포가 이루어 지도록 설정
그후 AWS ECR 에 이미지를 저장하고 각 서비스의 태스크를 정의하고 fargate로
Rolling 업데이트를 진행을 했습니다
###
"Jari-Otte" 프로젝트에서 가장 도전적이었던 문제는 무엇이었고, 이를 어떻게 해결했나요?
선착순 쿠폰 발급시 대규모 동시 요청으로 인해 서버 부하가 급격히 증가 했고
쿠폰 재고 데이터가 충돌
redis lua 스크립트를 활용하여 쿠폰 재고상태를 원자적으로 제어
쿠폰 발급시 실시간 이메일 알림을 kafka를 도입하여 예약 이벤트를 비동기적으로 처리
DB와 분리된 메세징 시스템으로 부하를 분산
"Deep-I" 프로젝트에서 데이터를 수집하고 처리하는 로직에서 가장 중요한 부분은 무엇이었나요?
라즈베리파이로 수집한 데이터를 실시간으로 파싱하고, 데이터 일관성을 보장하는 로직이며
데이터 수집시 타임스탬프 기반 정렬을 적용해 시간대 간 일관성 유지
Redis를 사용해 자주 조회되는 데이터를 캐싱하여 데이터 처리속도 향상
"Jari-Otte"에서 MSA 아키텍처를 적용하며 배운 점은 무엇인가요?
서비스 분리의 중요성 동기 비동기 통신 활용 데이터 일관성
쿠폰 발급에서 Redis와 Kafka를 동시에 활용한 이유와 그 결과를 설명해주세요.
redis 는 쿠폰의 재고 즉 수량을 관리 하기 위해 원자적 연산에 사용을 하였고
fafka는 쿠폰 발급 이벤트를 메시징 시스템으로 관리를 하여 비동기 알림 및 로그 저장 을 했습니다
사용자 API 설계 및 보안을 강화했던 경험이 있다면 알려주세요.
JWT 인증 및 redis를 활용해 리프래쉬 토큰을 관리 함으로서 보안을 강화
사용자 요청 데이터의 유효성을 검증하는 필터를 추가
"창 헬스케어"에서 혈압 정보 API 설계 시 고려했던 보안 및 성능 요소는 무엇이었나요?
인증 권한 관리를 위해 JWT를 사용
MySQL 인덱스를 최적화 하여 조회 성능 개선
Access-Control-Allow-Origin
헤더를 설정해야 합니다."