Definition what is onion architecture, pros and cons