1st phase: ACID, event sourcing, optimistic lock, pessimistic lock, data structures, transaction 2nd phase: 1. given some longUrl + seoKeyword return shortUrl consisting of constant shortUrl string + seoKeyword 2. given some longUrl return shortUrl consisting of constant shortUrl string + 4 random alphanumeric characters 3. Given 2 instances of same service/application how to secure that one instance will use solution from @2 and other instance will use yet another function of shortening url consisting of shortUrl+ some number from 1..n
Sigiloso
Keeping in mind that solution should be simple and clean i did it all as new methods, apart of last one when we just talk and i only said that instances should introduce themselves to distinguish how we should handle instance (Configuration related stuff) Positive and negative scenarios were covered related unit tests