ITC561 Cloud Computing
ITC561 - Cloud Computing
Introduction
The assignment is based on the production and video development company. The company has three modules that are working together in order to achieve the same goal. The company desire to deploy the infrastructure on the cloud to improve the availability and performance of the application services. The report will cover the assessment of each module on the basis of stable and non-stable category. This will show the importance and use of microservices in order to handle the workload peaks. The report will show how the implementation of microservice architecture on the video processing application of VideoDev can improve the ability of the company to achieve high availability. To support the discussion the report includes a diagram that shows the application structure of the application after implementing the microservice architecture.
Question 1
Describe the 3 categories of modules with the reasoning to support the decisions.
The VideoDev video processing application is divided into 3 categories which are customer module, preparation module, and post-production module.
Customer module: This module of the application consists of the requirements of the customer, planning of video and administration of accounts. From these sub-modules, the account administration can be considered as the relatively stable modules because the administration process and method doesn’t require frequent modification or alteration. On the other hand, customer requirement is the most fluctuated module of the application as the customer requirement can be changed any time. The video planning module can also befall under this category as it depends on the demand of the customer. If the demand of the customer is stable then the planning will also be stable, and if the customer requirement is continuously fluctuating then the planning will also be affected by this. The workload peak is experienced by both the account administration and video planning module.
Video preparation module: This module of the application includes storyboarding and scripting & approved engine and location search. In this module, storyboarding and scripting is the submodule that may face the fluctuation. This happens because of the changes in the customer’s requirement. On the other hand approval engine and location search is quite a stable module. Because once the location is fixed there are minimum chances to change the approval engine and location search. Storyboarding and scripting are likely to face the workload peaks as this module requires a lot of focus and changes.
Post-production module: This module includes graphics and editing, post-production sound and music, special effects and finalization. From all of these modules, the post-production sound and music & finalization are relatively stable modules. These are stable as after the video processing it can be easily determined that what sound or music will suit in the video. And of Assignment, the finalization module includes almost similar steps for each video. The most fluctuating modules are editing and special effects as continuous changes are required to determine the most suitable appearance of the video. The modules which will face workload peaks are post-production music and sound, special effects, editing, and graphics.
Question 2
Discuss how microservices can resolve the issue with the workload peaks.
This sort of architecture is a specific way to create autonomous services suites for software-based, internet or mobile applications. To serve only one particular company function, these services are developed. They are autonomous, meaning that they can be written in distinct programming languages and use distinct storage information. There is almost no centralized management, and lightweight APIs such as REST, HTTP and Thrift is used for the communication between the independent services. The implementation of the microservice architecture in the VideoDev video processing application will be helpful to handle the workload in peak. This allows using various innovative technologies in order to maintain functionality in the video processing application. This offers better resilience to the different modules in the application such as editing, graphics, sounds, storytelling, etc. This also offers better scalability with the help of distinct service deployment in the video processing application. Different modules of the video processing application like video planning, account administration, location search, editing, and graphics, etc. can be deployed in a separate environment to achieve scalability. This will resolve the issue during peaks.
Phased approach
The phased approach can be helpful to manage the workload peak. The implementation of the microservices can be implemented on the customer requirements module. The customer requirement is the first and basic module in the video processing application. To implement microservices on the customer requirement module use HTTP API to store the data on the cloud as an independent service. This allows to easily managing the changes or fluctuations in the requirements of the customer. Before the implementation of the microservices, it is necessary to understand the scope and the functionalities of the module. The micro-service only focuses on the service. The communication between the customer requirement and other modules can be done through the stateless server (Benetis, 2016). Now, this module can be refactored into further small modules that may have their own microservices.
The major change in the micro-service architecture is to introduce the APIs to connect all the modules of the application. , with the help of API gateway, all the parts of the applications are connected internally. The implementation of the microservices is helpful to handle the workload the peak time. As the module is divided into smaller independent chunks, these can easily be handled autonomously. This allows the team to use different techniques and technologies to the management of customer requirements. This also ensures the security at each module and sub-module. This can handle the peak workload as different services can be deployed and developed in parallel (Kappagantula, 2019). All the different modules of the application such as scripting, video planning, editing, and graphics can internally communicate with the customer requirements. All these services work independently this allows to easily handle the services at the peak time. Implementation of the microservice approach in the video processing application will also enhance the ROI (return of investment) and offers improved better TCO (Total cost of ownership). The commitment of microservices is that through breaking it down into their component facilities and what each effectively achieves, you can split and overcome the issue of a big implementation. An autonomous squad can endorse all the others.
The best thing about the implementation of the microservice approach in the video processing application is that it doesn’t require scaling everything to scale module in the video processing application. For example, if scaling is required in the graphics and editing module then it can be done easily without affecting other modules. For example, there are some services in the video processing application that does not require scaling such as sounds and effects. These modules can be operating finely as a single module. On the other hand, there are some services in the application that requires scaling such as storytelling, etc. In contrast to the monolithic applications where devoted teams perform separate tasks such as video planning, account administration, location search, editing, and special effects, the multi-functional team used in the microservice environment for the management of video processing application’s complete life cycle with the help of a continuous delivery model (Indrasiri, 2016).
Role of cloud computing
This whole microservice-based architecture can be deployed on the cloud. This will highly improve the efficiency of the application. The cloud solution will offer the load balancing feature for the modules of the application. Backups of the application module can be easily created on the cloud. This is an effective approach to ensure high availability of services in case of any natural disaster or other machine failure situation. Implementation of the modules on the cloud computing platform as a form of microservices, allow the team to easily manage the work from anywhere and anytime. This will improve the service quality and work can be easily managed at the time of peak.
Question 3
Discuss how microservices will improve high availability
Microservice
In the microservice architecture, services are independently scalable and deployable. This allows the modules of the applications to be written in various programming languages. This feature allows different teams to manage different modules in VideoDev. Independent and smaller modules are created in the microservice architecture. These individual services interact with each other with the help of easy, widely accessible APIs that are responsible for extremely discrete and specified functions (Malik, 2018). Autonomous modules or components should be properly recognized while developing applications throughout the architecture of microservices. Mini apps would be these elements, which will be created independently. They are following their lifecycle of growth and implementation. The development of the video processing application using the microservice environment allows to independently deploying the different small module of the application like video planning, location search, storytelling, post-production activities, etc.
Microservice role in High availability
To maintain high availability, this architecture offers fault isolation. That means if one module gets fails the other will start the work. This help to Increase autonomy within the organization of entity development teams. Because it allows deploying and implementing the ideas without coordination with IT delivery functions. This ensures the high availability of services as the security issue can only affect the one module and does not affect the remaining areas of the application (Jamshidi, Phal & Mendonça, 2016). This also complements the activities based on the cloud solution. Microservice architecture offers automatic deployment and simple integration with the help of open-source tools like Jenkins. Independence nature of the modules in the microservice architecture can allow the easy deployment and redeployment and does not affect the integrity of the application. The microservice environment has an API portal or the front panel that aggregates information from and returns information from these modules of the video processing application. The software is split into autonomous facilities with microservices running as distinct procedures. In an orchestration of autonomous, communicating facilities, performance from one system will be used as feedback to another.
Full implementation of the video processing application is fragmented with microservices and separated into facilities that operate as distinct services (Richardson, 2015). In contrast to the monolithic structure in which a software error impacts more than one service or feature or module of the video processing application, microservices have limited impact from a failure. Even if several devices are back for servicing, it will not be noticed by the customers of VideoDev Ltd. The main element of microservices is scalability. As each system is a distinct element or module, without needing to scale the complete request, this enables to scale up a single feature or service. For enhanced accessibility and efficiency, the modules of the video processing application may be implemented on different servers without affecting the efficiency of other facilities or modules.
The architecture pattern of microservices has a number of significant advantages. In the form of an RPC or message-driven API, each service has a well-defined limit. It breaks down into a collection of services what would otherwise be a horrible monolithic app. It addresses the complexity issue (Atchison, 2018). Its architecture allows a team focused on that service to develop each service separately. It enables the developer to select technologies capable of meaning. It eliminates the requirement to use outdated techniques that are used at application gazing. Microservices Architecture model allows the independent deployment of each microservice. It does not need shift implementation coordination. The climate has made it simple to deploy and simple to test, ensuring high availability. The model of Micro Services Architecture makes it likely to deploy continuously. Microservices Architecture model enables for independent scaling of every service. This allows the use of various modules cases to meet the limitations of accessibility and ability. This enables the functionality of software to be isolated into various autonomous modules which are separately accountable for performing stand-alone and precise functions. In place of code for creating a monolithic architecture, making personal micro facilities is simple. This makes it possible for designers to be efficient while maintaining and debugging of the software. High availability is helped by this function. In the micro-service environment, scaling choices can be created at a granular stage. This enables effective system optimization and organization and guarantees the availability of service. Data are federated within micro-services architecture. This makes it possible for personal microservice to embrace a data model that best suits their requirements. Micro facilities assist to construct an implementation as a tiny service suite, every operating in its own method and being deployable separately. It can use various storage methods for information. Micro facilities are often connected via APIs and can influence most of the same instruments and alternatives that have been developed in the environment of Restful and Internet service. API screening can assist in justify information and data flow across the implementation of your microsystem. All this can be installed feasibly without influencing other components. These are easily understandable as there are less dependence and isolation in the functions (Arsov, 2017). This makes it possible to refactor or modify the whole service safely since there will be no effect on other facilities. Every microservice may be implemented separately to prevent other facilities from being affected by introducing fresh characteristics or updating any current software/hardware platform. With the implementation of the microservices, each module of the video processing application does not require similar availability. There are several things regarding microservices which are nice and exciting. They only interact through the system as distinct facilities. This enables to use of various stacks of the technology for the support of each module in the application. Also, microservices make debugging and testing of the modules of video processing application simple. With both continuous integration and testing method of larger modules, the capacity to produce an error-free result is greatly enhanced.
Question 4
Draw a diagram of the new micro-service based application architecture
Every app's functional region is now introduced via its own microsystem. In addition, the internet application is divided into a collection of easier internet apps. Each backend provider reveals a REST API but most facilities use other facilities ' APIs. To make internet websites, the UI providers evoke the other facilities. Services also can use communication depending on asynchronous messages. Later throughout this sequence, underserviced interaction will be dealt with in more detail. The API Gateway is accountable for functions like API metering caching, load balancing, access control, and tracking, and can be efficiently deployed that used NGINX. The model of Micro Services Architecture considerably affects the application-database connection (BALAKRISHNAN, 2019). Every service does have its own database scheme instead of sharing a separate database scheme with other facilities.
The above diagram shows the implementation of video processing application that is based on microservice architecture. This shows that the Modules of the applications communicate with each other with the help of REST APIs. After the implementation of service on the cloud, the services are easily accessible from various interfaces with the help of different protocols such as HTTP. Load balancing feature helps to balance the load at peak time. This shows that each module of the application can be managed by different teams. To ensure security, this infrastructure has firewall implementation. Backup database of the module data helps to ensure the high availability.
Conclusion
Microservices are a utility-oriented architecture model in which apps are constructed as a set of different lowest autonomous components of service. Micro facilities are relying on one another communicating with one another. This helps to highlight a particular function and company requirements. In these services are independently scalable and deployable. This allows the modules of the applications to be written in various programming languages. This feature allows different teams to manage different modules. The implementation of the microservice architecture on the video processing application can be helpful for the company to achieve the high availability of the services. This can be helpful to reduce the total operational cost of the company.
References
Arsov, K. (2017). What Are Microservices, Actually? - DZone Microservices. Retrieved 7 August 2019, from https://dzone.com/articles/what-are-microservices-actually
Atchison, L. (2018). Microservices: What They Are and How They Work. Retrieved 7 August 2019, from https://blog.newrelic.com/technology/microservices-what-they-are-why-to-use-them/
BALAKRISHNAN, R. (2019). Designing a microservices-based enterprise application | Ness Digital Engineering. Retrieved 7 August 2019, from https://www.ness.com/microservices-architecture-and-design-principles-2/
Benetis, R. (2016). A 6-point plan for implementing a scalable, microservices architecture. Retrieved 7 August 2019, from https://www.devbridge.com/articles/a-6-point-plan-for-implementing-a-scalable-microservices-architecture/
Indrasiri, K. (2016). Microservices in Practice: From Architecture to Deployment - DZone Microservices. Retrieved 7 August 2019, from https://dzone.com/articles/microservices-in-practice-1
Jamshidi, P., Phal, C., & Mendonça, N. (2016). Pattern-based Multi-Cloud Architecture Migration.Wiley Interscience,14(8), 1-25. doi: DOI: 10.1002/spe.2442
Kappagantula, S. (2019). Microservices Tutorial for Beginners | Microservices Example | Edureka. Retrieved 7 August 2019, from https://www.edureka.co/blog/microservices-tutorial-with-example
Malik, P. (2018). Microservices — Future Applications. Retrieved 7 August 2019, from https://dzone.com/articles/technology-and-innovation-microservices-the-future
Novoseltseva, E. (2017). Benefits of Microservices Architecture Implementation - DZone Microservices. Retrieved 7 August 2019, from https://dzone.com/articles/benefits-amp-examples-of-microservices-architectur
Richardson, C. (2015). Introduction to Microservices | NGINX. Retrieved 7 August 2019, from https://www.nginx.com/blog/introduction-to-microservices/