Your profile states you're a senior software engineer with 6+ years of experience. Leaving aside the dubious nature of calling yourself senior with that level of experience, how do you call yourself senior when you can't comprehend these questions or, worse, not even to appear to put any effort into it before asking others? I
may be wrong, you may have put quite a bit of effort in but, in that case, you really should document what you've done to date. As it stands, this looks like a "do my homework for me" type of question. —
paxdiablo 6 secs ago