Cloud Computing Lecture Slides
Cloud Computing Lecture Slides
(CS4142)
Desktop-as-a-Service (DaaS)
• Cloud-based VDI where the provider manages infrastructure.
• Scalable and cost-effective.
• Advantages: Easy scaling, lower upfront costs, managed services.
Remote Desktop Services (RDS)
• Allows multiple users to access applications on a Windows Server.
• Suitable for task-based access rather than full desktops.
• Advantages: Cost-effective for application delivery, centralized updates.
Desktop Virtualization - Concepts and
Implementation
Key Components of Desktop Virtualization
• Hypervisor:Role: Manages VMs and allocates resources.
• Examples: VMware ESXi, Microsoft Hyper-V.
Virtualization Server
• Role: Hosts and runs virtual desktops.
Client Devices
• Examples: PCs, thin clients, tablets.
• Role: Access virtual desktops via the network.
Management Software
• Examples: VMware Horizon, Nutanix Frame.
• Role: Facilitates the deployment and management of virtual desktops.
Desktop Virtualization - Concepts and
Implementation
Implementation Considerations
Infrastructure Requirements:
• Adequate server capacity, storage, and network bandwidth.
Security:
• Data encryption, user authentication, and secure access.
Performance:
• Monitoring VM performance and network latency.
Cost:
• Initial investment, ongoing costs, and cost-benefit analysis.
User Experience:
• Ensuring responsive and reliable access to virtual desktops.
Desktop Virtualization - Concepts and
Implementation
Benefits of Desktop Virtualization
Centralized Management:
• Streamlined updates, backups, and administration.
Enhanced Security:
• Centralized data storage and secure access.
Flexibility:
• Access from various devices and locations.
Cost Efficiency:
• Reduction in hardware costs and maintenance.
Desktop Virtualization - Concepts and
Implementation
Challenges and Considerations
Complexity:
• Initial setup and configuration can be challenging.
Bandwidth Dependency:
• Performance heavily reliant on network speed and reliability.
Licensing:
• Ensuring compliance with software licensing requirements.
Application Virtualization: Techniques and
Tools
Introduction to Application Virtualization
Definition: Application virtualization refers to the technique of running
applications in a virtual environment, separating them from the underlying
hardware or operating system.
Key Concept: Applications run as if natively installed but without directly
interacting with the host OS.
Key Features:
• Application packaging
• No client installation needed
• Easy deployment
Faster Time-to-Market:
• Developers use the cloud-native approach to dramatically save time by not
relying on any hardware infrastructure.
• By deploying the cloud model, they eliminate traditional development
obstacles and are in a position to develop, test, and add features at a rapid
pace.
Cost Efficiency:
The bottom line of moving to the cloud is cost reduction. Similarly, opting for
cloud-native development helps businesses save money eliminating the need
of repetitive investments in hardware to build, test, or run applications. The
entire responsibility is taken by the cloud provider.
Cloud Native Architecture
Enhanced Reliability:
Cloud-native applications include redundancy and fault tolerance, leading to
reduction in downtime and maintaining steady performance. This ensures
that services remain reliable and consistently available, even during
unexpected issues.
Improved Security:
Similar to DevSecOps, the cloud-native approach integrates security into
every stage of the SLDC, ensuring robust protection against threats.
Greater Innovation:
Away from the limitations of traditional infrastructure, in the cloud-native
setup, developers get an opportunity to experiment with new technologies,
platforms, and methodologies to drive continuous improvement and
innovation.
Cloud Native Architecture
The cloud-native development process is usually based on the following 4 key
principles:
Storage in Kubernetes
• Volumes: Attach storage to containers that outlive their lifecycle.
• Persistent Volumes (PV): Cluster-level storage abstraction.
• Persistent Volume Claims (PVC): Request for storage from the pods.
• Dynamic Provisioning: Kubernetes can automatically provision storage
based on PVC requests.
Kubernetes
Kubernetes Security
• RBAC (Role-Based Access Control): Assign permissions to users or
applications.
• Network Policies: Define how pods are allowed to communicate with each
other and other network endpoints.
• Pod Security Policies: Controls pod capabilities like privilege escalation,
host namespaces.
Helm ChartsIntroduction:
Helm is a package manager for Kubernetes.
Helm Chart Structure:
• Values.yaml: Configuration options.
• Templates: Kubernetes manifest files.
Use Case: Deploying complex applications with a single command.
Kubernetes
Kubernetes Ecosystem
• Monitoring: Prometheus, Grafana for monitoring metrics and
visualizations.
• Logging: EFK Stack (Elasticsearch, Fluentd, Kibana) for logging.
• CI/CD Tools: Jenkins, CircleCI, GitLab CI integrated with Kubernetes for
automation.
Case Study/Example
• Use Case: Walkthrough of a Kubernetes deployment process for a web
application, including steps like setting up a deployment, exposing it via a
service, and scaling the application.
Kubernetes
Conclusion
Key Takeaways:
• Kubernetes simplifies the management of containerized applications.
• It provides powerful abstractions for scaling, networking, and storage.
• Integration with other tools like Helm, Prometheus makes it a robust
ecosystem.
Web Application Design for the Cloud - Key
Principles
Introduction to Cloud-Based Web Applications
What is a Cloud-Based Web Application?
• Applications hosted on cloud platforms like AWS, Azure, or Google Cloud,
rather than on-premise.
• Accessible via a web browser, allowing users to connect globally without
needing specialized software.
Why Cloud for Web Applications?
• Cloud environments offer high scalability, lower upfront costs, and
flexibility compared to traditional hosting.
• Services like PaaS (Platform as a Service) and IaaS (Infrastructure as a
Service) simplify infrastructure management.
Web Application Design for the Cloud - Key
Principles
Key Benefits of Cloud-Based Web Application Design
• Scalability: Scale horizontally (adding more servers) or vertically
(upgrading server capacity) as traffic grows.
• Cost Efficiency: Cloud follows a pay-as-you-go model—only pay for what
you use.
• Fault Tolerance: Cloud providers often guarantee failover mechanisms
that automatically switch to backups if a server fails.
• Elasticity: Cloud resources automatically adjust according to real-time
demands (e.g., traffic spikes).
• Global Availability: Use of content delivery networks (CDNs) and
distributed datacenters ensures low latency worldwide.
• Security: Built-in encryption, compliance tools (HIPAA, GDPR), and disaster
recovery services.
Web Application Design for the Cloud - Key
Principles
Principle 1: Scalability and Elasticity
Design for Scalability:
• Horizontal Scaling: Adding more servers to handle growing traffic (e.g.,
load balancing across multiple instances).
• Vertical Scaling: Increasing the capacity of existing servers (e.g., upgrading
RAM, CPU).
• Design microservices that can scale independently, meaning only the
services experiencing high load are scaled up.
Elasticity:
• Automatic scaling based on real-time usage.
• Cloud platforms like AWS Auto Scaling and Google Cloud’s App Engine
offer services to automatically manage scaling.
Web Application Design for the Cloud - Key
Principles
Principle 2: Fault Tolerance and High Availability
Fault Tolerance:
• Distribute your application across multiple servers or regions to ensure no
single failure impacts the entire system.
• Example: Use active-passive or active-active configurations with replicated
databases and services.
High Availability:
• Use of multi-region deployments, meaning even if one region fails, traffic
is redirected to another.
• Implement load balancing across multiple instances of your service,
reducing downtime.
Web Application Design for the Cloud - Key
Principles
Principle 3: Statelessness
Stateless Design:
• Stateless means each request is independent of others, with no stored
data between requests on the server.
• This allows services to be replicated or restarted without impacting user
sessions or data.
• External Session Management: Store sessions in a distributed cache like
Redis or a database to maintain state externally.
• Benefits: Better scalability and fault tolerance because instances don’t
need to maintain session information.
Web Application Design for the Cloud - Key
Principles
Principle 4: Microservices Architecture
Microservices Overview:
• Break down monolithic applications into independent, loosely coupled
services, each responsible for a specific business function.
• Example: One service for authentication, another for payments, another
for user profiles.
Advantages:
• Scalability: Scale individual services independently based on need.
• Fault Isolation: Failures in one service don’t bring down the whole system.
• Technology Diversity: Different microservices can use different
programming languages or databases if needed.
Web Application Design for the Cloud - Key
Principles
• Principle 5: API-First Design
• API as a Contract:
• Design APIs that clearly define how different services or applications interact
before implementing the internal logic.
• Advantages of API-First:
• Modularity: Enables easy integration with third-party services, mobile apps, or
other systems.
• Reusability: The API can serve multiple clients (e.g., web, mobile, external
partners).
• API Gateway: Use an API gateway (e.g., AWS API Gateway, Kong) to manage
and monitor API traffic.
Web Application Design for the Cloud - Key
Principles
• Principle 6: Security Considerations
• Core Security Practices:
• Data Encryption: Encrypt data both in transit (e.g., SSL/TLS) and at rest (e.g.,
server-side encryption with cloud providers).
• Authentication and Authorization: Use modern protocols like OAuth 2.0 and
JWT for secure access.
• Role-Based Access Control (RBAC): Limit access to resources based on the
user’s role within the system.
• Threat Detection:
• Use Web Application Firewalls (WAFs) to protect against common threats like
SQL injection and Cross-Site Scripting (XSS).
• Implement Distributed Denial of Service (DDoS) protection to prevent service
disruptions.
Web Application Design for the Cloud - Key
Principles
• Principle 7: Performance Optimization
• Key Performance Tuning Techniques:
• Caching:
• Use in-memory caching (e.g., Redis, Memcached) to store frequently
accessed data.
• Implement CDNs to deliver static content closer to the end-user, reducing
latency.
• Database Optimization:
• Use indexing, database partitioning, and sharding to optimize data
retrieval.
• Content Delivery Network (CDN):
• Global network of servers delivering static content closer to the user,
reducing load times.
Web Application Design for the Cloud - Key
Principles
• Principle 8: Cost Optimization
• Design for Cost Efficiency:
• Serverless Architectures: Use services like AWS Lambda or Azure Functions for
event-driven, pay-per-use models.
• Spot Instances and Reserved Instances: Leverage cloud provider discounts for
consistent workloads.
• Resource Allocation: Ensure cloud resources are only allocated when needed
and optimize services based on usage patterns.
• Cost Monitoring:
• Use built-in cost monitoring tools (e.g., AWS Cost Explorer, Azure Cost
Management) to identify areas where costs can be reduced.
Web Application Design for the Cloud - Key
Principles
• Principle 9: Monitoring and Observability
• Monitoring Tools:
• Prometheus and Grafana for metrics visualization and alerting.
• AWS CloudWatch, Azure Monitor, or Google Cloud Operations for cloud-
native monitoring.
• Observability Practices:
• Implement structured logging (e.g., JSON logs) to capture application data.
• Use distributed tracing tools (e.g., Jaeger, OpenTelemetry) to track the lifecycle
of a request as it passes through microservices.
Web Application Design for the Cloud - Key
Principles
• Principle 10: DevOps and CI/CD Integration
• Continuous Integration/Continuous Deployment (CI/CD):
• Automate the building, testing, and deployment pipeline with tools like
Jenkins, GitLab CI, or CircleCI.
• Blue-Green Deployments: Reduce downtime by having two identical
production environments, switching traffic from one to another during
updates.
• Infrastructure as Code (IaC):
• Use tools like Terraform or AWS CloudFormation to automate infrastructure
provisioning and configuration.
• Benefits: Consistency, repeatability, and version control for infrastructure.
Development of Cloud Apps - Process and
Techniques
Cloud App Development Lifecycle
• 1. Conceptualization:
• Identify business problems that can be solved with cloud applications.
• Create detailed user stories, define app functionality, and plan resources.
• Establish business objectives and performance goals (cost, uptime, user base).
• 2. Architecture Design:
• Decide on cloud service models (SaaS, PaaS, IaaS) based on the business need.
• Design application architecture with scalability, security, and availability in
mind.
• Use best practices like decoupling components and utilizing stateless services.
Development of Cloud Apps - Process and
Techniques
3. Development:
• Select the right programming languages (e.g., Python for server-side, JavaScript for
client-side).
• Develop front-end and back-end services, leveraging cloud-based development
environments.
• Integrate APIs and cloud services for functions such as storage (e.g., Amazon S3)
and databases (e.g., Google Cloud Datastore).
4. Testing:
• Perform unit, integration, and system testing to ensure the app functions as
expected.
• Load and stress test the app to assess scalability under high traffic conditions.
• Conduct security testing to verify encryption, authorization, and data protection.
Development of Cloud Apps - Process and
Techniques
5. Deployment:
• Utilize CI/CD pipelines to automate code integration, testing, and deployment.
• Implement Infrastructure as Code (IaC) using tools like Terraform for seamless
deployment.
• Deploy the application across multiple data centers for redundancy and high
availability.
6. Monitoring and Optimization:
• Use monitoring tools (e.g., AWS CloudWatch, Azure Monitor) to track performance
metrics like CPU, memory usage, and latency.
• Continuously optimize based on monitoring results to improve speed, reduce
costs, and increase performance.
• Implement auto-scaling to dynamically adjust the number of resources based on
user demand.
Development of Cloud Apps - Process and
Techniques
Key Techniques in Cloud App Development
Microservices Architecture:
• Design the application as a collection of independent, loosely coupled services.
Each service has a specific business function and communicates with others via
APIs. This improves flexibility and scalability.
Containers for Deployment:
• Package applications and their dependencies into containers (e.g., Docker) for
lightweight and consistent deployment across different environments.
• Use Kubernetes to orchestrate, manage, and scale containerized applications.
API-First Design:
• Focus on building robust APIs that can be consumed by different clients (web,
mobile, third-party applications).
• Follow standards like REST or GraphQL for API design.
Development of Cloud Apps - Process and
Techniques
Key Techniques in Cloud App Development
DevOps and Continuous Delivery:
• Use DevOps principles to integrate development and operations for faster releases
and updates.
• Automate deployment pipelines (CI/CD) for faster and more reliable rollouts.
Scalability and Fault Tolerance:
• Design for horizontal scaling to accommodate growing workloads by adding more
instances.
• Implement fault-tolerant systems with multiple availability zones to ensure uptime
in case of hardware failures.
Development of Cloud Apps - Process and
Techniques
Tools and Platforms for Cloud App Development
Popular Cloud Platforms:
• Amazon Web Services (AWS): Leading platform with services like EC2 for
computing, S3 for storage, and RDS for databases.
• Microsoft Azure: Strong PaaS and hybrid cloud offerings, including services like
Azure App Service and Azure DevOps.
• Google Cloud Platform (GCP): Known for its machine learning capabilities and data
processing tools like BigQuery.
Development and Management Tools:
• Docker: A platform for developing, shipping, and running applications inside
containers.
• Kubernetes: An open-source container orchestration platform that automates the
management of containerized applications.
• Terraform: An Infrastructure as Code tool that allows you to build, change, and
version infrastructure safely and efficiently.
• Jenkins: A popular CI/CD tool for automating parts of software development
related to building, testing, and deploying.
Development of Cloud Apps - Process and
Techniques
Security in Cloud Applications
Key Security Concerns:
• Data Encryption: Protect sensitive data by using encryption at rest and in transit.
Cloud providers like AWS offer services such as KMS (Key Management Service) for
managing encryption keys.
• Identity and Access Management (IAM): Use role-based access controls to ensure
that only authorized users can access certain resources.
• API Security: Secure APIs with authentication tokens, rate limiting, and monitoring
for suspicious activities.
Best Practices:
• Implement multi-factor authentication (MFA) to protect against unauthorized
access.
• Regularly update and patch applications and cloud infrastructure to address
vulnerabilities.
• Use network security controls, such as Virtual Private Clouds (VPCs), firewalls, and
VPNs.
Development of Cloud Apps - Process and
Techniques
Benefits of Cloud Applications
1. Cost Efficiency:
• Cloud infrastructure operates on a pay-as-you-go model, eliminating upfront hardware and
software costs. You only pay for what you use, which can greatly reduce operational
expenses.
2. Scalability:
• Cloud services allow for rapid scaling, both vertically (adding more power to existing
resources) and horizontally (adding more instances). This ensures your app can handle
growing user demand.
3. Accessibility:
• Cloud applications are accessible from any location with internet access. This increases
productivity and enables remote work.
4. Maintenance and Updates:
• Cloud providers handle most maintenance, including hardware and software upgrades. This
reduces the workload on internal IT teams.
5. Real-Time Collaboration:
• Teams can collaborate in real-time from any location, as cloud applications support multi-user
access and live updates.
Development of Cloud Apps - Process and
Techniques
Challenges of Cloud Applications
1. Security Risks:
Although cloud providers offer robust security, the shared responsibility model means the
customer must still secure their data, access, and apps. Misconfigurations, weak credentials, and
human errors remain leading causes of security breaches.
2. Downtime and Reliability:
Dependence on the internet and the cloud provider’s infrastructure means potential downtime if
the provider experiences outages or if your network connection is lost.
3. Vendor Lock-In:
• Switching cloud providers can be challenging due to proprietary services, APIs, and data
formats, potentially making it costly and time-consuming to migrate.
4. Compliance Issues:
Businesses must ensure they comply with regulations such as GDPR or HIPAA, which can be
complicated when data is hosted in multiple locations across the globe.
Development of Cloud Apps - Process and
Techniques
Challenges of Cloud Applications
1. Security Risks:
Although cloud providers offer robust security, the shared responsibility model means the
customer must still secure their data, access, and apps. Misconfigurations, weak credentials, and
human errors remain leading causes of security breaches.
2. Downtime and Reliability:
Dependence on the internet and the cloud provider’s infrastructure means potential downtime if
the provider experiences outages or if your network connection is lost.
3. Vendor Lock-In:
• Switching cloud providers can be challenging due to proprietary services, APIs, and data
formats, potentially making it costly and time-consuming to migrate.
4. Compliance Issues:
Businesses must ensure they comply with regulations such as GDPR or HIPAA, which can be
complicated when data is hosted in multiple locations across the globe.
5. Cost Management:
Without proper monitoring and optimization, cloud costs can spiral, especially if storage,
compute, and data transfer services are used inefficiently.
Development of Cloud Apps - Process and
Techniques
Strategies to Overcome Cloud Challenges
Mitigating Security Risks:
• Regular security audits, use of IAM policies, and encryption can minimize risks.
Follow the principle of least privilege when assigning access to users.
Improving Reliability:
• Utilize multi-region deployments, failover strategies, and backups to ensure
application availability even during failures.
Avoiding Vendor Lock-In:
• Adopt an open, multi-cloud strategy by using cloud-agnostic tools and designing
applications with portability in mind (e.g., containers, open APIs).
Ensuring Compliance:
• Regularly review local and international data protection laws, such as GDPR, and
ensure your cloud infrastructure meets the necessary legal requirements.
Managing Costs:
• Use cost management tools provided by cloud providers (e.g., AWS Cost Explorer,
Azure Cost Management) to monitor and optimize resource usage.
Development of Cloud Apps - Process and
Techniques
Strategies to Overcome Cloud Challenges
Mitigating Security Risks:
• Regular security audits, use of IAM policies, and encryption can minimize risks.
Follow the principle of least privilege when assigning access to users.
Improving Reliability:
• Utilize multi-region deployments, failover strategies, and backups to ensure
application availability even during failures.
Avoiding Vendor Lock-In:
• Adopt an open, multi-cloud strategy by using cloud-agnostic tools and designing
applications with portability in mind (e.g., containers, open APIs).
Ensuring Compliance:
• Regularly review local and international data protection laws, such as GDPR, and
ensure your cloud infrastructure meets the necessary legal requirements.
Managing Costs:
• Use cost management tools provided by cloud providers (e.g., AWS Cost Explorer,
Azure Cost Management) to monitor and optimize resource usage.
Benefits and Challenges of Cloud Apps
Key Benefits of Cloud Applications
1. Cost Efficiency
• Pay-per-Use Model: Cloud services charge based on actual usage, eliminating the
need for heavy upfront investments in IT infrastructure.
• Reduced Hardware Costs: No need to purchase, maintain, or upgrade on-premises
hardware.
• No Maintenance Overhead: The cloud provider manages infrastructure,
maintenance, and updates, reducing operational costs.
2. Scalability
• Automatic Scaling: Cloud platforms can automatically adjust computing resources
based on demand, ensuring performance during peak times without manual
intervention.
• Elasticity: Users can scale resources up or down based on needs, making it ideal
for startups and businesses with fluctuating workloads.
Benefits and Challenges of Cloud Apps
3. Accessibility and Mobility
• Access from Anywhere: Cloud applications can be accessed from any device with
internet connectivity, promoting remote work and global collaboration.
• Real-Time Collaboration: Teams across different geographies can work together in
real-time, improving productivity and communication.
4. Maintenance and Updates
• Managed by Provider: Cloud vendors handle software updates, security patches,
and infrastructure maintenance, reducing the workload on internal teams.
• Continuous Improvements: Regular updates ensure that the latest features and
security standards are available without downtime.
5. Enhanced Collaboration
• Real-Time Data Sharing: Cloud apps enable multiple users to access and work on
the same data or documents in real-time, promoting teamwork.
• File Version Control: Cloud platforms often include version control, allowing team
members to track changes and revert to earlier versions if needed.
Benefits and Challenges of Cloud Apps
6. Disaster Recovery and Backup
• Built-in Redundancy: Cloud providers often offer built-in backup and disaster
recovery solutions. Data is stored in multiple locations, ensuring availability even if
one server fails.
• Quick Recovery: Data and applications can be recovered quickly, minimizing
downtime and loss of business continuity.
7. Sustainability
• Eco-Friendly Solutions: Cloud data centers are often optimized for energy
efficiency, making cloud computing more environmentally friendly compared to
traditional data centers.
• Less Waste: Companies avoid over-provisioning hardware, as resources can be
scaled based on demand.
8. Improved Security Features
• Advanced Security Measures: Cloud providers invest in advanced security
protocols (e.g., encryption, firewalls, security patches).
• Centralized Security Management: Security is centralized in the cloud, making it
easier to manage and monitor access, threats, and data breaches.
Benefits and Challenges of Cloud Apps
Challenges of Cloud Applications
1. Security Risks
• Shared Responsibility Model: Although cloud providers secure the infrastructure, the
customer is responsible for securing the application and data. Misconfigurations and weak
credentials can lead to security breaches.
• Data Breaches: Sensitive data stored in the cloud is a potential target for cyber-attacks if
proper security protocols aren’t followed (e.g., encryption, secure access).
2. Downtime and Reliability
• Dependence on the Internet: Cloud apps require a stable internet connection, and poor
connectivity can hinder access and productivity.
• Cloud Provider Outages: Cloud platforms are not immune to downtime, and outages from
major providers (e.g., AWS, Google Cloud) can disrupt business operations globally.
3. Vendor Lock-In
• Proprietary Services: Many cloud providers use proprietary technologies that may not be
easily transferable to other platforms. This makes it difficult and costly to switch providers.
• Migration Complexity: Migrating data and applications between cloud providers or back to
on-premise infrastructure can be expensive and time-consuming due to compatibility issues.
Benefits and Challenges of Cloud Apps
4. Compliance and Legal IssuesData
• Sovereignty: Different countries have varying regulations regarding where data can
be stored and processed (e.g., GDPR in Europe, HIPAA in the US).
• Auditing and Compliance: Ensuring compliance with industry regulations while
using cloud services can be complex, especially when dealing with global data
transfers.
5. Cost Management
• Unpredictable Costs: While cloud pricing is flexible, unexpected increases in
storage, compute, or data transfer can inflate costs if not monitored closely.
• Cost Monitoring Tools Required: To manage expenses, companies need to use
specialized tools and services (e.g., AWS Cost Explorer, Azure Cost Management) to
keep track of resource usage and spending.
Benefits and Challenges of Cloud Apps
6. Limited Control
• Lack of Direct Control over Infrastructure: With cloud services, companies have
less control over infrastructure management, such as servers or networking,
relying heavily on the cloud provider’s policies.
• Dependency on Provider's Features and Roadmap: Users must rely on cloud
providers to introduce necessary features or upgrades. If the provider doesn’t
prioritize a required feature, it can slow down innovation for the client.
7. Performance Issues
• Latency: Depending on the physical location of cloud data centers, latency issues
might arise, especially if users are in different regions from the data centers.
• Service Performance: Cloud services can suffer performance degradation during
high demand periods, leading to slower app response times.
Benefits and Challenges of Cloud Apps
Mitigating Cloud Application Challenges
1. Enhancing Security
• Data Encryption: Encrypt sensitive data both at rest and in transit to protect against breaches.
• Identity and Access Management (IAM): Implement robust access control and multi-factor
authentication (MFA) for stronger security.
2. Ensuring Reliability
• Multi-Region Deployments: Distribute workloads across multiple cloud regions and availability
zones to improve redundancy and reduce downtime.
• Backup Strategies: Regularly backup data and applications, utilizing both hot and cold backup
solutions to ensure rapid recovery.
3. Addressing Vendor Lock-In
• Cloud-Agnostic Solutions: Use open-source tools and platforms (e.g., Kubernetes) to ensure
portability between cloud providers.
• Multi-Cloud Strategy: Adopt a multi-cloud approach where possible to avoid dependency on a
single provider.
4. Managing Costs Effectively
• Use Cloud Monitoring Tools: Leverage cost management services (e.g., AWS Cost Explorer, Azure
Monitor) to optimize resource usage and control costs.
• Set Budgets and Alerts: Set budget limits and create alerts for when usage exceeds predefined
thresholds.
Comparison of Cloud Apps vs. Web Apps
Aspect Cloud Applications (Cloud Apps) Web Applications (Web Apps)
Applications hosted on cloud infrastructure, Applications that run on web browsers and are
Definition leveraging remote servers for storage and accessed via the internet.
computing power.
Architecture Built on cloud-based architecture, often using Built using web technologies like HTML, CSS, and
microservices and cloud-native tools. JavaScript, served by web servers.
Deployment Hosted on cloud infrastructure like AWS, Google Deployed on web servers and accessed via a web
Cloud, or Azure. browser.
Data Storage Data is stored in the cloud and accessed remotely. Data is typically stored on the web server or a
Can integrate with cloud storage services. connected database.
Access Accessed via a web browser or dedicated app Accessed directly through a web browser without
across multiple platforms (desktop, mobile). any additional software installation.
Connectivity Requires internet for full functionality but often has Requires continuous internet connectivity. Most
offline capabilities, syncing when online. lack offline functionality.
Scalability Highly scalable due to cloud infrastructure's ability Scalability depends on server capacity but can be
to adjust resources based on demand. improved with load balancers and cloud hosting.
Performance Typically high-performing due to optimized cloud Dependent on server performance and internet
resources, edge computing, and CDNs. speed. Can degrade under heavy traffic.
Updates & Maintenance Managed by cloud providers, with updates Updates applied by developers on the server, with
happening in the background. users receiving the latest version automatically.
Security shared between provider and user, with Vulnerable to attacks like SQL injection or XSS.
Security advanced features like encryption and DDoS Security is the responsibility of the app owner.
protection.
Cost Pay-as-you-go model with costs scaling with app Generally lower costs, depending on hosting, but
usage and growth. can increase with functionality or traffic.
Offline Functionality Often provides offline functionality with data Typically lacks offline functionality, requiring
syncing when online. continuous internet access.
Customization & Flexibility More customizable due to modular architecture Customizable but can be limited by web technology
and integration with cloud services. and maintaining state across the app.
User Interaction Can offer richer user experiences with complex Generally simpler user experiences limited by
workflows and data handling across devices. browser capabilities.
Examples Microsoft Office 365, Google Drive, Dropbox, Gmail, Facebook, Trello, Twitter, eBay.
Salesforce.
Benefits and Challenges of Cloud Apps
Introduction to Oracle Cloud Infrastructure
(OCI) - Overview
Oracle Cloud Infrastructure (OCI) is a set of cloud services that enable businesses to
build and run a wide range of applications and services in a highly available,
performance-optimized, and secure environment. OCI provides a comprehensive suite
of infrastructure services, including compute, storage, networking, databases, and
developer tools, allowing organizations to modernize their applications and optimize
operations.
Introduction to Oracle Cloud Infrastructure
(OCI) - Overview
Key Components of OCI
1. Compute Services
OCI provides flexible compute instances (bare metal and virtual machines) to run different workloads,
including enterprise applications, AI/ML workloads, and high-performance computing (HPC).
2. Storage Solutions
OCI offers a range of storage options like block storage, object storage, and archive storage to suit different
data requirements. It ensures high durability, availability, and scalability for various use cases, from
databases to big data analytics.
3. Networking Services
The robust OCI network includes Virtual Cloud Networks (VCNs), Load Balancing, FastConnect (dedicated
connectivity), and a global network of data centers that provide secure, low-latency connectivity across
regions.
4. Database Services
Oracle provides fully managed database services, including Oracle Autonomous Database, Oracle Database
Cloud Service, and Exadata Cloud Service, designed for mission-critical workloads, offering extreme
performance and high availability.
5. Security
OCI ensures top-notch security with encryption, identity and access management (IAM), firewalls, and
Distributed Denial of Service (DDoS) protection. The infrastructure is designed to provide secure isolation,
complete data control, and compliance with industry standards.
6. Monitoring and Management
OCI provides built-in monitoring tools, including Oracle Cloud Monitoring and Logging, enabling users to
track system performance and application health.
Introduction to Oracle Cloud Infrastructure
(OCI) - Overview
Benefits of OCI
• High Performance: Optimized hardware and network for high-performance
workloads.
• Scalability: Resources can be dynamically scaled to meet application needs.
• Cost-Efficiency: Pay-per-use model, along with competitive pricing, ensures cost
control.
• Security: Built with a strong focus on security, offering multiple layers of
protection.
• Autonomous Services: Oracle Autonomous Database and other self-driving
services automate critical tasks like patching, backups, and scaling.
Introduction to Oracle Cloud Infrastructure
(OCI) - Overview
OCI Regions - Key Benefits
1. Global Access: Oracle’s cloud infrastructure spans multiple continents, allowing
users to deploy resources close to their customer base for low-latency access.
2. High Availability: Deploying across multiple ADs and Fault Domains ensures that
mission-critical applications remain available, even in the case of failures.
3. Disaster Recovery: Region pairing provides robust disaster recovery options by
enabling automatic replication and failover between regions.
4. Compliance and Data Sovereignty: Local regions help customers comply with data
residency requirements and ensure that sensitive data stays within geographic
boundaries.
Components of an OCI Region - Physical
Network and Architecture
Oracle Cloud Infrastructure (OCI) is built with a robust physical network and architecture
designed to provide high performance, security, and availability. Each OCI region consists of
various components that work together to deliver a resilient cloud environment.
1. Availability Domains (ADs)
• Independent data centers within a region.
• Provide isolation to enhance high availability and fault tolerance.
2. Fault Domains (FDs)
• Logical groupings of hardware within an AD.
• Offer additional fault isolation to protect workloads from hardware failures.
3. Virtual Cloud Network (VCN)
• A private network within an OCI region.
• Comprises subnets, route tables, and security lists to manage and secure communication
between resources.
4. High-Speed Network Backbone
• Connects all ADs within a region for low-latency communication.
• Supports data transfers and cross-region connectivity.
Components of an OCI Region - Physical
Network and Architecture
5. Storage Services
• Includes block storage, object storage, and local NVMe storage.
• Provides scalable and durable storage options for various workloads.
6. Compute Infrastructure
• Offers bare metal servers and virtual machines (VMs) for different performance needs.
• Supports containers and serverless computing for flexible application deployment.
7. Load Balancing
• Distributes incoming traffic across multiple instances for high availability.
• Ensures application performance and fault tolerance.
8. Network Security
• Includes firewalls, DDoS protection, and data encryption.
• Ensures secure access and protects against security threats.
9. Data Center Facilities
• Equipped with independent power, cooling, and physical security measures.
• Ensures resilience and protection against unauthorized access.