728x90
멱등성
멱등성이랑 데이터가 중복으로 요청되더라도 응답과 시스템 상태가 항상 같아야(일관성이 있어야) 한다.
응답
fun print(text: String) = text
특정 문자를 받아서 문자 그대로를 리턴하는 코드처럼
같은 요청에 같은 응답을 받는것이다.
시스템 상태
특정 인스턴스를 생성해서 저장하는 요청이라고 하면 리소스가 시스템에 계속 생성이 될 것이다.
이러면 시스템 상태에 영향을 주어, 멱등성이 없다라고 한다.
멱등성 보장
멱등성을 보장 해주기 위해 비즈니스 로직에서 처리하는 방법으로는
ID 키를 활용한 중복 생성방지
요청마다 유니크한 필드를 기준으로 db에 저장시켜준다.
데이터 저장시 특정 필드를 조회하여 비교 후 존재하면 존재하는 데이터를 응답시켜주기도 , 예외를 던져주기도 한다.
캐시
요청 후 생성된 유니크한 ID를 캐시에 저장 한다.
데이터가 처리가 완료되면 캐시에서 삭제 하여 데이터의 일관성을 보장한다.
장점 : 분산서비스에서도 글로벌 캐시를 사용하면 되고 db보다 빠른 성능으로 데이터의 일관성을 유지 시킬 수 있다.
한계 : 캐시서버의 장애가 단일 장애 지점이 될 수 있다.
아웃박스 패턴
데이터의 일관성과 장애상황에 아주 강력한 방법
생성요청과 함께 아웃박스테이블에 해당 요청을 저장한다.
다른 서버의 데이터 처리가 완료되면 아웃박스 테이블에서 삭제를 요청한다.
우와콘을 듣다가 카프카의 중복요청에 대응한 데이터 멱등성 처리가 떠올라서 작성 해보앗다
728x90
'개-발 > Infra' 카테고리의 다른 글
[Infra] pub/sub 사용시 주의사항 (1) | 2024.12.21 |
---|---|
[nGrinder] 내 서버는 어느정도 까지 버틸까 (stress Test) (0) | 2024.11.21 |
[nGrinder] multipart-form 스크립트 작성하기 (1) | 2024.11.19 |
[Infra] ngrinder 부하 테스트 도구 (1) | 2024.11.18 |
[Infra] Jmeter 부하 테스트 도구 (1) | 2024.11.18 |