This presentation discusses various decision points around designing applications and services in the cloud
There are many ways to scale applications. In most on-premises systems we scale vertically by increasing memory, disk, and or CPU processing. In the cloud we scale horizontally by distributing the work across more nodes.
A key guiding principle to scaling is the notion of independence. We should ensure that an issue in one part of the system is isolated and has no impact on other parts of the system.
Each customer should be mutually exclusive so if one customer has a huge uptick of transactions that cause performance issues it is isolated and has no impact on other customers. Likewise, if a module like a reporting system is down or having ussies, you should still be able to bill and server customers from the other modules.
Key to doing REST right is not to maintain application state. Instead rely on hyperlinks (HATEOAS)
We should not be having a SQL vsNoSQL discussion. It often is SQL and NoSQL. Use the right tool to solve each unique problem.
This chart shows where the responsibilities lie between the vendor and the customer
When you build you own private cloud you are responsible for it all. Be careful what you ask for.
If you use the public cloud you are responsible for the app stack and up
If you use PaaS you are responsible for the application and up
If you use SaaS you only focus on administration of IDs
Right tool for the right job• Physical characteristics• Performance characteristics• Volatility• Volume• Transaction boundaries• Retention period• Regulatory requirements
When to use RDbMS OLTP Table based Referential Integrity ACID TransactionsCompany Employees
When to use NosqlKey Value Store Best for content caching, Fast lookups Redis, MemcacheDBColumn Store Best for huge data volumes, Fast lookups, Distributed data Cassandra, Hbase Great for static, historical dataDocument Databases Best for versioning various documents and formats CouchDB, MongoGraph Databases Best for complex relationships, social networks Neo, Infogrid
Role of Devops Asset management Policy Enforcement Disaster Recovery Access Controls Monitoring - Operations Deployments– App Dev Support – APP Dev & OperationsOwn Outright Shared Responsibility`
Team Roles DevOps Architects App Dev QA Scrum Master Build Management Security Devops Help Desk Computer Operations Account Manager Field Support QA App Dev FinanceDevelopment Support
Business ImpactsAccounting/Finance• Capex vs Opex• Pay-as-you-go Harder to forecast costs• Pricing Balance revenue with platform costsLegal• More rigorous RFP Process• Regulations – SOC2, PCI, ISO27001, SOX, PII, Safeharbor, software escrow, etc.• Country specific rules on privacy and dataHuman Resources• Cloud requires many new skillsets• Training• Recruiting (skill shortage, remote and global workers)• New incentivesSales• Shorter implementation cycles – Sell and go• Need to understand basics of cloud computing, especially when it comes to defending security• Need to discuss issues like privacy and SLAs
Thank Youarticles for each topic at this linkDesign strategies for cloud computing