The Command Query Responsibility Segregation pattern