1. A method for providing one or more software applications at a host computer server, the host computer server having, at least, a host memory for storing a host operating system and a host processor configured for operating the host operating system, the method comprising: receiving a software application request from a user device, the software application request comprising an application identifier associated with a requested software application, the requested software application being a software application to be executed at the host computer server, the user device comprising a device processor and a device memory; providing a resource library for the host computer server, the resource library defining one or more resources required for providing each software application of the one or more software applications; identifying, from the resource library, a set of resources required for providing the requested software application based on the application identifier, the set of resources comprising at least one application resource and at least one host resource, wherein: the at least one application resource comprises one or more resources required for an application operating system to support the requested software application and is absent from the host operating system; the at least one host resource comprises one or more resources required for the application operating system to support the requested software application and is provided by the host operating system, and the application operating system is an operating system operable for providing the requested software application and the application operating system is different from the host operating system; and providing the requested software application with the identified set of resources for execution on the host operating system, wherein providing the requested software application comprises accessing the at least one application resource and operating the host processor to launch the set of resources as a containerized resource instance for providing the requested software application, the containerized resource instance being operationally isolated from other containerized resource instances, the other containerized resource instances including at least one other containerized resource instance for providing one or more other software applications that do not require the at least one application resource, and the at least one application resource is not launched in the at least one other containerized resource instance; and prior to operating the host processor to launch the set of resources as the containerized resource instance for providing the requested software application providing a session log for the host computer server, the session log recording one or more active containerized resource instances and, for each active containerized resource instance, one or more resources associated with that active containerized resource instance, the one or more active containerized resource instances being containerized resource instances currently provided by the host computer server; determining, from the session log, whether the one or more resources associated with at least one active containerized resource instance corresponds to the identified set of resources; and in response to determining the one or more resources associated with at least one active containerized resource instance corresponds to the identified set of resources, providing the requested software application with one of the at least one active containerized resource instance, otherwise, operating the host processor to launch the set of resources for providing the requested software application as a new containerized resource instance.