Showing posts with label Software Architecture. Show all posts

How is distributed Computing realized in grid computing and Cloud computing?

A distributed computing consists of multiple software components that are on multiple computers, but run as a single system. The computers that are in a distributed system can be physically close together and connected by a local network, or they can be geographically distant and connected by a wide area network. A distributed system can consist of any number of possible configurations, such as mainframes, personal computers, workstations, minicomputers, and so on. The goal of distributed computing is to make such a network work as a single computer. 

Distributed computing, as one can imagine, is where the computing elements of a network are spread over a large geographical area. Both cloud and grid computing are prime examples of distributed computing architectures. 

Another type of of normal computers. distributed computing computing is known as grid computing. Grid consists of many computers operating together remotely and often simply using the idle processor power Grid provides the sharing of:
  • Computational resources 
  • Storage elements 
  • Specific applications 
  • Equipment
  • Other

While there are many similarities between grid and cloud computing, it is the differences that matters the most. Grid computing is better suited for organizations with large amounts of data being requested by a small number of users (or few but large allocation requests), whereas cloud computing is better suited to environments where there are a large number of users requesting small amounts of data (or many but small allocation requests). 

Cloud computing is basically a sales and distribution model for various types of resources over the Internet, while distributed computing can be identified as a type of computing, which uses a group of machines to work as a single unit to solve a large scale problem. Distributed computing achieves this by breaking the problem up to simpler tasks, and assigning these tasks to individual nodes. 

Compared to other distributed systems such as grids or clusters, cloud computing solutions give enterprises significantly more flexibility. They can dispense with IT infrastructures of their own and only have to pay for the resources and services they actually use (“pay-per-use”/ “pay as you go”). These can be dynamically adapted to changed business requirements and processes with the help of virtualization technologies and service oriented, distributed software systems.
Learn more »

What are the goals of Cloud Computing?

Reduced Spending on Technology Infrastructure: Moving to cloud computing may reduce the cost of managing and maintaining your IT systems. Rather than purchasing expensive systems and equipment for your business, you can reduce your costs by using the resources of your cloud computing service provider. You may be able to reduce your operating costs because
  • the cost of system upgrades, new hardware and software may be included in your contract
  • you no longer need to pay wages for expert staff 
  • your energy consumption costs may be reduced 
  • There are fewer time delays.
Globalizing Workspace/ Easy Accessibility: Globalizing your workspace or system may add additional agility and effectiveness to your system. For example, you have the ability to access data from home, on holiday, or via the commute to and from work (providing you have an Internet connection). If you need access to your data while you are off-site, you can connect to your virtual office, quickly and easily.
Improve Flexibility and Scalability: Your business can scale up or scale down your operation and storage needs quickly to suit your situation, allowing flexibility as your needs change. Rather than purchasing and installing expensive upgrades yourself, your cloud computer service provider can handle this for you. Using the cloud frees up your time so you can get on with running your business.
Better Resource Utilization: Using technologies such as virtualization and distributed computing, computing resources can be used fully up to their potentials. In cloud model, you can pay whatever you use for your operational purpose.
Backup and Disaster Recovery: Since all your data is stored in the cloud, backing it up and restoring the same is relatively much easier than storing the same on a physical device. Furthermore, most cloud service providers are usually competent enough to handle recovery of information. Hence, this makes the entire process of backup and recovery much simpler than other traditional methods of data storage.

Also adding to backup management, cloud infrastructure can be used as a very strong disaster recovery site as they do have enough infrastructure and technology to be a potent DR Site.
Guaranteed Uptime and Strong Service Level Agreements (SLA): Cloud infrastructure by nature is built for robustness and high availability. Uptime is a major attribute for rapid popularity of cloud computing as all the services provided by cloud vendors should be guaranteed to be working all the time. Hence, the service level agreements between the cloud provider and customer are supposed to be very strong in case of availability and security. By achieving strong SLA’s, customer can operate very effectively with zero downtime.
Learn more »

Explain Cloud Computing Deployment Model.

