KRWP 보팅 서비스 테스트 중
안녕하세요 @realmankwon입니다.
KRWP 보팅 서비스를 개발하고 있습니다.
개발하면서 힘든 점은 다음과 같습니다.
-
스팀엔진 및 스팀 api 호출시 장애에 대한 처리
-
반환 로직의 조건에 따른 반환 처리
-
계산된 보팅 비율에 따라 1 KRWP 당 1000원 이상의 보팅 처리
스팀엔진 및 스팀 api 호출시 장애 처리를 위해서 내부적으로 전송내역을 저장하는 db 와 반환, 보팅을 처리하는 부분을 분리하였습니다.
또한 전송내역의 block num, trx id 를 key 로 하여 이후 반환과 보팅을 처리하기 때문에 해당 전송 건에 대한 처리가 어떻게 되었는지 즉시 확인이 가능합니다.
반환 및 보팅이 되면 그 건에 대한 block num, trx id 도 입력을 하기 때문에 처리가 어떻게 되었는지 스팀 블록으로 확인도 가능합니다.
해당 정보에 대한 ui는 현재로서는 개발하기 힘들지만 추후 필요하다면 개발을 하면 될 것 같습니다.
지금은 위의 반환 로직에 대한 처리에 중점을 두 고 있습니다.
반환 조건에 대해서 제대로 걸러지고 있는지 반환 처리로 입력된 건들이 제대로 반환이 되는지를 확인 중입니다.
반환 로직을 개발하면서 스팀에 대해서 새로이 알게 된 것들도 있습니다.
블록의 내용이 동일한 건을 짧은 시간 내에 호출하면 그건 1건으로 처리를 해 버리더군요.
그래서 키체인 오류 등으로 동시에 2건이 처리된 것들은 반환시에는 동일한 내용으로 봔환이 되니 1건만 처리가 되었습니다.
운 좋게 이런 예외 케이스를 찾게 되어서 이런 건을 방지하기 위해서 메모에 block num - trx id 를 추가하여서 중복이 없도록 개발하여 정상적으로 처리되는 것도 확인을 했습니다.
현재는 이와같이 반환 건에 대한 처리에서 오류없이 잘 처리가 되는지를 확인 중에 있으며 장애 발생시에 이전 시간으로 돌려서 처리가 되는지도 계속 확인 중에 있습니다.
중복으로 반환되지는 않는지 중복으로 보팅이 되지는 않는지 등등 일어날 수 있는 예외케이스들을 계속 생각하고 있습니다.
시스템이 개발자의 의도대로 돌아가면 좋지만 개발자가 생각하지 못한 부분들 때문에 장애가 일어납니다.
그래서 항상 그렇게 하지 않았을 경우를 많이 생각하다보니 점점 더 보수적으로 되고 개발 기간도 길어지는 듯 합니다.
예외 케이스가 많고 허점이 많다고 느낄수록 더 많은 시간과 노력이 들어가니까요.
이제 막바지 작업 중에 있습니다.
그래도 KRWP 임대보다는 셀 구멍이 적어서 다행입니다 ^^
이 글은 KRWP 보팅 테스트를 위해서 작성한 글이다 보니 중복으로 sct.krwp 보팅이 되거나 할 것 같습니다.
혹시나 그런 현상을 보더라도 너그러이 이해해주시길 부탁드립니다. ^^