1/50
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
Design Considerations for Cloud Applications
Scalability, Reliability & Availability, Security, Maintenance & Upgradation, Performance
Scalability (design consideration)
An important factor that drives application designers to move to the cloud. Building applications that can serve millions of users without taking a hit on their performance. With cloud, designers can provision adequate resources to meet their workload levels.
Reliability
The probability that a system will perform the intended functions under stated conditions for a specified amount of time.
Availability
The probability that a system will perform a specified function under given conditions at a prescribed time.
Security (design consideration)
An important design consideration for cloud applications given the outsourced nature of cloud computing environments.
Maintenance & Upgradation
Businesses launch applications with a core set of features (MVP) and then incrementally add new features (AGILE), so applications should be designed with low maintenance and upgradation costs.
MVP
Minimum viable product; launching an application with a core set of features ready to achieve a rapid time-to-market.
Reference Architecture tiers (e-Commerce, B2B, Banking apps)
Load Balancing Tier (one or more load balancers), Application Tier (auto scaling recommended), Database Tier (Master-Slave Architecture).
Application Tier (reference architecture)
Recommended to configure auto scaling, triggered when metrics such as CPU usage or memory usage go above defined thresholds.
Master-Slave Architecture
Database tier with a master database instance and multiple slave instances. The master node serves all the write requests and the slave nodes serve the read requests. Improves throughput since most applications have more reads than writes, and ensures separation of concerns.
Reference Architecture - Content delivery apps
Used for apps like online photo albums and video webcasting. Uses both relational and non-relational data stores and a CDN (global network of edge locations) to speed up delivery of static content such as images, audios and videos.
Reference Architecture - Analytics apps
Used for compute intensive applications like Data Analytics and Media Transcoding. Has web, application, storage, computing/analytics and database tiers. The analytics tier uses distributed batch processing frameworks like Hadoop for big data. Jobs are submitted from the application servers, queued, and results returned to the application servers.
Service Oriented Architecture (SOA)
A well established architectural approach for designing and developing applications in the form of services that can be shared and reused. A collection of discrete software modules or services that collectively provide the functionality of an application.
SOA services
Developed as loosely coupled modules with no hard-wired calls. They communicate with each other by passing messages (SQS, Kafka).
Web Services Description Language (WSDL)
An XML-based language used to describe SOA services, containing information on the functions performed by a service and its inputs and outputs.
SOA Layers
Business Systems, Service Components, Composite Services, Orchestrated Business Processes, Presentation Services, Enterprise Service Bus
Business Systems (SOA layer)
Custom built applications and legacy systems such as ERP (Enterprise Resource Planning), CRM (Customer Relationship Management), SCM (Supply Chain Management).
Service Components (SOA layer)
Allow the layers above to interact with the business systems. Responsible for realizing the functionality of the services exposed.
Composite Services (SOA layer)
Coarse-grained services composed of two or more service components. Used to create enterprise scale or business-unit specific components (order, sales, payment, support).
Orchestrated Business Processes (SOA layer)
Composite services are orchestrated to create higher level business processes.
Presentation Services (SOA layer)
The topmost layer that includes user interfaces that expose the services and orchestrated business processes to the users.
Enterprise Service Bus (SOA layer)
Integrates the services through adapters, routing, and transformation.
Cloud Component Model (CCM)
An application design methodology that provides a flexible way of creating cloud applications in a rapid, convenient and platform independent manner. Not tied to any specific programming language or cloud platform.
Benefits of CCM
Hybrid deployments across different cloud vendors (overcoming vendor lock-in), better portability and interoperability, and better scalability by decoupling components and using asynchronous communication.
CCM Application Design Methodology steps
Component Design, Architecture Design, Deployment Design
CCM Component Design
A Cloud Component Model is created based on analysis of the application's functions and building blocks. Each component takes specific inputs, performs a pre-defined set of actions and produces outputs. Components offer functions as services (FaaS) through a functional interface and report performance through a performance interface.
CCM Architecture Design
The step where interactions between the application components are defined. Components have: Loose Coupling, Asynchronous Communication, and Stateless Design.
Asynchronous Communication (CCM)
Lets you add capacity by adding servers when application load increases. Made possible by using messaging queues (Amazon SQS, Kafka).
Stateless Design (CCM)
Components are stateless; session state is stored outside of the component (e.g. in a database). Enables distribution and horizontal scaling.
CCM Deployment Design
Application components are mapped to specific cloud resources (web servers, application servers, database servers). Since components are loosely coupled and stateless, they can be deployed independently and migrated between clouds (prevent vendor lock-in).
SOA vs CCM - Similarities
Both support standardization & re-use, loose coupling, and statelessness.
SOA vs CCM - Differences
SOA: small set of endpoints, uses SOAP for messaging, WS-Security/SAML for security, XML for interfacing, cumbersome to consume in a browser. CCM: endpoint for each resource (URI), uses HTTP and REST, HTTPS for security, many formats (HTML, XML, JSON), easy to consume in the browser.
Model View Controller (MVC)
A popular software design pattern for web applications made up of the Model, View, and Controller.
Model (MVC)
Manages the data and the behavior of the application. Processes events sent by the controller and has no information about the views and controllers.
View (MVC)
Prepares the interface shown to the user (UI). Users interact with the application through views. Handles user requests and sends them to the controller.
Controller (MVC)
Glues the model to the view. Processes user requests and updates the model when the user manipulates the view, and updates the view when the model changes.
Representational State Transfer (REST)
A set of architectural principles for designing web services and web APIs that focus on a system's resources and how resource states are addressed and transferred.
RESTful web service
A web API implemented using HTTP/HTTPS and REST principles.
REST architectural constraints
Client-Server, Stateless, Cacheable, Layered System, Uniform Interface, Code on demand
Django
An open source web application framework for developing web applications in Python. Based on the Model-View-Template (MVT) architecture. Provides a unified API to a database backend, so it works with different databases without code changes.
Web application framework
A collection of solutions, packages and best practices that allows development of web applications and dynamic websites.
Django components
An object-relational mapper (ORM), a web templating system and a regular-expression-based URL dispatcher.
Model (Django MVT)
A definition of some stored data that handles interactions with the database. A Django model is a Python class that outlines the variables and methods for a particular type of data.
View (Django MVT)
Ties the model to the template. Where you write the Python code that generates the web pages; determines what data to display, retrieves it from the database and passes it to the template.
Template (Django MVT)
Simply an HTML page with a few extra placeholders.
App Design methodology for PaaS
Architecture and deployment design steps are not required since the platform takes care of them. Developers only do component design, considering platform specific features.
PaaS - Sandbox Environments
Applications for specific PaaS offerings run in sandbox environments and can only perform actions that do not interfere with the performance of other applications.
PaaS - Portability
A significant challenge for PaaS-based applications due to dependencies and configurations tied to the underlying platform.
Image Processing App (case study)
Users upload images and choose filters to apply, then download the processed image. Web tier (Django templates), application tier (Django views), storage tier (S3).
Cloud Drive App (case study)
Lets users store documents on cloud-based storage. Uses Django, a MySQL database for user credentials, and S3 for file storage.
Social Media Analytics App (case study)
Collects Twitter tweets on a keyword in real time and analyzes their sentiment. A Listener component enqueues feeds to AWS SQS and a Consumer component (on a separate EC2 instance) analyzes them and stores results in MongoDB. Listener and Consumer are separated for scalability and loose coupling.