When machine learning workloads move beyond one machine, the hard part is not simply adding more CPUs. It is redesigning the boundaries between tasks, state, data, and services. Ray provides a Python native distributed execution model built around tasks, actors, and objects, then adds AI libraries such as Data, Train, Tune, RLlib, and Serve. This article uses a verifiable getting started example to explain where Ray fits and when it should not be introduced too early.