Friday, March 8, 2019

Tutorial 04 – Distributed systems

PROGRAMMING APPLICATIONS AND FRAMEWORKS                                              
Tutorial 04



1. Explain the term “distributed systems”, contrasting it from “distributed computing” 


Distributed system is a collection of independent computers that are connected with an interconnection network. Distributed systems allows multiple machine to perform multiple processes. Distributed system example include banking system , air reservation system and so on.



Distributed computing is a method of computer processing in which different parts of a computer program are run on two or more computers that are communicating with each other over a network.In distributed computing a large work load is distributed amongst different computers. When all computers finish their operations, the work done is combined together to obtain the result. Most of the large corporations like Facebook and Amazon work on the basis of distributed computing as they need to perform all kinds of different tasks every day regarding thousands of requests, chats, orders, refunds, replacements, posts and many so need to require lots of computers assigned different-different task. These companies take the advantage of distributed computing to work efficiently.






2. Compare and contrast the standalone systems with distributed systems, providing examples for advantageous use of both 



               Distributed System
          Standalone System
 Allows resource sharing, including software by systems connected to the network
 Commonly referred as desktop applications
 Need a network
 Do not need a network
 Multiple and loosely coupled set of technologies are used to develop (HTML +CSS + JS + PHP)
 Usually one or tightly coupled set of technologies are used to develop (JAVA, .NET)
 The components are distributed and executed in
multiple devices
 All the components are executed within a single device
 Easiest to understand is redundancy and resiliency. If a company is serving its website from a distributed set of servers, rather than a single server, it may be able to stay up even if one server physically fails. If data is distributed between multiple servers or disks, a common occurrence in modern distributed systems, there may not be any data loss even if a storage device ceases to work.
 Easiest to understand is redundancy and resiliency. If a company is serving its website from a distributed set of servers, rather than a single server, it may be able to stay up even if one server physically fails. If data is distributed between multiple servers or disks, a common occurrence in modern distributed systems, there may not be any data loss even if a storage device ceases to work.



3. Discuss the elements of distributed systems 


RESOURCE SHARING: It is the ability of the system to use any hardware, software or data anywhere in the system. The resource manager controls access, provides naming scheme and controls concurrency among the system tools. The resource sharing model depicts the correct resources provided and how they are used for interaction among each other
OPENNESS: It is concerned with extension and improvement of distributed system and how new components are integrated to existing ones.
CONCURRENCY: Components in distributed system are executed in concurrent processes. Moreover, the integrity of the system is violated if concurrent updates are not coordinated.
SCALABILITY: It is the adaption of distributed system to accommodate more users and respond faster. This is usually done by adding faster processors. In a distributed system, components are not required to be changed when scale of the system increased.
FAULT TOLERANCE: Fault tolerance in distributed system is achieved by recovery and redundancy processes and is quite competitive.
TRANSPARENCY: Distributed system should be perceived by users and application programmers as a whole rather than a collection of cooperative components. This is transparency of a distributed system.


4. Identify different types of services, which can be gained from distributed systems, specifying the protocols used for them 


  • Games and multimedia (RTP, SIP, H.26x)
  • File transferring and sharing (FTP)
  • Mail service (SMTP, POP3, IMAP)
  • Remote logging (telnet)
  • Web (HTTP)




5. Identify examples for both browser-based and non-browser-based clients of distributed systems 


                 Browser-based
         Non-browser-based
 Office Online
 OBS Recorder
 Web Applications
 Client-Server Applications
 Google Docs
 Photoshop
 Netflix
 Calculator App
 Dropbox
VLC player



6. Discuss the characteristics of different types of Web-based systems, including the RiWAs 
  • Product related characteristics - integral part of web application. It consists of: Present, Hypertext, and Content. Presentation plays an important role in product marketing and survival. Hypertext is the base of web application. Content is the informational part.
  • Use related characteristics - can divide the user related characteristics of web application as: Natural content, Social content and Technical content. Natural Content includes the geographical location from where the web applications are accessed and availability of the web application. Social Content is related to user specific aspect. Technical Content is related to network of web application and the devices where web application are used.
  • Development related characteristics - It includes Development team, Development process, Technical infrastructure and Integration. Development team must be highly knowledgeable in their field. There must be proficient designers, database developers, IT experts, hypertext experts, application developers. The development process must be flexible. There must be parallel processes of development. The web application must have support for integration with already existing system or with external content and services.
  • Evolution related characteristics - As per the changes in requirements there occurs some changes or upgradations in the web application. This evolution may concern all the other three characteristics viz. Product, Use and Development. Market competition or short time development may cause the changes.


