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 보팅이 되거나 할 것 같습니다.
혹시나 그런 현상을 보더라도 너그러이 이해해주시길 부탁드립니다. ^^