Summary: Technology Architecture and Application Software
1. Definition of Technology Architecture:
o The infrastructure that supports application software and its services.
o Involves distributing application components across specific hardware devices
and connecting them using networks and protocols.
2. Interdependence with Application Architecture:
o Technology and application architectures are closely linked:
Poor technology architecture weakens software performance, reliability,
and flexibility.
Good technology architecture enhances performance, reduces operating
costs, and allows for easier updates.
3. Limitations of Technology Architecture:
o Even the best technology architecture cannot compensate for poorly designed
application software.
o Application software must be well-designed for:
Ease of construction.
Efficient deployment and operation.
Simplified future updates.
Key Takeaway:
A strong synergy between technology architecture and application architecture is critical for
building efficient, reliable, and maintainable systems.
Key Points on Web Services
1. Definition of a Web Service
A Web service is a software function or a set of functions accessed over the Internet using web
protocols.
It provides a way for applications to communicate and share data or functionality.
2. Key Characteristics of Web Services
1. Called via a URL:
o The service is accessed through a web address or protocol.
2. Input Data:
o Data is passed to the service, often as part of the URL or through other web protocols.
3. Executed on a Server:
o The service runs on the owner’s server, not on the caller’s system.
4. Returns Results:
o The results are sent back as part of a web page, document, or data format (e.g., JSON,
XML).
3. Example: Shipping Charges on Amazon
Scenario:
o A customer selects a one-day shipping option.
o Amazon’s system calculates the package weight, dimensions, and addresses (warehouse
and customer).
o Amazon does not calculate shipping costs itself. Instead:
It sends the data to a shipper’s (e.g., FedEx or UPS) Web service.
The Web service calculates the cost and sends it back to Amazon.
Other Web Service Use Cases in Amazon:
o Credit card payment processing via Visa or MasterCard Web services.
o Locating and ordering out-of-stock items via publisher Web services.
4. Strategic Implications of Web Services
1. Using Existing Web Services:
o Developers can expand their system’s functionality by integrating available Web services
(e.g., shipping, payments).
o This approach reduces development costs while increasing the system's capabilities.
2. Providing Web Services:
o Developers can expose some functions of their system as Web services for others to
use.
o Benefits:
Expands the user base of their services.
o Challenges:
Requires maintaining reliable, secure, and long-term availability of the service.
5. Design and Development Considerations
When using or providing Web services, developers must address:
1. Protocols:
o Decide on standards (e.g., HTTP, HTTPS) for accepting service calls and exchanging data.
2. Security:
o Ensure secure data transmission (e.g., encryption, authentication).
3. Internal Structuring:
o Consider structuring internal system functions as Web services to facilitate interaction
with other internal systems.
4. Performance and Availability:
o Define guarantees for uptime, speed, and reliability for Web service users.
5. Infrastructure:
o Plan server, network, and resource capacity to meet performance guarantees.
Key Takeaways
1. Web services are essential for integrating functions between systems (e.g., shipping or
payments).
2. Developers can use Web services to expand functionality or provide Web services to share their
own functionality with others.
3. Designing Web services involves critical decisions about protocols, security, performance, and
infrastructure.
Let me know if you'd like further clarification or examples!
Key Points on Software as a Service (SaaS)
1. Definition
SaaS (Software as a Service):
o A software delivery model where application software is accessed over the Internet.
o Users do not need to install or maintain the software on their devices.
o The software is hosted and maintained by a service provider.
2. Conceptual Comparison
SaaS is like a utility service (e.g., electricity, water):
o Instead of owning and maintaining the infrastructure, you pay for what you use.
o Example: Instead of buying and maintaining an accounting system, you pay a service
provider to handle your accounting needs.
3. Examples of SaaS Applications
1. Social Networking Services:
o Facebook, Tumblr, Pinterest.
2. Application Suites:
o Google Apps (e.g., Google Docs, Sheets).
o Adobe Creative Suite (e.g., Photoshop, Illustrator).
3. Specialized Applications:
o Amazon.com shopping application.
o UPS.com shipping application.
4. Key Features of SaaS
1. Minimal Local Installation:
o Little or no software is installed on the user’s device.
o Access is typically through a web browser or app.
2. Cloud Storage:
o User data is primarily stored on servers managed by the provider.
o Optional local copies can improve performance (e.g., offline editing).
5. Benefits of SaaS
No need for local installation or maintenance.
Pay-as-you-go pricing model reduces upfront costs.
Accessible from any device with an Internet connection.
Service providers handle updates, security, and maintenance.
Key Takeaway
SaaS simplifies software usage by allowing users to access services over the Internet without
worrying about installation, maintenance, or infrastructure, making it highly cost-effective and
convenient for both individuals and organizations.
Key Points on Distributed Architectures and Client/Server Architecture
1. Distributed Architectures
Definition:
o A distributed architecture involves system components spread across multiple
machines, server farms, and locations worldwide.
Example: Amazon Shopping Application:
o Components are spread across organizations (e.g., Amazon, Visa, UPS).
o Servers are located globally for performance, fault tolerance, and customer
accessibility.
o A single shopping session in California might interact with:
Amazon’s servers in Canada.
UPS servers in Japan.
Visa servers in Germany.
2. Client/Server Architecture
Definition:
o A method of organizing software into clients and servers:
Server: Manages system resources and provides access through a
communication interface.
Client: Uses the interface to request resources, and the server responds to
those requests.
3. Examples of Client/Server Architecture
1. Simple Example: Network Printing:
o A desktop computer (client) sends a document to a print server, which:
Manages the printer.
Processes the request and confirms when the document is printed.
2. Complex Example: Amazon Shopping Application:
o The customer’s laptop acts as a client when interacting with Amazon’s servers.
o Amazon’s application acts as a client when it communicates with UPS or Visa
servers.
4. Characteristics of Client/Server Architecture
1. Software Roles:
o Server: Not tied to specific hardware. It refers to software providing a service
(e.g., database management, web hosting).
o Client: A device or software requesting the service.
2. Scalability and Replication:
o A server can host multiple services.
o A single service can be replicated across many systems to serve geographically
distributed users.
3. Dual Roles:
o A system can act as both a client and a server.
Example: Amazon’s servers act as a client when accessing UPS’s Web
service for shipping charges.
Key Takeaways
1. Distributed Architectures:
o Distribute components across global locations for performance and reliability.
o Multiple organizations (e.g., Amazon, Visa, UPS) collaborate through
interconnected servers.
2. Client/Server Architecture:
o Separates responsibilities between:
Client: Requests services.
Server: Provides services.
o Can range from simple tasks (e.g., network printing) to complex systems (e.g.,
Amazon’s global shopping platform).
Key Points on Three-Layer Architecture in Client/Server Systems
1. Overview of Three-Layer Architecture
Definition:
o A software architecture pattern that divides the system into three distinct layers:
View Layer: User interface (UI) for interacting with the system.
Business Logic Layer: Processes business rules and logic.
Data Layer: Manages access to and interactions with the database.
2. Deployment Example
Typical Configuration:
o View Layer: Runs on desktop or laptop clients.
The HTML is displayed by the web browser on the client device.
Components that format and send the HTML reside on the application
server.
o Business Logic Layer: Resides on the application server.
Contains all the processing logic to implement business rules.
o Data Layer: Runs on the database server.
Includes the database and any software on the application server necessary
to access data.
3. Advantages of Three-Layer Architecture
1. Flexibility:
o Layers interact through standardized protocols (e.g., HTTP), making them
independent of each other.
o Any layer can be deployed on different hardware, operating systems, or locations.
2. Scalability:
o Capacity can be increased by:
Splitting layer functions across multiple computers.
Sharing the workload among redundant systems.
3. Redundancy and Reliability:
o Redundant systems allow load balancing and ensure the system remains
operational in case of hardware or software failures.
4. Adaptability:
o Layers can be deployed or redeployed based on changing organizational needs.
o For example, during high traffic, the application server's business logic can be
split across multiple servers.
5. Efficiency:
o Layers allow specialization, with each part focusing on a specific function:
View layer optimizes the user interface.
Business logic layer focuses on processing.
Data layer ensures efficient data storage and retrieval.
4. Deployment Flexibility
Single Computer:
o All three layers can run on one machine (common for small systems).
Separate Computers:
o Each layer operates on a different computer (e.g., client, application server,
database server).
Distributed Layers:
o A single layer (e.g., business logic) can be split across multiple servers for
complex systems.
Key Takeaways
1. Three-layer architecture encourages modularity, allowing layers to be developed,
maintained, and scaled independently.
2. Protocols and a reliable network ensure inter-layer communication while keeping
layers flexible and independent.
3. Organizations can easily adapt this architecture to meet changing needs, scale resources,
and improve reliability and performance.
Let me know if you'd like further clarification or examples!
Key Points on Interoperability in System Design
1. Definition of Interoperability
Interoperability:
o The ability of a component or system to effectively interact and work with other
components or systems.
o It ensures seamless communication between hardware, software, networks, and
protocols in an information system.
2. Importance in Modern Systems
Modern systems consist of a myriad of components (hardware, software, networks).
These components must collaborate to achieve the system’s goals.
Lack of interoperability can lead to inefficiencies, errors, and system failures.
3. Steps to Ensure Interoperability
1. Understand the Current Environment:
o Identify existing hardware, software, networks, protocols, and APIs.
o Evaluate how the new system will integrate with the existing setup.
2. Leverage Existing Components and Services:
o Use pre-built software modules or services where possible.
o Ensure these components are compatible with the environment and other new
components.
3. Build Custom Components:
o For functions that cannot be purchased or sourced, design custom components.
o Ensure custom-built components are interoperable with:
Existing systems.
Other components of the new system.
4. Structure the System Effectively:
o Assemble components in a way that:
Simplifies building, testing, deployment, and operation.
Ensures long-term functionality and maintainability.
4. Challenges in Achieving Interoperability
Complexity:
o Modern systems involve numerous technologies, platforms, and protocols.
Skill Requirements:
o System designers need broad and deep knowledge of technologies, protocols, and
system architecture.
Team Collaboration:
o Effective system design requires teams, as no single individual can manage the
complexity alone.
5. Role of System Designers
Knowledgeable:
o Designers must be well-versed in:
Hardware and software integration.
Networking and communication protocols.
System architecture and design best practices.
Experienced:
o Practical experience in development and design of subsystems.
Adaptable:
o Continuously learn to stay updated with evolving technologies.
Key Takeaways
1. Interoperability ensures that all system components, whether built or acquired, work
seamlessly together.
2. Achieving interoperability requires a deep understanding of the system's environment, careful
integration of existing components, and thoughtful design of custom parts.
3. System design is a team effort, requiring expertise and collaboration to manage the complexity
of modern large-scale systems.
Let me know if you’d like further clarification or examples!
Key Points on Architectural Diagrams
Architectural diagrams provide a visual summary of an information system’s environment,
components, and deployment. They are essential tools in systems design for understanding and
communicating complex details.
1. Types of Architectural Diagrams
a. Location Diagrams
Definition:
o Show the geographic placement of system components such as hardware, buildings,
and users.
o Often created early in the design process to describe the system's physical environment.
Example:
o RMO’s location diagram shows:
Corporate headquarters in Park City, Utah.
Retail stores, manufacturing plants, and distribution warehouses in cities like
Seattle, Portland, and Albuquerque.
Use:
o Helps designers and stakeholders understand the physical layout of the system and its
resources.
b. Network Diagrams
Definition:
o Show how locations and hardware components are interconnected using network
devices (e.g., routers, switches) and wiring.
o Focus on network configurations and communication pathways.
Example:
o Figure 7-14 illustrates network connections within a building or server room, detailing:
Hardware devices.
Network connections (e.g., cables, wireless links).
Types of Network Diagrams:
o High-Level Diagrams: Show connections between major locations (e.g., cities).
o Detailed Diagrams: Focus on specific network setups within buildings or server rooms.
c. Deployment Diagrams
Definition:
o Describe how software components are distributed across hardware and system
software components.
o Illustrate relationships between software, hardware, and protocols.
Example:
o Figure 7-15 shows:
An application server hosting Microsoft Internet Information Server and CSMS
subsystems.
A database server hosting Microsoft SQL Server, which manages schemas for
customer, order, and product data.
o Communication between the application server and the database uses SQL protocols.
Use:
o Helps developers understand where software components will run and how they will
interact with hardware.
2. Benefits of Architectural Diagrams
1. Clarity:
o Simplify complex systems for better understanding and communication.
2. Planning:
o Guide the development and deployment process.
3. Collaboration:
o Provide a shared view for developers, stakeholders, and system administrators.
4. Troubleshooting:
o Help identify and resolve system or network issues.
3. How They Work Together
Location Diagram: Shows where components are physically located.
Network Diagram: Shows how components communicate over a network.
Deployment Diagram: Shows how software is distributed across hardware.
Key Takeaways
1. Location diagrams focus on physical placement (geography).
2. Network diagrams emphasize connectivity and network infrastructure.
3. Deployment diagrams map software components to specific hardware resources.
4. These diagrams are essential for system design, providing flexibility, understanding, and
collaboration across teams.
Let me know if you'd like to explore examples or further clarify these concepts!
Key Points on Describing the Environment and System Design
1. Overview: Describing the Environment
Describing the environment is the first step in system design, ensuring the system integrates
well with existing systems and technology. It involves:
1. External Systems: Systems the new system will interact with, such as payment processors or
shipping providers.
2. Technology Architecture: Existing hardware, software, and networks that support current
systems.
2. Key Questions for Environment Description
To understand and design the system's environment, designers ask:
1. Technology Environment:
o What operating systems, web servers, databases, and security tools are in use?
o Are changes needed for interactions with external systems?
o What APIs and development tools are compatible?
2. External Systems and Databases:
o What data flows in and out of the system? How frequently?
o What protocols and security methods are needed for these interactions?
3. Automated Inputs/Outputs:
o What devices will collect or provide data? What are their security and protocol needs?
4. User Interface Technology:
o Where are users located, and what devices will they use (e.g., tablets, smartphones)?
o What security protocols will ensure secure data exchange with user devices?
3. RMO Case Study
a. Current Technology Architecture
Setup:
o Internal networks in offices, warehouses, and stores.
o Corporate and data center operations in Park City, Utah.
o VPN connections link offices, warehouses, and distribution centers.
o Servers are dedicated to specific systems.
b. Planned Updates for CSMS
1. Mobile Devices and Apps:
o Expand support to smartphones and tablets.
o Add required plug-ins and APIs to support Android, iOS, and Windows apps.
2. Web Technologies:
o Support browser-based UIs that adapt to screen sizes, browsers, and plug-ins.
o Implement modern web protocols (e.g., HTML5) and develop responsive interfaces.
3. Social Networking Integration:
o Enable opinion sharing and marketing through platforms like Facebook and Twitter.
o Research APIs and Web services for each platform to determine compatibility and
requirements.
4. Security Enhancements:
o Digitally sign apps for distribution through app stores.
o Encrypt code fragments and strengthen browser and social media security
configurations.
5. Updated Technology Architecture:
o Add content management servers for images and videos.
o Group servers by service type (e.g., web, application, database).
o Increase network bandwidth to handle complex UIs and Web services.
6. External Hosting:
o Consider hosting key components with companies like Google or Amazon to:
Reduce risk through redundancy.
Improve fault tolerance and scalability.
Leverage economies of scale for cost efficiency.
4. Key Challenges and Considerations
1. Integration Complexity:
o New systems must integrate with existing hardware, networks, and external systems
seamlessly.
2. Security Requirements:
o Support for multiple devices, plug-ins, and social networks increases security
complexity.
3. Scalability:
o The architecture must accommodate increased traffic and modern service
requirements.
4. Cost and Risk of Updates:
o Upgrading infrastructure is costly, and concentrating resources in one data center
increases risk.
o External hosting reduces these risks but may have higher operational costs.
5. Benefits of a Well-Defined Environment
1. Flexibility:
o Supports diverse user devices and integrates with external services.
2. Scalability:
o Ensures capacity for growing demand.
3. Reliability:
o Fault tolerance and redundancy minimize downtime.
4. Efficiency:
o Modern architectures (e.g., Web services, responsive UIs) optimize performance.
Key Takeaways
1. Describing the environment is essential for ensuring the new system integrates smoothly with
existing technology and systems.
2. Comprehensive planning considers external systems, user devices, technology architecture, and
security.
3. Case studies, like RMO’s CSMS, demonstrate how to adapt technology architecture to modern
needs while addressing costs, risks, and scalability.
Let me know if you'd like a deeper dive into any specific part of the environment description
process!