The discussion in the marketplace is largely dominated by people moving from on premise to hosted VMs in an IaaS environment. Whether you call it "Lift and Shift" or "Your Mess for Less", moving software from a physical server to a VM is only part of the story. The reality is that while moving VMs to the cloud can lower costs, it doesn't maximize the potential value for customers. Customers need to re-evaluate how they architect solutions to truly optimize their environment for the cloud. Modern applications should be designed with a 'Cloud First' mentality. Rather than just 'move stuff' to the cloud, architects should be designing software that is autonomous, asynchronous, stateless, and based on standards. Whether public, private or hybrid clouds, taking this approach will pay dividends now and in the future. Not coincidentally, it also optimizes them for Platform as a Service and makes their applications much more Windows Azure friendly. This session discusses the subject in depth and looks at the architectural patterns and approaches using real world solutions.
Automate your Kamailio Test Calls - Kamailio World 2024
Architecting with a 'cloud first' mindset
1.
2. AGENDA + OBJECTIVES
Design Practices for “Cloud First” Applications
You will learn new ones
You will remember some of them – because cloud forces you to do so
You will update some of them
These practices are applicable to both on-premise and cloud applications
TO DO during design
4. DECOMPOSE APPLICATION BY WORKLOADS
Consider applications are composed of multiple workloads
Products like SharePoint and Windows Server are designed with this
principle in mind
Different workloads have different profiles: and requirements
Availability, Operational, Cost, Health, Security, Capacity,
And so on…
eCommerce as an example:
Browse + Search
Checkout
4
5. WINDOWS PACKAGING TAXONOMY
5
COMPONENTS: Reusable, self-describing, unit of testing ,
distribution and servicing
FEATURES: Product building-block which, in combination
with other features or components, delivers a set of
functionality
ROLES: Composition of features that forms the unit of
management (deployment, update and so on)
WORKLOADS: Composition of often related roles that run
together on a server or set of servers
SOLUTION: A set of integrated workloads that together
address a specific problem for a targeted customer
segment
PRODUCT: A SKU or a solution packaged as a product
7. DEFINE APPLICATION LIFECYCLE
Application Lifecycle define the key stages and milestones application goes
through when it is operational
Such stages are defined using time vs. usage/capacity/availability etc.
Often usage has direct relationship with capacity, availability and cost
7
M T W T F S S
Workload 1
Workload 2
J F M A M J J A S O N D
Workload 1
Workload 2
9. DEFINE AVAILABILITY MODEL + PLAN
Availability Model defines the when and why of the availability and drives SLA(s)
Availability Plan is the how of the availability – how the availability of the application and its
workloads will be guaranteed.
Resiliency is KING!
Football API (Example)
Live Match Scores + Commentary
100% during a live game
None when there is no match
Team + Player Stats
99% all the time
Application SLA != Platform SLA
9
J F M A M J J A S O N D
Workload 1
Workload 2
11. Catch
Recover
Monitor
DEFINE REAL-TIME HEALTH
There is more to a system than software
Understand how hardware failures affect the system
Understand “good health”
Understand “diminished health”
Understand “failure”
Ensure your “system” understands health dependencies
I challenge you – “Beat the Users”
Know about health before users tells you
11
App + Data
13. DESIGN FOR SECURITY
Use Secure Development Lifecycle (SDL). Full STOP!
13
Remember?
Trustworthy Computing
14. DEFINE SECURITY + IDENTITY MODEL
Identity Lifecycle Management is often missed
Federation
Provisioning and De-provisioning
Management (for example employee promotion)
Administration (for example password reset)
Access + Control
Authentication
Authorisation + Roles Based Access
Auditing
Externalise your identity provider
Note that it is a dependency
14
16. DEFINE CAPACITY MODEL + PLAN
Capacity Model defines the when and why of the capacity
and drives hosting cost model
Capacity Plan is the how of the capacity – how the
capacity for the application and its workloads will be
guaranteed.
16
J F M A M J J A S O N D
Workload 1
Workload 2
18. DEFINE COST MODEL
Break-down the cost by workloads and consumptions
patterns
You don’t have to do this for every use case – group similar
scenarios into groups with similar cost profiles
Develop a heat-map to represent your cost model
Represent your cost in the lifecycle model
18
20. MINIMIZE/ELIMINATE MANUAL OPERATIONS + REACTIVE
SUPPORT
Using the lifecycle models identify
All pro-active operations
All possible events and reactions
Implementation options
Manual (Human) – Slow and Not Consistent
Electronic (Human + Software) – Slow and Consistent
Automated (Software) – Fast and Consistent
Look to automate both pro-active operations and reactive responses
Design the system to recover from any failure at any level
20
Application + Data
Platform
Datacenter
22. DEFINE DATA MODEL
Data Model defines
How your data is structured, grouped and partitioned (following
workload pattern)
How your data is deployed – which data goes where
How your data is secured and accessed
How your data is queried and patterns (for example I/O, Tx.)
22
Volume Velocity Variety Variability
26. DEFINE DEVELOPMENT, TESTING + DEPLOYMENT
MODELS
Rethink!
Examples:
What version of facebook are you using?
How do facebook develop, test and release new versions of facebook? Are
there any versions?
How do you test your new web site you will launch at Super Bowl on
Sunday?
Simulating 500M users?
How does Amazon deploy country specific features in every country?
26
28. DEFINE MULTI-TENANCY MODEL
Multi-tenancy is about instances of your software.
A multi-tenancy model defines how your software will be
Developed
Configured
Deployed
Managed
Scaled
For each of your customer
28
29. 29
Acc. Owner
Admin
< 1000 Users
Management
& Support
Software
Provider
A copy of the Software (instance per customer) is configured, deployed, scaled and managed
independently.
Acc. Owner
Admin
< 4000 Users
MULTI-INSTANCE MODEL
30. SINGLE INSTANCE MODEL
30
Acc. Owner
Admin
< 1000 Users
Management
& Support
Software
Provider
A Software (single instance for all customers) is configured, deployed, scaled and managed.
Acc. Owner
Admin
< 4000 Users
All Users
34. DEFINE SAAS MODEL
SaaS Model defines how your application will be provided as a services
Key Activities
On-Boarding
Provisioning
Example
WL1: $0.005 10K tx a month
WL2: $0.020 10K tx a month
Customer A: 5000 users
WL1: %20
WL2: %80
Customer B: 7000 users
WL1: %65
WL2: %35
34
Commercial
Multi-
Tenancy
SaaS
Informs, Influences, Impacts
I challenge you – “Put $ on the User”
Calculate user’s “footprint” on the application
35. DESIGN FOR CLOUD APPLICATIONS
Decompose
Application by
Workloads
Define
Lifecycle
Model
Define
Availability
Model
Define
Deployment
Model + Plan
Define Health
Model
Define Security
Model
Define
Capacity
Model + Plan
Define Cost
Model
Define
Operational
Model + Plan
Define
Integration
Model
Define Data
Model
Define Testing
Strategy
Define
Development
Approach
Define Multi-
Tenancy Model
Define SaaS
Model