Cloud Deployment Models
Figure: Cloud Deployment Models

Public Cloud: 

This is the deployment model that most commonly described as cloud computing. In this model, all of the physical resources are owned and operated by a third party cloud computing provider. The provider services multiple clients that may consist of individuals or corporations utilizing these resources through the public Internet. Services can be dynamically provisioned and are billed based on usage alone. This model provides the highest degree of cost savings while requiring the least amount of overhead. This model is best suited for business requirements wherein it is required to manage load spikes, host SaaS applications, utilize interim infrastructure for developing and testing applications, and manage applications which are consumed by many users that would otherwise require large investment in infrastructure from businesses.


Private Cloud: 

Private cloud computing systems emulate public cloud service offerings within an organization’s boundaries to make services accessible for one designated organization. Private cloud computing systems make use of virtualization solutions and focus on consolidating distributed IT services often within data centers belonging to the company. The chief advantage of these systems is that the enterprise retains full control over corporate data, security guidelines, and system performance. This model doesn’t bring much in terms of cost efficiency: it is comparable to buying, building and managing your own infrastructure. Still, it brings in tremendous value from a security point of view. In addition to security reasons, this model is adopted by organizations in cases where data or applications are required to conform to various regulatory standards, which may require data to be managed for privacy and audits that govern the corporation.

Hybrid Cloud: 

This can be a combination of private and public clouds that support the requirement to retain some data in an organization, and also the need to offer services in the cloud. A company may use internal resources in a private cloud maintain total control over its proprietary data. It can then use a public cloud storage provider for backing up less sensitive information. At the same time, it might share computing resources with other organizations that have similar needs. By combining the advantages of the other models, the hybrid model offers organizations the most flexibility. This model is also used for handling cloud bursting, which refers to a scenario where the existing private cloud infrastructure is not able to handle load spikes and requires a fallback option to support the load. Hence, the cloud migrates workloads between public and private hosting without any inconvenience to the users.

Community Cloud:

 In the community deployment model, the cloud infrastructure is shared by several organizations with the same policy and compliance considerations. This helps to further reduce costs as compared to a private cloud, as it is shared by larger group. A community cloud contains features of the public and private cloud models. Like a public cloud, the community cloud may contain software, data storage, and computing resources that are utilized by multiple organizations. Where this model differs from the public model is that the infrastructure is only utilized by a group of organizations that are known to each other. Similarly to a private cloud, these organizations are responsible for the operation of their own infrastructure. The community cloud model can provide greater cost savings than the private cloud while offering some of its security features. This model is best suited for organizations that share common requirements such as security or legal compliance policies. It can be managed by the member organizations or by a third party provider.
Learn more »

What are the components of cloud computing?

Components of Cloud Computing


The Client- The End User: Everything ends with the client. The hardware components, the application and everything else developed for cloud computing will be used in the client. Client systems has some application installed which enables them to connect to cloud software or some infrastructure.

The Service (Functions in Cloud Computing): Cloud computing always has a purpose. One of the main reasons cloud computing become popular is due to the adoption of businesses as the easier way to implement business processes. It has some standard service or procedure of interfacing/ connecting client computers with cloud infrastructure. Cloud computing is all about processes and the services launched through cloud computing always has to deal with processes with an expected output.


The Application: Application is the core of what users are going to use. It is the mainstay of what users are wanting for their daily operations. Application are normally a program that users use to connect cloud infrastructure either with web interface or any application interface. In simple way, we can define application as a software that end user uses to do their operations in which their main data resides in cloud.

The Platform: The platform is where all the applications and services are based upon. The platform usually comes as the programming language such as Ajax (Asynchronous JavaScript and XML) or Ruby on Rails. In simple way, the platform is the cloud infrastructure where it provides application and service the base to operate. It is the environment provided by cloud vendors which enables all the application to operate and services to operate.

