Being a CMS, Drupal has an extensive interface to manage the current deployment. Here you can configure even the tiniest thing that relates to your site either via front-end or back-end. It’s very user friendly and comprehensively adequate for any power user. Such configurations not only form the standards for functionality but also define how the site is incorporated so much so that it almost forms an essential DNA of any Drupal deployment.
A blessing indeed, it sometimes becomes an overhead when we talk about migration possibilities. Such instances are inevitable in any project life-cycle and have to be dealt with utmost caution. Since all site-configurations are stored inside the database its tightly coupled with the current deployment. Thankfully we’ve mastered Features (Drupal contributed module) to export all such configurations to code and standardize it with GIT version control. This again is coupled into the deployment template for all such projects.