(1) there are situations like this:
if
DeductCreditInRatingGroup ->
log("deducting credit...");
end;
unfortunately you cannot write it this way. You have to write it as: if
DeductCreditInRatingGroup ->
log("deducting credit...");
true -> ok
end;
Not a huge deal but it's annoying.(2) Let it crash attitude is something I never understood. It's just not something you can do most of the time. If subscriber consumed 2MB and you let it crash in the middle of rating function you just "lost" 2MB. With couple of million subscribers on LTE that turns into very expensive error handling very fast.
(3) We actually ended up using hackney.
(4) We were not doing anything compute heavy. I think our application was well architected and we had no problem fitting it into OTP "framework". Comparing CPU and memory usage to our Java implementation, Java is more performant.
edit: fixed code formatting.