GDG On Campus AASTU
4.9K subscribers
908 photos
52 videos
24 files
618 links
Google Developers Group On Campus for Addis Ababa science and Technology University.

Discussion group: @DSCAASTUCHAT
twitter handle: @gdscaastu
LinkedIn: https://www.linkedin.com/company/gdgaastu
Download Telegram
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
DISTRIBUTED SYSTEMS 🌐
Maarten Van Steen ✍️
Andrew S. Tanenbaum ✍️

4th Edition 📖
Version 02 🔢

🛑 Before you delve into the textbook, take a look at these precise notes 👇—just to see what you're about to sign up for 📚. You can either treat it as an appetizer 🍤 or a dessert 🍰, your choice! 🍽
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
Chapter 1️⃣: Introduction to Distributed Systems 🌐

Overview 📖


Distributed systems
consist of independent computers that collaborate to appear as a single coherent system.

Analogy: Think of it as a symphony orchestra where different instruments play in harmony to produce a unified melody. 🎻🎺

Key Concepts 🔑


Evolution of Distributed Systems 📜

🔹Early Systems: Before 1980, computers were large, expensive, and operated independently.
🔹Technological Advancements:
⚙️ Microprocessors: Transition from 8-bit to 64-bit CPUs; modern systems have the power of mainframes from decades ago.
🌐 Networking: LANs and WANs allowed high-speed communication, connecting millions of devices globally.
📱 Miniaturization: Smartphones and nano-computers, like Raspberry Pi, are powerful yet compact.
🔹Integration: Systems like cloud computing and IoT showcase distributed systems managing diverse tasks across various devices.

Distributed vs. Decentralized Systems 🔄


🔘Distributed: Resources are sufficiently spread for efficiency and reliability (e.g., Google Mail servers).
🔘Decentralized: Resources are necessarily spread, often driven by administrative boundaries or lack of trust (e.g., blockchain systems).

Misconception: Centralized systems are not inherently bad—they can be robust and scalable when designed well (e.g., DNS root servers).

Design Goals 🏗


1. Resource Sharing 🌍:
- Canonical Examples: Cloud storage, multimedia streaming, email services.
- Quote: “The network is the computer” – John Gage.

2. Distribution Transparency 🕵️‍♂️:
- Hides complexity of physical distribution via middleware layers.
- Types: Access, Location, Replication, Migration, Concurrency, Failure.
- Challenge: Full transparency may reduce performance and increase latency.

3. Openness ⚙️:
- Interoperability and extensibility via well-defined interfaces.
- Example: Systems supporting multiple programming languages.

4. Dependability 🔒:
- Metrics: Availability ( 𝐴 = MTBF / MTBF + MTTR), Reliability, Safety, Maintainability.
- Fault handling strategies: Prevention, Tolerance, Removal, Forecasting.

5. Scalability 📈:
- Types: Size (users/processes), Geographical (distances), Administrative (domains).
- Example: CDNs efficiently distribute content for performance and fault tolerance.


Classification of Distributed Systems 📊


⚡️High-Performance Computing
- High-performance systems for intensive tasks.
- Clusters and grids for intensive tasks like scientific simulations.

📂 Distributed Information Systems:
- Data sharing/processing.
- Database management and web services.

🌐 Pervasive Systems:
- Small, self-organizing, sensor-rich systems .
- IoT devices embedded in everyday environments.

Pitfalls ⚠️


▪️Heterogeneity: Managing diverse hardware and software.
▪️Scalability Issues: Unanticipated growth can overwhelm resources.
▪️Partial Failures: Some nodes may fail without affecting the whole system, leading to complex recovery mechanisms.
▪️Security Risks: Networked systems are vulnerable to attacks.

🌐 Summary


🔅A distributed system is a network of computers where processes and resources are spread across multiple machines. 🤝💻

🔅Key distinction:
👉🏻Sufficiently spread: Focused on improving efficiency. ⚡️
👉🏻Necessarily spread: Decentralized systems for operational or trust-based reasons. 🌍

🔅Why distribute?
- Enhance reliability 🔒, scalability 📈, and efficiency ⚡️.
- Not an end goal but a solution to improve performance.

🔅Challenges:
▫️Centralized systems are easier to manage 🛠 but may not meet all needs.
▫️Distribution is necessary when:
- Connecting systems across different organizations 🏢.
- Supporting geographically separated devices (e.g., mobile computing). 📱



The preview is over—now dive into the expansive world of Distributed Systems! 🖥🔗🌍
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (Nebiyou Elias (Nebil))
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
Chapter 6️⃣: Naming 🏷

Naming is 🔑 in distributed systems, enabling the identification, location, and access of entities such as resources, processes, and services.

Introduction to Naming


In distributed systems, names abstract entities like hosts, files, printers, or services, making them accessible without requiring users or applications to know their exact location or physical representation.

🏷 Names: Strings identifying entities (e.g., “/home/docs/file.txt” for a file).
🆔 Identifiers: Unique, immutable names assigned exclusively to a single entity.
📍 Addresses: Names that refer to an entity’s access point and may change over time (e.g., IP addresses for devices).

Flat Naming


Flat naming uses unstructured, globally unique identifiers without any hierarchy. It’s ideal for machines but not user-friendly.

Key Resolution Methods:

📡 Broadcast and Multicast: Sends a query to all nodes until the desired entity responds. Simple but unscalable.
➡️ Forwarding Pointers: Tracks movement via pointers that redirect requests but needs cleanup to remove stale links.
🏠 Home-based Resolution: Uses a central "home" server to store the entity’s current location. Risks bottlenecks and single points of failure.
📊 Distributed Hash Tables (DHTs): Decentralized systems mapping identifiers to entities using a hash function. Scalable and fault-tolerant.
🗂 Hierarchical Approaches: Organizes entities using structured paths for efficient lookup.
🛡 Secure Flat Naming:
🔒 Self-Certifying Names: Use hashes or public keys to verify entities.
🔐 Secure Resolution: Prevent Sybil and eclipse attacks via verified identifiers.


