205
9
장
FaaS 응용 마이크로서비스
함수 처음 시작 시 커밋
이벤트 배치가 함수에 전달된 이후 오프셋을 커밋하는 방식입니다. 반복적인 이벤트 처리 실패
를 해결하기 위해 프레임워크에 종속적인 재시도 메커니즘과 알림 기능에 의존하는 많은
FaaS
프레임워크에서 사용되는 간단한 방법입니다. 이벤트 처리 상황을 추적하기가 아주 간단해지
므로 코레오그래피 패턴에 따라 다른 함수를 호출하는 함수가 주로 이 방법을 사용합니다.
하지만 처리가 완료되기 전에 오프셋을 커밋하면 다른 문제가 생길 수 있습니다. 함수가 이벤
트를 정상 처리할 수 없게 되어 여러 번 재시도를 한 끝에 실패할 경우 데이터는 손실될 것입니
다. 이럴 때에는 보통 이벤트를 데드-레터 큐
dead
-
letter
queue
로 보내거나 그냥 버립니다. 많은 함
수 기반 마이크로서비스는 데이터 손실에 민감하지 않지만 민감한 마이크로서비스라면 이 전
략은 삼가는 게 좋습니다.
9.1.3
적을수록 좋다
FaaS
프레임워크는 단일 함수를 쉽게 작성하고 여러 서비스에 재사용 가능하다는 장점이 자주
부각됩니다. 하지만 이 방법을 곧이곧대로 따라하면 경계 콘텍스트 안에서 정확히 무슨 일이
벌어지고 있는지 파악하기 곤란한, 매우 파편화한
fragmented
솔루션이 될 가능성이 높습니다. 또
함수 소유권이 모호해지며 어느 함수를 변경할 경우 다른 서비스에 어떤 부정적인 영향을 미칠
지 불확실해질 수 있습니다. 이 문제는 함수를 버저닝
versioning
하면 (버전 번호를 매기면 - 옮기
면) 조금 도움이 ...