7. Explain different architectures for distributed systems, explaining special features of each 

  • 2-tier Architecture - The basic architecture of the distributed systems.Usually the client sends arequest asking the server for some service and the server responses with the resources. There can be multiple clients, accessing the same server. These clients may use different types of devices. There is no intermediate between client and server. Because of tight coupling a 2 tiered applications will run faster. 

  • 3-tier Architecture – There are three layers.Those are Client layer , Business layer and Data layer. Each tier can scale horizontally. used, when there is a need for data persistence and also to separate the application logic from the data. This can be seen as an extension of 2-tier architecture. Presentation tier can cache requests, network utilization is minimized, and the load is reduced on the Application and Data tiers.

  • n-tier Architecture - also called multi-tier architecture because the software is engineered to have the processing, data management, and presentation functions physically and logically separated. When there is a need for further separation and distribution of the components, more tiers can be added and extend the 2-tier or 3-tier architecture into an n-tier architecture.



8. Compare and contrast the micro-service architecture from monolithic architecture 


It is not strictly true that monolith apps are always simple, but microservices are often 10 times larger and almost always requires more resources.
Monolith apps allow you to set your deployment once and then simply adjust it based on ongoing changes. Microservices require much more work; you will need to deploy each microservice independently, worry about orchestration tools, and try to unify the format of your ci/cd pipelines to reduce the a amount of time required for doing it for each new microservice.

If you plan to use a microservices architecture, get a DevOps for your team and prepare yourself. For scalability, microservices are again better suited. Monolith apps are hard to scale because, even if you run more workers, every worker will be on the single, whole project, an inefficient way of using resources. Cost is tricky to calculate because monolith architecture is cheaper in some scenarios, but not in others.

Microservices that are smaller and with a proper architecture of microservices communication allow you to release new features faster by reducing QA time, build time, and tests execution time. Monolith apps have a lot of internal dependencies that could not be broken up. There is also a higher risk that something you are committed to could depend on unfinished changes from your team members, which could potentially postpone releases



9. Explain the MVC style, indicating the limitations of it in the context of web-based systems 


MVC (Model View Controller) as it is popularly called, is a software design pattern for developing web applications. A Model View Controller pattern is made up of the following three parts −
  • Model − The lowest level of the pattern which is responsible for maintaining data.
  • View − This is responsible for displaying all or a portion of the data to the user.
  • Controller − Software Code that controls the interactions between the Model and View.

10. Identify different approaches of use of MVC for web-based systems and discuss their strengths and weaknesses 
  • Faster development process - MVC supports rapid and parallel development. If an MVC model is used to develop any particular web application then it is possible that one programmer can work on the view while the another can work on the controller to create business logic of the web application.
  • Ability to provide multiple views - In the MVC Model, you can create multiple views for a model. Today, there is an increasing demand for new ways to access your application and for that MVC development is certainly a great solution.
  • Support for asynchronous technique - The MVC architecture can also integrate with the JavaScript Framework. This means that MVC applications can be made to work even with PDF files, site-specific browsers, and also with desktop widgets.
  • SEO friendly Development platform - MVC platform supports development of SEO friendly web pages or web applications. Using this platform, it is very easy to develop SEO-friendly URLs to generate more visits from a specific application. This development architecture is commonly used in the Test Driven Development applications.
  • The main disadvantage of MVC Architecture is it can’t be suitable for small applications which has adverse effect in the application’s performance and design.



11. Discuss the need for very specific type of communication technologies/techniques for the distributed/web-based systems 
  • Functional oriented communication
  • Message Oriented communication
  • Resource oriented communication

12. Compare and contrast RPC with RMI 

COMPARISON
RPC
RMI
Supports
Procedural programming
Object-oriented programming
Parameters
Ordinary data structures are passed to remote procedures.
Objects are passed to remote methods.
Efficiency
Lower than RMI
More than RPC and supported by modern programming approach (i.e. Object-oriented paradigms)
Overheads
More comparatively
Less comparatively


13. Explain the need for CORBA, indicating it’s use in web-based systems 


The Common Object Request Broker Architecture (CORBA) is a specification developed by the Object Management Group (OMG). CORBA describes a messaging mechanism by which objects distributed over a network can communicate with each other irrespective of the platform and language used to develop those objects.

14. Discuss the XML specification, highlighting the important sections such as element naming conventions 


  • Designed to store and transport data
  • Both human- and machine-readable (self-descriptive)
  • Often used for distributing data over networks
  • Used by many other tools like protocols



15. Compare and contrast XML and JSON, indicating the pros and cons of both 
  • Both JSON and XML are "self-describing" (human readable)
  • Both JSON and XML are hierarchical (values within values)
  • Both JSON and XML can be parsed and used by lots of programming languages
  • Both JS JSON doesn't use end tag
  • JSON is shorter
  • JSON is quicker to read and write
  • JSON can use arrays
  • ON and XML can be fetched with an XMLHttpRequest


The biggest difference: XML has to be parsed with an XML parser. JSON can be parsed by a standard JavaScript function.

16. Identify other data formatting/structuring techniques available for the communication of web-based systems 

  • Attributes definition
  • Architecture Design
  • Scenario Analysis




No comments:

Post a Comment

Tutorial 10 – Client-side development 2 - RiWAs

PROGRAMMING APPLICATIONS AND FRAMEWORKS                                                  Tutorial 10 Distinguish the term “Rich Internet...