The Storage: The last and most critical components in cloud computing is the storage. Everything that the application knows and the functions that could be provided by service are possible through storage. Modern day cloud storage is based on highly virtualized infrastructure and has the same characteristics as cloud computing in terms of agility, scalability, elasticity and multi-tenancy. Some cloud storage systems are small operations, while others are so large that the physical equipment can fill up an entire warehouse.
Learn more »

What are the examples of cloud based services?

Some of the examples of cloud based services are:
  1. Hosted Desktops (virtual machines): The hosted virtual desktop is just like normal PC desktop, except that applications, data and user profile are stored in a secure data center. It is designed to replace traditional desktop PC environment, and provides the same level of functionality and performance as normal PC.
  2. Hosted Telephony: It is the way of taking all the telephone infrastructure from on premises to some cloud based telephony system.
  3. Hosted websites/Emails: Websites and emails are hosted in cloud based servers. Th main advantages of hosted websites and emails is the saving cost used for procuring new servers, managing servers, power system, experts, maximum uptime, scalability and security.
  4. Cloud Storage: It is a service model in which data is maintained, managed and backed up remotely and made available to users over a network.
Learn more »

What are the advantages of cloud based Service?

Some of the advantages of cloud based services are:

Proven Web-services integration. By their very nature, cloud computing technology is much easier and quicker to integrate with your other enterprise applications (both traditional software and cloud computing infrastructure-based), whether third-party or homegrown. 

World-class service delivery: Cloud computing infrastructures offer much greater scalability, complete disaster recovery, and impressive uptime numbers.

No hardware or software to install: a 100% cloud computing infrastructure. The beauty of cloud computing technology is its simplicity... and in the fact that it requires significantly fewer capital expenditures to get up and running.

Faster and lower-risk deployment: You can get up and running in a fraction of the time with a
cloud computing infrastructure. No more waiting months or years and spending millions of dollars
before anyone gets to log into your new solution. Your cloud computing technology applications
are live in a matter of weeks or months, even with extensive customization or integration.

Support for deep customizations: Some IT professionals mistakenly think that cloud computing
technology is difficult or impossible to customize extensively, and therefore is not a good choice
for complex enterprises. The cloud computing infrastructure not only allows deep customization
and application configuration, it preserves all those customizations even during upgrades. And
even better, cloud computing technology is ideal for application development to support your
organization’s evolving needs.

Empowered business users: Cloud computing technology allows on-the-fly, point-and-click customization and report generation for business users, so IT doesn’t spend half its time making minor changes and running reports.

Automatic upgrades that don’t impact IT resources: Cloud computing infrastructures put an end
to a huge IT dilemma: If we upgrade to the latest-and-greatest version of the application, we’ll be
forced to spend time and resources (that we don’t have) to rebuild our customizations and
integrations. Cloud computing technology doesn’t force you to decide between upgrading and
preserving all your hard work, because those customizations and integrations are automatically
preserved during an upgrade.
Learn more »

What is Cloud Computing? What are its features?

Cloud computing is the use of computing resources (hardware and software) that are delivered
as a service over a network (typically the Internet). The “cloud” in cloud computing can be
defined as the set of hardware, networks, storage, services, and interfaces that combine to
deliver aspects of computing as a service.

Cloud services include the delivery of software, infrastructure, and storage over the Internet. Most of the cloud computing has following features:
  1. It's virtual
  2. It can be secure
  3. It's flexible and scalable
  4. It can be affordable
  5. It can be secure and affordable
Learn more »

How can System Architecture be categoriesed in Software Architecture?

System requirements can be categorized as:
  1. Functional requirements:State what the system must do, how it must behave or react to run-time stimuli.  
  2. Quality attribute requirements:Annotate (qualify) functional requirement, e.g. how fast the function must be performed, how resilient it must be to erroneous input, how easy the function is to learn, etc. 
  3. Constraints:A design decision with zero degrees of freedom. A design decision that has already been made for you.  
Learn more »

Give different examples of different types of Views in Software Architecture.

Module Structure
  1. Decomposition Structure
  2. Uses Structure
  3. Layer Structure
  4. Class Structure
  5. Data Model
