GoConqr has a new look! Let us know what you think.

Mind map

Cloud app design and dev

hon sam Chan English

Map content

Cloud app design and dev

  1. Design

    • Creating a product, service, or other plan to satisfy a specific end goal
    • Bad design
      • Slow response
      • Application outages
      • Vulnerable application
      • Inefficient usage of resources
      • Higher cost
      • Lacks scalability
  2. Cloud and traditional different

    • Underlying Infrastructure may Reboot
      • computing resources may be go down and restart at anytime
      • get replaced by a different machine altogether
      • includes the entire stack of infrastructure, middleware and service
      • cannot store data on the local drive on the cloud server
      • Cloud charicaristic
        • shared computing resources
        • management software pulls together
    • infinitely scalable
      • ability to pull resources to scale
      • horizontal scaling, not vertical
      • adding extra instance or same thing, and load balance
      • application has to be designed to cater for this behaviour
    • Everything is online
      • always connected
      • maybe used 24x7
      • need to find suitable maintenance window
      • Security consideration
      • API - risk for hackers
      • two level of security
        • Application level
        • Network level
  3. key architecture

    • design to scale horizontally
      • scale by adding more app/DB instances
      • use load balance
      • auto-scaling
    • Don't persist data on local server
      • cloud server and service may reboot any time
      • local server storage is not reliable
      • store session data on cloud-based caching facilities
      • store persisting data on cloud database or BLOBs
    • Explicitly declare and Isolate dependencies
      • never assume external data exists, declare dependencies and automatical download of library
      • make sure put in procedure to handle error from web services
    • Componentise an application
      • break app down into small building blocks
      • blocks work with each other to fulfil app function
      • faster deployment as deploy a small part each time
      • Microservice architecture
    • Loosely Couple the components
      • components are encapsulated
        • communication relies on sending and receiving messages via standard interface exposed to other components
      • changing internal logic for one do not require change of another
      • Microservice architectur
      • message queue or message broker technologies
        • ensure reliable delivery of message
    • Design stateless App
      • stateful app store state info in app server
      • Cloud app run on many server
      • Desing app that state info defined by DB and shared storage.
    • Consider security
      • Network layer
        • Firewall
        • Intrusion Detection System
        • Intrusion Prevention Sys
        • System Incident Event Management
      • Application layer
        • Authentication and authorisation
        • security built into forms to prevent SQL injection
        • encryption and masking DB, consider needed data
        • encryption of data in transit
        • manual or automated penetration
    • Cost and performance
      • minimise calls to APIs
    • Use Micro-services
      • modular applications that can communicate with each other and work in tandem.
      • Characteristics
        • Componentisation via services
        • Organised around Business Capabilities
        • Products not Projects
        • Smart endpoint and dumb pipes
        • Decentralised Governance
        • Decentralised Data Management
        • Infrastructure Automation
        • Design for failure
        • Evolutionary Design
      • Benefits
        • Failing of 1 service will not affect other
        • can be upgraded individually
        • increase modularity - easier to understand
        • fast to deploy and start
        • allowing team to try multiple technologies
      • 3-dimension scalability model
        • Y-axis - split by functionality
          • by none or by verb
        • x-axis -- clone and load balance
        • z-axis - partition into subsets (more on DB)
      • Challenges
        • balance the granularity of service
        • Tracking service dependency
        • Fault tolerance architecture
        • Resulting in lots of traffic
        • Decentralised data management
        • Coordinating deployment across multiple micro-services
  4. Design patterns

    • proven solutions for repeated problems
    • saves time and cost, decreases training time
    • encourage better documentation and community support
    • incorporates a number of design principles

Information

Description
Mind Map on Cloud app design and dev, created by hon sam Chan on 05/15/2016.
Created by
hon sam Chan
Views
1
Rating

Feedback

What is it about?

What do you think of the new look?

How do you like it?