1. A method for network storage, the method comprising: receiving, by a storage compiler, a first storage definition from a storage application developer, wherein the first storage definition describes a customized storage implementation for storing data in an abstraction of at least one physical storage device; compiling the first storage definition to generate a first customized storage implementation module; and loading the first customized storage implementation module into the IO engine, wherein the first customized storage implementation module causes data to be stored in the at least one physical storage device differently than prior to loading the first customized storage implementation module in the IO engine.