impact of cloud services on software development life
DESCRIPTION
Impact of Cloud Services on Software Development Life - CopyTRANSCRIPT
Impact of Cloud Services on Software Development Life Cycle
MOHAMMED M. YAZJI
Outline
Introduction
Requirement Analysis
Cloud Assessment
Usage Patterns and Requirements Capture
Architecture
Information Architecture
Information Security
Non-functional Information Details
Partitioning Strategy
Introduction
It is generally agreed that evolution of a new paradigm requires adaptation in usage patterns and associated functional areas to fully benefit from the paradigm shift
Likewise to leverage the benefit of cloud paradigm shift in software segment, software development life cycle (SDLC) must continuously adopt new changes to be the guideline for development/implementation of cloud-based projects
Introduction
This chapter mainly describes the changes that are required in SDLC (part of software engineering process) while adopting the cloud computing environment
To truly benefit from cloud environment, software development teams should look at the cloud computing environment as a new development paradigm and leverage it to lead to differentiated value
Requirement Analysis
The industry, in general, tends to think of cloud as an enabler or rather a solution and hence believes that it has no bearing on requirements,
The truth is that cloud is more of a choice at enterprise level
Along with the choice, the guidelines and checklists that aid in requirement analysis are also required for applications moving to cloud to be successful
Requirement Analysis
These relevant requirements are mostly non-functional in nature.
This implies the following additional tasks that need to be planned as part of requirement analysis:
Cloud assessment
Cloud usage pattern identification and capturing data points
Cloud Assessment
Cloud readiness assessment will help to evaluate the cloud readiness and applicability for an enterprise
The assessment also helps to determine the business case and return on investment
It is important to note that cloud assessment guidelines are defined at enterprise level
Cloud Assessment
assessment questions
Does cloud architecture fit the requirements for the application?
Is the enterprise comfortable with public cloud, or should the enterprise focus only on private cloud option among other options?
Identifying suitable cloud service provider (IAAS/PAAS )
Assessing the cost of using cloud (private or public cloud) (compare—capital expense of hosted option vs. running cost of cloud option)
How would applications be monitored after they are hosted on public cloud?
Usage Patterns and Requirements Capture
A common usage patterns
1. Constant Usage of Cloud Resources over Time
This pattern is applicable to both internal and external (e.g. Web sites) applications that are constantly used by enterprise users, and there is little variance in load and usage of these applications
corresponding requirement
Availability of applications at regular intervals.
Defining the strategy for application downtime and uptime.
Defining limits of data loss in case of application crash
Usage Patterns and Requirements Capture
A common usage patterns
2. Cyclic Internal Load
This pattern applies to recurrent business functionalities like batch jobs hat execute at end of day and data processing applications.
corresponding requirement
Detail out the I/O volume required to satisfy the business process
Usage Patterns and Requirements Capture
A common usage patterns
3. Cyclic External Load
This pattern includes applications that are developed to serve a particular demand, like publishing examination.
corresponding requirement
Detail out level of concurrency required across time periods
Usage Patterns and Requirements Capture
A common usage patterns
4. Spiked Internal Load
This pattern applies to executing one-time jobs for processing at a given point in time.
corresponding requirement
Identify volume of data that is required to process the business Functionality
Detail out the network bandwidth and expected delay in response
Define set of business functionalities and business components
Identify reusability of components.
Usage Patterns and Requirements Capture
A common usage patterns
5. Spiked External Load
This pattern applies to applications that should be able to handle a sudden load which may come from an external source example: customers, vendors, or public users.
corresponding requirement
Define the limit of independence to access the application
Usage Patterns and Requirements Capture
A common usage patterns
6. Steady Growth over Time
This pattern usually applies to a mature application or Web site, wherein as additional users are added, growth and resources are tracked.
corresponding requirement
Cost of maintaining application on cloud
Architecture
In general, software that is to be deployed in cloud environments should be architected differently than on premise hosted/deployed applications
Cloud computing as a development environment has led to emergence of varieties of design and architecture principles,
The new architecture paradigm requires improving the thought process for horizontally scaling out the architectures by developing and designing large number of smaller components that are loosely coupled and easy to deploy in distributed environments.
Architecture
Cloud computing solutions should operate on a network which is capable of handling massive data transactions
With every increase in demand of quality software from clients, enterprises must produce the software that can be adapted to new environments without degrading the existing parameters of quality of service for the application.
Information Architecture
As the world is growing and becoming more connected every day, data plays a vital role in software application.
The key in building the information architecture is to closely align information to business process by availing the features available in cloud environment
Information Architecture
This process enables all stakeholders This process enables all stakeholders like business leaders, vendors, consumers, service providers, users, and all other stakeholders in evaluating, reconciling, and prioritizing on the information vision and related road map
For good information architecture you have Understanding the key considerations of data architecture in distributed environment and trade-offs for decisions made related to technology and architecture choices in cloud environments
Information Architecture
core decision points of information architecture :
Access Information: unconstrained access to the right users at the right time.
Reusable Services: Facilitate discovery, selection, and reuse of services
Information Governance: Provide proper utilities to support efficiency of information governance strategy.
Standards: Define set of standards where technology will support process simplification.
Information Security
Security is one of the important nonfunctional requirements demanded by clients.
Information security plays a vital role in distributed environments while defining information architecture.
The level of security applied depends on
the type of information. In general,
information is classified into four main categories
1. Public
2. Private
3. Confidential
4. Secret
Levels of information security
Information Security
Authentication, authorization, and data protection are different mechanisms of implementing security that every system should adopt. These security mechanisms need to be applied to information which may be available in different formats and dates
Information at Rest
Information in Transit
Transient Information
Information CRUD
Information Security
Table 4.3 should be understood with the following in mind:
Authenticating the access to public information is optional.
Authenticating the access to information that is private to the organization is mandatory, and the same is applicable for the information that is classified under confidential and secret categories.
Authorizing the access to public/private information is optional.
Authorizing the access to confidential and secret information is mandatory.
Protecting the access to public/private information is optional.
Protecting the access to confidential and secret information is mandatory.
Information Security
Table 4.4 provides details about the responsibilities of different stakeholders
Table 4.5 defines different kind of information that may be moved to cloud environment
This implies that confidential data can be in cloud but needs encryption
Non-functional Information Details
The following non-functional information requirements need to be analyzed as part of information architecture
1. Volume
Sizing the data volume is mandatory non-functional information to be captured
2. Variety
There are many varieties of data used in day-to-day business. The sets of data include: Relational, Configuration, Graphs, Geospatial, Documents, Unstructured data (videos, audio)
Non-functional Information Details
The following non-functional information requirements need to be analyzed as part of information architecture
3. Internal and External
Internal requirements include:
High impact • Medium impact • Low impact
External requirements include:
Regulations (country level/region level) • Industry specific (SWIFT/HIPAA)
Non-functional Information Details
The following non-functional information requirements need to be analyzed as part of information architecture
4. Ability to Query
The relevant requirements are:
The ability to query or search the data stored in a distributed environment
Level of querying demanded
Single field, multiple fields in a table, fully relational data
Scope of query
Single logical partition or data distributed across multiple logical partitions
Real-time data need
Query intervals and responsiveness
Data freshness
Partitioning Strategy
Partitioning data involves a trade-off between scalability, consistency, and flexibility
The main needs that influence data partitions are:
Data size that is stored on a single server
Transaction volume that needs to be processed on a single server
Data variety that is stored in different places
Partitioning Strategy
In highly elastic scenarios of distributed environments, partitions may be needed for just few hours or days.
As part of just-in-time partitioning strategy, if load is predictable, then:
Partition before load commences
Un-partition after load moderates