In my rendering architecture, the renderer class owns a series of pipelines which are composed of stages. A pipeline is for a specific cameraviewport. Each stage can either cull/sort the renderables in the scene, or take the renderables output of a previous stage to generate render commands from them. My scene is currently an octree of renderables, but for the longest time was simply an unsorted list.
Here's my current render setup in my game
-Shadow map stage
-Reflection map stage
-post processing stage