An Internet Protocol Multimedia Subsystem system, comprising: networked computing resources; a service code repository for storing code for implementing at least one network service, wherein said at least one network service comprises a state repository service which offers storage of a global state corresponding to a network function; a function code repository for storing code for implementing the network function, said network function being configured to use the state repository service to ensure global state sharing among instances of the same network function within the system; a plurality of programmable logical entities that run on the networked computing resources, each of said entities being either in an un-instantiated state, or in an instantiated state after code from the function code repository or service code repository has been deployed on it; a controller for maintaining a consistent view of the status of the instantiated logical entities and for determining a state of overall availability of the networked computing resources, said controller being further configured to deploy code from the function code repository and/or the service code repository on an un-instantiated programmable logical entity or to terminate and release an instantiated programmable logical entity; wherein the system further comprises: a monitoring unit having a monitoring service to enable benchmarking the instantiated programmable logical entities; an elasticity unit having an elasticity service to use the controller to modify a number of instantiated logical entities pertaining to the network function and/or network service based on input from the monitoring unit regarding that network function and/or network service. networked computing resources; a service code repository for storing code for implementing at least one network service, wherein said at least one network service comprises a state repository service which offers storage of a global state corresponding to a network function; a function code repository for storing code for implementing the network function, said network function being configured to use the state repository service to ensure global state sharing among instances of the same network function within the system; a plurality of programmable logical entities that run on the networked computing resources, each of said entities being either in an un-instantiated state, or in an instantiated state after code from the function code repository or service code repository has been deployed on it; a controller for maintaining a consistent view of the status of the instantiated logical entities and for determining a state of overall availability of the networked computing resources, said controller being further configured to deploy code from the function code repository and/or the service code repository on an un-instantiated programmable logical entity or to terminate and release an instantiated programmable logical entity; wherein the system further comprises: a monitoring unit having a monitoring service to enable benchmarking the instantiated programmable logical entities; an elasticity unit having an elasticity service to use the controller to modify a number of instantiated logical entities pertaining to the network function and/or network service based on input from the monitoring unit regarding that network function and/or network service. a monitoring unit having a monitoring service to enable benchmarking the instantiated programmable logical entities; an elasticity unit having an elasticity service to use the controller to modify a number of instantiated logical entities pertaining to the network function and/or network service based on input from the monitoring unit regarding that network function and/or network service.