Structured Naming


Structured naming systems use human-readable names organized hierarchically (e.g., domain names or file paths).

Name Spaces: 🌌 Represented as directed acyclic graphs (often trees).
🌿 Leaf Nodes: Represent actual entities (e.g., files, printers).
📂 Directory Nodes: Contain pointers to other nodes, organizing entities logically.

Resolution Process:

🚶‍♂️ Traverse the name space tree to resolve names to entities.
🔄 Cache frequently accessed paths for efficiency.

Examples:
🌐 DNS (Domain Name System): Resolves domain names to IP addresses using a globally distributed hierarchy.
📁 NFS (Network File System): Maps file paths to physical storage locations across distributed systems.

Attribute-based Naming


Attribute-based naming systems describe entities using (attribute, value) pairs, supporting flexible and expressive queries.
Example Query: location=BuildingA AND type=printer. 🖨

Implementation Models:

🗂 Hierarchical (e.g., LDAP): Efficient lookups with directory structure.
🧩 Decentralized Systems: Distribute search processes for scalability and fault tolerance.

Named-Data Networking (NDN)


NDN emphasizes what data is needed rather than where it is stored. Names are structured hierarchically and directly routed, bypassing traditional address resolution.

Structure: Names like /books/DS/4/01/Naming are self-descriptive and hierarchical. 📖
Benefits:
🚀 Improves performance by caching data closer to users.
🎯 Simplifies retrieval by eliminating address mapping.

Challenges in Naming Systems


🌍 Scalability: Efficiently managing billions of entities through caching, hierarchical organization, and DHTs.
🔄 Consistency and Mobility: Maintaining entity updates and location changes without breaking references.
🛡 Security: Preventing spoofing and ensuring trustworthy name-to-entity bindings.
🪟 Transparency: Hiding resolution complexity while ensuring usability.

Examples and Applications


DNS: 🌐 Resolving human-readable web addresses to IP addresses.
Blockchain: Uses flat naming (public keys) to uniquely identify participants and transactions.
Cloud Systems: ☁️ Leverage hierarchical naming for scalability and replication transparency.
NDN: Focuses on content retrieval by names rather than host addresses.




The preview is over—now dive into the expansive world of Distributed Systems! 🖥🔗🌍
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
Chapter 5️⃣: Software Configuration Status Accounting (SCSA) 📊

Purpose of SCSA


Definition: Captures and reports configuration information for effective software management.

Scope: Tracks changes, deviations, waivers, and baseline configurations throughout the software life cycle.

Status Information Management 📋


Activities:
• Collecting and maintaining configuration data.
• Using automated tools for tracking and reporting.

Types of Information:
• Approved configurations, current status of changes, and deviation/waiver details.

Status Reporting 📝


Usage: Supports project management, quality assurance, and software engineering.

Reporting Formats:
• Ad hoc queries for specific insights.
• Predefined reports for periodic updates.

Software Configuration Auditing (SCA) 🔍


Purpose: Evaluates compliance with standards, regulations, and project requirements.

Types of Audits:

🔘 Functional Configuration Audit (FCA): Ensures software consistency with specifications.
🔘 Physical Configuration Audit (PCA): Confirms design and documentation match the as-built product.
🔘 In-Process Audits: Verifies consistency of evolving baselines during development.



Unlock the essentials of Software Configuration Management! 🧑‍💻🔧📊
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
January 12
Forwarded from AASTU SE Notes 📖 & Quizzes (𝕪𝖔𝕤)
Chapter 7️⃣: Software Configuration Management Tools 🛠

Categories of SCM Tools


SCM tools are divided based on their scope of support:

i) Individual Support Tools: Suitable for small organizations or teams.
ii) Project-Related Support Tools: Designed for medium to large teams managing parallel development.
iii) Companywide-Process Support Tools: Automate formal processes across organizations, including certification.

Individual Support Tools 🤝


Version Control Tools: Track changes to configuration items.
E.g.
- Git: speedy and efficient branching and merging capability tool used for distributed version control system
- Subversion(SVN): centralized version control system that tracks changes to files and directories over time. E.g. atomic commit, branching and merging
- Others: Mercurial, perforce, team foundation version control(TFVC)

Build Handling Tools: Compile and link an executable version of the software, with advanced features like quality checks
E.g. Maven, Gradle, Apache Ant, Make, Bazel.

Change Control Tools: Manage change requests and notifications (for example, change request status changes, milestones reached)
E.g. Git, Subversion(SVN), Mercurial, perforce, team foundation version control(TFVC)


Project-Related Support Tools 🗂


Purpose: Facilitate workspace management and distributed development.

Examples: Jira, Trello, Asana, Basecamp, Slack, Microsoft project

Selection Factors: Team size, project nature, development methodology.

Companywide-Process Support Tools 🌐


- They are able to handle many items, data, and life cycles.
- Such tools add to project-related support by supporting a more formal development process, including certification requirements.

Features: Workflow automation, role management, and artifact tracking.
Examples: Atlassian Confluence, Git-Hub Enterprise, Microsoft Azure DevOps, GitLab, JFrog Artifactory, IBM Rational Team Concert



Unlock the essentials of Software Configuration Management! 🧑‍💻🔧📊
January 12
Forwarded from AASTU Software Engineering (Nebiyou Elias (Nebil))
Check your emails🚨


A2SV is sending acceptance emails for G6🎉🎉

#A2SV #G6
@AASTUSE
January 13