database
patterns for cloud computing
what applications make sense in the cloud?
- intro to cloud computing
- 5 patterns for cloud-based applications
- show implementations of patterns
how does it change what we do today?
common environments
1) application runs on premise
buy own, and control and repsonsibility (comes with price)
2) application runs at a hoster
renting machine, but fewer
Lower capability costs,but pay for fixed capacity, even if idle
3) application runs on cloud platform
pay someone for a pool of computing resources that can be applied to a set of applications
shared multitenant that is abstracted from underlying infrastructure that is pay as you go
NIST (cloud computing)
variants
public cloud
- pool computing resources offering through vendor
private cloud
- pool of computing resources that lies within not shared
Patterns
=====
#1) using the cloud for scale spikes
today start ordering hardware, need to call add servers, or maybe need more apps added, or need to partition try
browser ====> (NLB) web role ---> NLB (work role) ----> storage
repeat
antipattern is coupling between web role and worker role
process
web role ---> queue ---> worker role
1) web role (place in que)
2) resond to UI
3) pickup from queue
4) process
5) table
sepearte roles of loging and analysis to know how to scale by application
demo: prime solver
takeaways
core tenant scale up and scale down
understand how to communicate between roles and nodes
strategy on when to scale up/down roles in production (different for every app)
#2) using he cloud for muti-tenancy
browser --> web tier --> app tier ---> database
browser
schema customization in multitenant environmetn
3 options)
a) everybody uses same db
pro: easy to dev
con: no cusotmization, restoring difficult
b)give everyone there on database/schema
pro: flexible, high isolation
con: costly, difficut to upgrde db schemas
c) fixed database/schema
fix schema (shared value) then customization data for eg. postal /zip code
comes down to url approach given (VMC gicen a url based on that uri (mapping of url with cname)
considerations identity
#3) using the cloud for compute
(map reduce) master with that is mapped to workers
takeaways
mapreduce very visible, although can be difficult to initally grasp
lean about existing frameworks, especially hardoop
#4) Using the cloud for storage
server ---> data
- breaks affinitiy between your data and hardware
- how to store data (blobs (images,movies, etc), tables, relational)
takeaway
- storage in the cloud may loo the same, but breaks the affinity issue
#5) Using the cloud for communications
- have queues (rest based to go between companies tends to be bad idea with shared queues need to give security keys)
- proxy using own queue (bad too)
soluton service bus in cloud --> tcp relay and message buffer (opens bidriect socket kept alive in background)
company 1 ---> outbound one-way socket
>>> service bus
company 2 ---> outbound one-way socket
takeways
be careful ocnsuming REST bases on queues using shared secrets
firewalsl/nats ca be trouble
Domain Specific Languages
Domain Specific Language (noun)
a computer programming language of limited expressiveness focused on a particuliar domain
Langauge vs. Grammer
- a language is a set of legal sentences with associated meanings
- a grammar is a set of the legal sentences in a language
- each grammar determines a set of legal sentences, with possibly ambiguouos meanings
- a given language an be specified by multiple languages
DSL Flow
DSL script ----> execute semantic model ----> generate code (optional)
Languages 101
- basic language concepts
- role of the semantecs model in dsls
- testing languages
- interpreters and compilers
- alternative computational models
- syntax - legal sentences
- semantics - the meaning of legal sentances range of possible output values without these things; you don't have a language
Enterprise
Cloud Computing Trends
The hype around cloud computing is enormous with claims of cutting operational costs by at least 90 percent. Cloud platforms are perceived today as ““plug in play” for software development.
It is no wonder that many businesses are branding themselves as delivering cloud computing services and products. Whether cloud computing will be ever able to make good on such hype is uncertain. Nevertheless, there is a tremendous benefit to cloud computing. The two major benefits are ease-of-use and cost-effectiveness.
Cloud computing is a general term that incorporates software as a service (SAAS) with the IT-related capabilities provided “as a service”. Cloud computing has the following characteristics:
- Ability to increase or decrease capacity on demand
- Usage meter of only paying for what you use
- Self-service ability via a GUI or API
- Elastic scalability with ability to shrink or grow resources as required
- Network is essential to consume service
PLAYERS:
Considering that the ticket for state-of-the art data centers is now reaching $500M, cloud computing is an arena for big players. I don’t expect small players to stay competitive for long in this game without the help of the big guys.
The current players are (more to come):
IT INFRASTRUCTURE PROVIDERS (LARGE):
- Amazon Web Services production-ready cloud offer on the market.
- Google App Engine a Python only cloud framework
- Windows Azure the window competitor
- VMWare the cloud Vservice
- SalesForces mostly B2B services
- Mosso
- Flexiscale
- GoGrid
- Elastra
- RightScale
- 3Tera
What is to come in next 12-months?
===========================
In the next 12-months, we will continue to see Cloud enabler technologies and platforms evolve, mature and become more reliable. As the demand for Saas grows, you will see smaller companies taking advantage of pubic clouds as a service while larger companies will begin to take advantage of the paradigm developing private infrastructure clouds with legacy applications. Small and large companies alike will provide more (limited) public facing APIs. The need for better management of goverance of compliance and standards, licenses, security, platform agnostic, monitoring, deployment and SLAs will emerge.