Abstract
Information Technology (IT) companies have adopted various technologies, including cloud computing, microservices, and service meshes, to deliver new and existing features to customers at lower costs, and with greater efficiency such as scaling up and out based on resources, removing the need for server upgrades management and using only the necessary resources (Rashid and Chaturvedi, 2019). Cloud computing facilitates a continuous deployment IT model that is highly efficient in terms of managing IT resources (Rashid and Chaturvedi, 2019). Resources can be dynamically scaled at runtime based on the required workload, resulting in better outcomes among many providers. Payment options vary but due to the dynamic nature of service delivery pay-as-you-go models that are easily accommodated.
The adoption of cloud services and microservices architecture has become increasingly popular in the IoT (Internet of things) industry (Liang, Hu, Zhou, Pan, Kevin and Wang, 2021). Systems designed according to principles of microservices architecture consist of small and modular units which provide loosely coupled services that communicate with each other (Li, Zhang, Jia, Zhong, Zhang, Shan, Shen and Babar, 2021). These microservices can be quickly started up and be restarted since they are highly granular. Service-oriented applications make development more manageable, maintainable, and reliable while making efficient use of computing resources (Li et al.,2021).
Service Meshes have emerged as a technology for controlling and managing communication between microservices, which are characterized by low latency, providing responsive and efficient communication for deployed services (Hahn, Davidson, and Bardas, 2020). A Service Mesh is comprised of the following components: a data plane (processing of network traffic flows), a control plane (configuring and managing data plane proxies), and other proxies that manage deployments. The benefits of using a service mesh include better service
4 | P a g e
communication, network scalability, flexibility, and security, especially during establishment of connections.
A tenant is a user of the provided cloud service. Multi-tenancy is a widely used concept in the cloud, where various service providers can share the same computational resources, storage, and service instances for multiple tenants (Jia, Yang, Grundy, Keung and Hao, 2021). Several cloud services offer multi-tenancy, which benefits users in terms of saving costs. Multi-tenancy allows resources and data to be deployed in the same cloud or service instance, with a controlled way of distinguishing between tenants using some unique identifier such as encrypted keys (Jia, Yang, Grundy, Keung and Hao, 2021). Multi-tenancy benefits most businesses by lowering costs while still enabling them to access their cloud applications and data (Jia, Yang, Grundy, Keung and Hao, 2021).
In our presented model, each microservice, along with its resources, is managed by an Actor that communicates with other Actors. Implementing microservice architectures using Actors allows them to execute transactions and perform scaling independently. Using Actors in the cloud enables businesses to benefit from lower costs and no need for investment in on-premises servers. However, there are still security considerations in cloud multi-tenancy environment due to resource sharing (Doshi and Kute, 2020). Combining Actors and Kubernetes allows us to realise some of the advantages and offset some of the disadvantages to microservices and containerization.
Advantages of a hybrid containerization / actor-oriented approach (Mondal, Pan, Kabir, Tian and Dai, 2022):
•
Fault Tolerance and Resilience: Kubernetes offers a mechanism that restarts failed containers and attempts to run them again. Actor systems allow individual to fail without affecting the whole system.
5 | P a g e
•
Decoupling Microservices: Kubernetes offers load balancing and service discovery which allows Actors to interact with each other seamlessly. Actors promote the development of loosely coupled systems as each Actor is independent and may be distributed across the Actor system. Actors interact by only exchanging messages. Thereby reducing concurrency control related issues such as the sharing of mutually exclusive resources
•
Scalability and Load Balancing: Kubernetes offers the capabilities of automated scaling to dynamically manage the load and demand of the microservices. The Actor Model allows for the division of the workload amongst Actors in such a way as to leverage their ability to run independently and concurrently, therefore allowing the system to be more scalable.
•
Deployment and Management: Kubernetes encourages automatic management and deployment which makes it easier to manage and deploy microservices. The Actor Model, due to its abstraction of state management and concurrency, encourages more focus on business logic rather than infrastructure.
•
Resource Management: Kubernetes manage the resources such as CPU (Central Processing Unit) and memory allocation at the container level. The lightweight nature of Actors makes them efficient in terms of resources utilization as they can be destroyed and created at low cost.
Disadvantages of a hybrid containerization / actor-oriented approach (Gely, Trentesaux, Pacaux-Lemoine, and Sénéchal, 2021):
•
State Persistence: preserving Actor’s in-memory state across containers between failures and restarts can be a challenge.
•
Monitoring and Debugging: Actors systems are inherently distributed and therefore monitoring and debugging is more complicated.
•
Service and Communication: In large scale distributed Actor systems, there is a need for a mechanism for dynamic and automated service discovery, as well as inter-container communication.
6 | P a g e
•
Container Management: the lightweight nature of Actors and microservices containers, encourages the deployment of large number of such containers. Such large deployments would introduce additional complexity in terms of networking and orchestration.
•
Resource Constraints: attention must be paid to efficient dynamic allocation of limited resources such as memory and CPU.
This work created an Actor-oriented Model for orchestrating containerized services using Kubernetes.