The main drivers of the decision are:
1. Don’t add complexity to the system in the first place unless is heavy needed
2. If needed, use a framework that handles the inner implementation
3. If not, aim you to hide it from others
4. If you cannot hide the implementation and the ES complexity is exposed, then perform trainings.