Reasoning about change: Lessons learned from building a near real-time system for Azure pricing