Component and Connector Structure
  1. Service Structure
  2. Concurrency Structure
Allocation Structure
  1. Deployment Structure
  2. Work Assignment Structure
  3. Implementation Structure
Learn more »

Which structures are architecture?

A structure is architectural if it supports reasoning about the system and the system’s properties. 

The reasoning should be about an attribute of the system that is important to some stakeholder:
– How easy is it to extend the system?
– How many simultaneous users can the system handle?
– What happens to the system in a power-breakdown?
– How easy is it to develop the system in various teams?
Learn more »

Compare and contrast Structure and Views in Software Architecture.

A view is a representation of a coherent set of architectural elements, as written by and read by system stakeholders.

A view consists of a representation of a set of elements and the relations among them.

A structure is the set of elements itself, as they exist in software or hardware. In short, a view is a representation of a structure.

Example: A module structure is the set of the actual system’s modules and their organization (as implemented). A module view is the representation of that structure, documented according to a template in a chosen notation. Architects design structures by documenting views of those structures.
Learn more »

Explain different Context For Software Architecture.

Software Architectures exist in four different contexts:
  • Technical - What technical role does the software architecture play in the system or systems of which it's a part? The technical context includes the achievement of quality attribute requirements, as well as current technology (cloud, mobile computing etc.). 
  • Project life cycle - How does a software architecture relate to the other phases of a software development life cycle?

  • Business - How does the presence of a software architecture affect an organization's business environment? The system created must satisfy the business goals of a wide variety of stakeholders, each of whom has different expectations for the system.

  • Professional - What is the role of a software architect in an organization or a development project? You must have certain skills and knowledge to be an architect, and there are certain duties that you must perform as an architect. These are influenced not only by coursework and reading, but also by your experiences.


Learn more »

Why is software Architecture Important?

Software Architecture is important because of following reasons:
  1. An architecture will inhibit or enable a system's driving quality attributes.
  2. The decisions made in an architecture allow you to reason about and manage change as the system evolves.
  3. The analysis of an architecture enables early prediction of a system's qualities.
  4. A documented architecture enhances communication among stakeholders.
  5. The architecture is a carrier of the earliest and hence most fundamental, hardest-to-change design decisions.
  6. An architecture defines a set of constraints on subsequent implementation.
  7. The architecture dictates the structure of an organization, or vice versa.
  8. An architecture can provide the basis for evolutionary prototyping.
  9. An architecture is the key artifact that allows the architect and project manager to reason a
  10. bout cost and schedule.
  11. An architecture can be created as a transferable, reusable model that forms the heart of a product line.
  12. Architecture-based development focuses attention on the assembly of components, rather than simply on their creation.
  13. By restricting design alternatives, architecture channels the creativity of developers, reducing design and system complexity.
  14. An architecture can be the foundation for training a new team member.
Learn more »

What is Software Architecture? Define its basic structures.

The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both.
There are three categories of architectural structures, which will play an important role in the design, documentation, and analysis of architectures:

Modules: Module structures partition systems into implementation units called  modules. Modules are assigned specific computational responsibilities, and are the basis of work assignments for programming teams. Examples: Layered Architecture
Component-and-connector: Other structures are dynamic, meaning that they focus on the way the elements interact with each other at runtime to carry out the system’s functions. Suppose the system is to be built as a set of services. The services, the infrastructure they interact with, and the synchronization and interaction relations among them form another kind of structure often used to describe a system. Examples: Model-View-Controller, Broker Pattern, Pipe-and-filter, peer-to-peer, publish and subscribe, Service Oriented Architecture, etc.
Allocation Structure: A third kind of structure describes the mapping from software structures to the system’s organizational, developmental, installation, and execution environments. Components are deployed onto hardware in order to execute. These mappings are called allocation structures.
Examples: Map Reduce or Multi-tier architecture.


Bass, Len; Clements, Paul; Kazman, Rick (2012-09-25). Software Architecture in Practice (3rd Edition) (SEI Series in Software Engineering) (p. 4). Pearson Education. Kindle Edition.
Learn more »