needed. Furthermore, in the microservice approach, each service works independently, that is, can function and fail (in the case of an error) without impacting the other services. There- fore, microservices allow faster recovery (often in hundreds of milliseconds) since only the failed services needs to be recovered, as opposed to the entire process. This is particularly useful in RAN applications to provide high availability (e.g. at the gNB-central unit [CU]) in the case of failures. A monolithic application puts all its A microservices architecture puts functionality into a single process each element of functionality into a separate service and scales by replicating the and scales by distributing these services monolith on multiple servers across servers, replicating as needed. Figure 6.2.3 Migrating to microservice-based architectures. 6.2 Virtualization While breaking the NG-RAN functionality into microservices and running in multiple container instances help with scalability, an orchestration layer to manage these containers is needed in order to realize their full potential. The term "orchestration" refers to the auto- mated configuration, coordination, and management of software. While the Docker plat- form provides an open standard for packaging and distributing containerized applications, it does not provide methods to scale, run, and monitor these applications. An alternative container platform is Kubernetes (K8S), which is a popular open source system for automat- ing deployment, scaling, and management of containerized applications. In particular, this provides an abstraction layer for a cluster of machines to work together and behave as a single virtual machine, which is vital for a large-scale deployment of a virtualized environ- ment. As mentioned above, neither 3GPP nor O-RAN have explicitly standardized NG-RAN virtualization at the time of writing this book. However, the orchestration and automation framework being discussed in O-RAN (see Figure 6.2.4) does define how the design, inven- tory, p