"Making the best of the cloud requires that we take an architectural view, something that we've proven remarkably bad at over and over. Simply deploying an application unchanged to the cloud is unlikely to deliver much benefit."
remember: There are no Silver Bullets
- On-demand self-service
- Ubiquitous network access
- Location independent resource pooling
- Rapid elasticity
- Pay per use
- Cloud Software as a Service (SaaS)
- Use provider's applications over a network
- Cloud Platform as a Service (PaaS)
- Deploy customer-created applications to a cloud
- Cloud Infrastructure as a Service (IaaS)
- Rent processing, storage, network capacity, and other fundamental computing resources
To be considered "cloud" they must be deployed on top of cloud infrastructure that has the key characteristics
- Private cloud
- enterprise owned or leased
- Community cloud
- shared infrastructure for specific community
- Public cloud
- Sold to the public, mega-scale infrastructure
- Hybrid cloud
- composition of two or more clouds
Two types: internal and external
Cloud computing often leverages:
- Massive scale
- Free software
- Autonomic computing
- Geographically distributed systems
- Advanced security technologies
- Service oriented software
"a set of common but flawed assumptions made by programmers when first developing distributed applications. The fallacies are summarized as follows:"
- The network is reliable.
- Latency is zero.
- Bandwidth is infinite.
- The network is secure.
- Topology doesn't change.
- There is one administrator.
- Transport cost is zero.
- The network is homogeneous.
- They don't require masses of administrator intervention when they go wrong.
- They can be installed with minimal administrator effort because there's no need to worry about tweaking URLs, IP addresses, database connections etc.
- They readily support horizontal scaling e.g. because they contain an abstraction that can support sharding of data-storage.