CIS110-Distributed and Parallel Computing Technologies
Question 2 Parallel programming
Modern programming languages provide features like multi-threading, distributed computing, message passing, shared resources, parallel process, parallel computing, etc are incorporated in the modern programming languages. This helps to increase the computing speed and complete the task quickly. Programming languages like Java, C# , C++ are the commonly used language which support concurrent programming. They use the concept of shared-memory to run the program concurrently. The available resources of the system are used efficiently by this kind of programming language and the performance of the system is also rapidly increased to met the needs of the user in this technology world.
- The reason for unresponsive interface in the website may be due to the access of the website by many people at a same period of time. The capacity of the server should be tested and increased based on the usage of the website. Some time the browser may not support some features that are used in our website and the website will be inactive.
There may be some problem in the code created using the C++ like an exterminated loop which will cause the system to be inactive. If the website attract intruders some of them may try to hack the system by using denial of service attack by sending a large number of packet at a same time and make the server busy and the data fetched cannot be reached to the client and the system will be unresponsive.
The routing algorithm used may not be suited at the peak hours which may cause traffic and make the system unresponsive. To avoid this kind of unresponsive website a proper firewall should be used and monitored for attack and prevent the attack before it happen. Can improve the capacity of the server by increasing the number of servers or store the data in different servers at different location and the request for the website by multiple users at a particular time can be diverted to the different server and reduce the workload of the single server.
If data send is of high speed and the receiving capacity of the receiver is low the system may not respond. So before transmitting the data the capacity of the receiver should be analyzed and packets should be send based on the capacity of the receiver.
Writing a program that will avoid the errors and increase the performance of the system is a difficult task.
But we can include code to monitor the traffic in the network and intimate the server about the traffic and store the data in multiple servers and route the request from multiple users at the peak period based on their location there are routed to the nearest server to access the necessary data. So that the traffic in the network can be reduced and the performance of the system will also be increased.
Since the travelling time of the packet is reduced by sending it from the nearest server. Some technique like avoiding incoming user input using the UI thread and allow it to perform the lengthy task with the help of the worker thread which may prevent the system from ANR (Application Not Responding) due the sharing of the interface by the event.
Question 3 (Cloud Computing)
A content management system using WordPress has been set up on an Amazon Elastic Kubernetes Service (EKS) instance. After a few weeks, you realise that the system is starting to reach its limits and need to be scaled up for as soon as possible. To carry out the upgrade, the content management system has to be shut down for a period of time. This is NOT a good practise for businesses. To avoid the situation in future migration and updates.
- a) Can you propose a cloud native solution which avoids the shutdown completely?
Microservices can be used as acloud native solution., microservices providesself deployable functional system. It Utilizes cloud computing to build
and run scalable applications, and it packaged as lightweight containers, loosely coupled design, it is exposed as API and Managed by DevOps Processes.Functional system decomposition into manageable and independently deployable components.
The term “micro” refers to the sizing: a microservice must be manageable by a single development team (5-9 developers).Functional system decomposition means vertical slicing (in contrast to horizontal slicing through layers).Independent deployability implies no shared state and inter-process communication .
Microservices enables separation and independent evolution oftechnology stacks,scalingand features, and code base .Every services has its own code base, technology , scaling features and other features.Each microservice is functionally complete with managing data and the resource representation
b)Elaborate your cloud native solution and its corresponding architecture and operations in details.
Microservices is the cloud native solution .Hyper text transfer protocol is used to synchronize the communication between different micro services. REST API is used with the HTTP transport layer. By using this REST protocol or technology some of the process will be implemented in stateless communication, and it is deployed with uniform interfaces and applied with standard methods. REST APIs are deployed is applied with new versions.
This technology is applied in traffic management process, access control mechanism and best monitoring services and in API management services .
Each service has its own software repository Codebase is maintainable for developers – it fits into their brain Tools work fast – building, testing, refactoring code takes seconds
Service start up only takes seconds .No accidental cross-dependencies between code bases. Each service is implemented on its own technology stacks.The technology stack can be selected to fit the task best. Teams can also experiment with new technologies within a single micro service.
No system-wide standardized technology stack also means No struggle to get your technology introduced to the canon, No piggy-pack dependencies to unnecessary technologies or libraries, It‘s only your own dependency hell you need to struggle with Selected technology stacks are often very lightweight. A microservice is often just a single process that is started via command line, and not code and configuration that is deployed to a container.
Micro service architecture diagram is composed of several services which are connected with the help of Application Programming Interfaces. These services are being accessed among client and the remote servers. This architecture reduces the dependencies and it is very easy to rebuild it. The module update is easy because the approach requires small teamwork.
While picking up the technologies are very easy and it can be selected from different types because the stack contains variety of technologies in the same stack as well.