A system, comprising: a baseboard management controller, BMC, comprising: a processor and memory comprising a non-volatile memory and a volatile memory, the non-volatile memory comprising firmware of the BMC, the firmware being partitioned into a plurality of independently updatable service modules and the non-volatile memory being separated into a plurality of independently updateable read-write, RW, partitions (122-1, 122-2, 122-3, 122-N), wherein each of the independently updateable RW partitions comprise a service module of the plurality of independently updateable service modules, wherein each independently updatable service module comprises at least one of an application, a library, and a driver, the memory further comprising executable code that, when executed at the processor, is configured to: perform a firmware update comprising: receive a BMC update package for updating an existing service module of the plurality of independently updateable service modules, the existing service module being stored in one of the plurality of independently updateable RW partitions, the BMC update package comprising an update service module; store the BMC update package in the volatile memory; replace the existing service module stored in the RW partition of the non-volatile memory with the update service module; and restart a service of the BMC associated with the update service module. a baseboard management controller, BMC, comprising: a processor and memory comprising a non-volatile memory and a volatile memory, the non-volatile memory comprising firmware of the BMC, the firmware being partitioned into a plurality of independently updatable service modules and the non-volatile memory being separated into a plurality of independently updateable read-write, RW, partitions (122-1, 122-2, 122-3, 122-N), wherein each of the independently updateable RW partitions comprise a service module of the plurality of independently updateable service modules, wherein each independently updatable service module comprises at least one of an application, a library, and a driver, the memory further comprising executable code that, when executed at the processor, is configured to: perform a firmware update comprising: receive a BMC update package for updating an existing service module of the plurality of independently updateable service modules, the existing service module being stored in one of the plurality of independently updateable RW partitions, the BMC update package comprising an update service module; store the BMC update package in the volatile memory; replace the existing service module stored in the RW partition of the non-volatile memory with the update service module; and restart a service of the BMC associated with the update service module. receive a BMC update package for updating an existing service module of the plurality of independently updateable service modules, the existing service module being stored in one of the plurality of independently updateable RW partitions, the BMC update package comprising an update service module; store the BMC update package in the volatile memory; replace the existing service module stored in the RW partition of the non-volatile memory with the update service module; and restart a service of the BMC associated with the update service module.