SlideShare a Scribd company logo
Database
Architecture for
Software as a Service
ConFoo Vancouver 2016
Blog - shawnhooper.ca

Twitter - @shawnhooper
Blog - shawnhooper.ca

Twitter - @shawnhooper
Director of IT at 

Actionable.co


Web Developer for the past 20 years

Happy to be visiting here from Ottawa
Hi, I’m Shawn
Blog - shawnhooper.ca

Twitter - @shawnhooper
Centrally Hosted
Subscription Basis
Usually Accessed Through a Web Browser
What is SaaS ?
Blog - shawnhooper.ca

Twitter - @shawnhooper
Learning & Development Platform (SaaS)

Team conversations, individually-relevant actions, peer accountability
and real-time, applicable business insights.
Sold and supported through a network of professional consultants.
Actionable Conversations
Blog - shawnhooper.ca

Twitter - @shawnhooper
* Team has an in-person conversation around a pain point

* Each participant creates a commitment
* Participants “check-in” (1-10) on how they’re feeling about that
commitment

* Assign an accountability buddy to encourage / keep them on track
* After a month the user, buddy, and manager “close the loop”.
* User, Manager and Consultant all get high-level insights.
Actionable Conversations
Blog - shawnhooper.ca

Twitter - @shawnhooper
Database Considerations
Blog - shawnhooper.ca

Twitter - @shawnhooper
Users need to be able to sign up for your service
without the need for your manual involvement.
If you had to manually configure each client, this wouldn’t
exactly be “on demand”.
Self-Service
Blog - shawnhooper.ca

Twitter - @shawnhooper
How does your database design handle tens, hundreds,
thousands, or millions (hey, I can dream!) of users?
Scalability
Blog - shawnhooper.ca

Twitter - @shawnhooper
What impact does your architecture selection have
on the complexity of your code? 



(Application code, Database Queries, etc.)
Code Complexity
Blog - shawnhooper.ca

Twitter - @shawnhooper
“With Great Power Comes Great Responsibility.”
How does your database design impact data security ?
Security
Blog - shawnhooper.ca

Twitter - @shawnhooper
What impact does your architecture decision have on
your ability to make changes your application?
Extendability / Customization
Blog - shawnhooper.ca

Twitter - @shawnhooper
* Multi Tenancy
* Single Tenancy
* Micro Service
Models We’ll Look At
Blog - shawnhooper.ca

Twitter - @shawnhooper
Our tenants are companies.
Each tenant has many users.
Tenant
Blog - shawnhooper.ca

Twitter - @shawnhooper
Multi-Tenant Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
All Users/Clients Share One Database
Multi-Tenancy Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Multi-Tenancy Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
All Users/Clients Share One Database
Self-Service: Easy - Just Add Database Records
Multi-Tenancy Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
All Users/Clients Share One Database
Self-Service: Easy - Just Add Database Records
Scalability: Limited by storage & system resources
Multi-Tenancy Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
All Users/Clients Share One Database
Self-Service: Easy - Just Add Database Records
Scalability: Limited by storage & system resources
Code Complexity: Queries need to include client ID
Multi-Tenancy Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
All Users/Clients Share One Database
Self-Service: Easy - Just Add Database Records
Scalability: Limited by storage & system resources
Code Complexity: Queries need to include client ID
Security Concerns: Poorly written queries, single point of data
breach.
Multi-Tenancy Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
All Users/Clients Share One Database
Upgrades:
Easy! One copy of the database to perform migrations on.
Also means everyone gets upgraded at the same time.
Multi-Tenancy Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
All Users/Clients Share One Database
Customization:
Extensions or custom features available to all clients.
Potential for more bugs to reach all users.
Multi-Tenancy Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
All Users/Clients Share One Database
Data Storage:
All data lives in the same place.
This needs to be a consideration for where, geographically, you’ll
store your data.
Multi-Tenancy Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
All Users/Clients Share One Database
“Oversight Accounts”:
For our resellers (consultants) and support staff, this model made it
easy to create dashboards that could look at the activity of many
tenants at the same time.
Multi-Tenancy Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Single Tenant Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Separate Database or Schema For Each Tenant
Single Tenant Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Tenant 1 Tenant 2 Tenant 3
Blog - shawnhooper.ca

Twitter - @shawnhooper
Separate Database or Schema For Each Tenant
Self-Service:
More difficult. Requires the system to be able to create a new
database schema or database when a user signs up for your service.
Single Tenant Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Separate Database or Schema For Each Tenant
Scalability:
Imbalance of server resources
Some users taking up more than their “share”
Single Tenant Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Separate Database or Schema For Each Tenant
Scalability:
This can be an advantage too. It gives you the ability to
move databases between servers to balance load.
You can even distribute based on geography for data storage.
Single Tenant Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Separate Database or Schema For Each Tenant
Security:


Data Separation! Excellent!
Single Tenant Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Separate Database or Schema For Each Tenant
Code Complexity:


No need to include Tenant ID in every query.
Instead, you need to manage connection strings.
Single Tenant Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Single Tenant Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Single Tenant Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Separate Database or Schema For Each Tenant
Upgrades:


In this model, you could upgrade some tenants and not others to do
a controlled release.
Single Tenant Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Separate Database or Schema For Each Tenant
Customizations:


You could fork and/or provide add-ons only available to some
tenants without an impact on other’s databases.
Single Tenant Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Separate Database or Schema For Each Tenant
Data Migrations:


A benefit of this model is that you could easy backup/move one
tenant.
Example : Refresh Staging / Test Environment
Single Tenant Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Separate Database or Schema For Each Tenant
Oversight Accounts:


Not a great model for the “oversight accounts”.
Hard to build dashboards, aggregating data from
multiple databases.
Single Tenant Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Micro Services Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Databases Separated by Function
Micro Services Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Authentication Products Transactions
Blog - shawnhooper.ca

Twitter - @shawnhooper
Databases Separated by Function
This is much closer to the multi-tenant model we first explored.
Micro Services Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Databases Separated by Function
Self-Service:
You’re still just adding rows to tables, just in multiple databases.
Micro Services Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Databases Separated by Function
Scalability:
Assign more/less resources to the services that need them the most.
Micro Services Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Databases Separated by Function
Security:
You’ll be including the Tenant ID again.
However, less data is stored in each service, limiting
potential for loss in the event of a breach.
Micro Services Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Databases Separated by Function
Code Complexity:
Multiple Database Connections to Maintain
(Multiple APIs too)
Micro Services Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Databases Separated by Function
Code Complexity:
Lack of Referential Integrity between services.
Micro Services Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Databases Separated by Function
Code Complexity:
Lots of traffic between services!
Micro Services Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
Databases Separated by Function
Customization:
Bolting new features onto your application may be
adding a new micro-service.
Micro Services Model
Blog - shawnhooper.ca

Twitter - @shawnhooper
We looked at:
* Multi Tenancy
* Single Tenancy
* Micro Service
Models We’ll Look At
Blog - shawnhooper.ca

Twitter - @shawnhooper
Blog - shawnhooper.ca

Twitter - @shawnhooper
Blog - shawnhooper.ca

Twitter - @shawnhooper
Blog - shawnhooper.ca

Twitter - @shawnhooper
So…. what’s the answer?
Blog - shawnhooper.ca

Twitter - @shawnhooper
What did we do ?
Actionable Conversations
Blog - shawnhooper.ca

Twitter - @shawnhooper
Multi-Tenant Model
* Easy Scalability 

* Support for Oversight Accounts (Consultants / Resellers )
* Allowed users to be part of multiple tenants with one account
Downside:
We had to pick one geography in which
to store data.
Actionable Conversations
Blog - shawnhooper.ca

Twitter - @shawnhooper
Micro-Services Model
One service to handle the “Common” parts of the system:
User Accounts
Partner Profiles (Consultants)
Wholesale Pricing and Sales
Lists - ex: countries, industries, etc.
Actionable Conversations
Blog - shawnhooper.ca

Twitter - @shawnhooper
Micro-Services Model
One service to handle the “Tenants” parts of the system:
Memberships
Conversations Run
Feedback & Check-Ins
Credit Usage / Purchase History
Actionable Conversations
Blog - shawnhooper.ca

Twitter - @shawnhooper
Micro-Services Model
One service to handle the “Notifications” parts of the system:
E-Mail & SMS Message Schedules, Queues and Logs
Actionable Conversations
Blog - shawnhooper.ca

Twitter - @shawnhooper
Micro-Services Model
One service to handle the “Content” parts of the system:
Why re-invent the wheel?
We used WordPress, connected with a REST API.
Actionable Conversations
Blog - shawnhooper.ca

Twitter - @shawnhooper
Hosting
RDS Instance with Amazon Web Services.
Allowed for scaling as the platform grows.
Actionable Conversations
Blog - shawnhooper.ca

Twitter - @shawnhooper
API
We built the application using API First methodology
using the Loopback Framework & Strongloop.
Actionable Conversations
Blog - shawnhooper.ca

Twitter - @shawnhooper
Actionable Conversations
Blog - shawnhooper.ca

Twitter - @shawnhooper
A new platform that allowed clients to
use the “Actionable” method to deliver
their own onboarding programs.
Duplicates the application & database
using the same Multi-Tenant Model
with only one tenant in it.
Actionable Training
Blog - shawnhooper.ca

Twitter - @shawnhooper
Blog - shawnhooper.ca

Twitter - @shawnhooper
shawn@actionable.co
Slides will be available shortly
at
shawnhooper.ca
Questions? Tweet @shawnhooper
Thank You!

More Related Content

Viewers also liked

Recitales Argentina 2017
Recitales Argentina 2017Recitales Argentina 2017
Recitales Argentina 2017
Nico De Gregorio
 
Instituto universitario politécnico santiago mariño este ezra
Instituto universitario politécnico santiago mariño este ezraInstituto universitario politécnico santiago mariño este ezra
Instituto universitario politécnico santiago mariño este ezra
sergioalejandrorodriguez758
 
Final scriptie
Final scriptieFinal scriptie
Final scriptie
Léon Dassen
 
Hacia la democracia electrónica
Hacia la democracia electrónicaHacia la democracia electrónica
Hacia la democracia electrónica
EDGAR AUGUSTO HERNANDEZ URIBE
 
The impact of corporate social responsibility on investment recommendations
The impact of corporate social responsibility on investment recommendationsThe impact of corporate social responsibility on investment recommendations
The impact of corporate social responsibility on investment recommendations
lucahearth
 
SaaSy maps - using django-tenants and geodjango to provide web-gis software-a...
SaaSy maps - using django-tenants and geodjango to provide web-gis software-a...SaaSy maps - using django-tenants and geodjango to provide web-gis software-a...
SaaSy maps - using django-tenants and geodjango to provide web-gis software-a...
Anusha Chickermane
 
Mantenimiento preventivo pc de escritorio
Mantenimiento preventivo pc de escritorioMantenimiento preventivo pc de escritorio
Mantenimiento preventivo pc de escritorio
Stiven Valega Martinez
 
Multi Tenancy With Python and Django
Multi Tenancy With Python and DjangoMulti Tenancy With Python and Django
Multi Tenancy With Python and Django
scottcrespo
 
Coffee wars : CCD taking on the global brands
Coffee wars : CCD taking on the global brandsCoffee wars : CCD taking on the global brands
Coffee wars : CCD taking on the global brands
sampriti1991
 
Dilatacao térmica volumetrica
Dilatacao térmica volumetricaDilatacao térmica volumetrica
Dilatacao térmica volumetrica
Eloir De Carli
 
Mantenimiento preventivo lem
Mantenimiento preventivo lemMantenimiento preventivo lem
Mantenimiento preventivo lem
Erick Hernandez
 
Whitepaper - Building a scalable & Profitable Saas Business
Whitepaper - Building a scalable & Profitable Saas BusinessWhitepaper - Building a scalable & Profitable Saas Business
Whitepaper - Building a scalable & Profitable Saas Business
Techcello
 
Single tenant software to multi-tenant SaaS using K8S
Single tenant software to multi-tenant SaaS using K8SSingle tenant software to multi-tenant SaaS using K8S
Single tenant software to multi-tenant SaaS using K8S
CloudLinux
 
Payments Made Easy with Stripe
Payments Made Easy with StripePayments Made Easy with Stripe
Payments Made Easy with Stripe
Shawn Hooper
 

Viewers also liked (14)

Recitales Argentina 2017
Recitales Argentina 2017Recitales Argentina 2017
Recitales Argentina 2017
 
Instituto universitario politécnico santiago mariño este ezra
Instituto universitario politécnico santiago mariño este ezraInstituto universitario politécnico santiago mariño este ezra
Instituto universitario politécnico santiago mariño este ezra
 
Final scriptie
Final scriptieFinal scriptie
Final scriptie
 
Hacia la democracia electrónica
Hacia la democracia electrónicaHacia la democracia electrónica
Hacia la democracia electrónica
 
The impact of corporate social responsibility on investment recommendations
The impact of corporate social responsibility on investment recommendationsThe impact of corporate social responsibility on investment recommendations
The impact of corporate social responsibility on investment recommendations
 
SaaSy maps - using django-tenants and geodjango to provide web-gis software-a...
SaaSy maps - using django-tenants and geodjango to provide web-gis software-a...SaaSy maps - using django-tenants and geodjango to provide web-gis software-a...
SaaSy maps - using django-tenants and geodjango to provide web-gis software-a...
 
Mantenimiento preventivo pc de escritorio
Mantenimiento preventivo pc de escritorioMantenimiento preventivo pc de escritorio
Mantenimiento preventivo pc de escritorio
 
Multi Tenancy With Python and Django
Multi Tenancy With Python and DjangoMulti Tenancy With Python and Django
Multi Tenancy With Python and Django
 
Coffee wars : CCD taking on the global brands
Coffee wars : CCD taking on the global brandsCoffee wars : CCD taking on the global brands
Coffee wars : CCD taking on the global brands
 
Dilatacao térmica volumetrica
Dilatacao térmica volumetricaDilatacao térmica volumetrica
Dilatacao térmica volumetrica
 
Mantenimiento preventivo lem
Mantenimiento preventivo lemMantenimiento preventivo lem
Mantenimiento preventivo lem
 
Whitepaper - Building a scalable & Profitable Saas Business
Whitepaper - Building a scalable & Profitable Saas BusinessWhitepaper - Building a scalable & Profitable Saas Business
Whitepaper - Building a scalable & Profitable Saas Business
 
Single tenant software to multi-tenant SaaS using K8S
Single tenant software to multi-tenant SaaS using K8SSingle tenant software to multi-tenant SaaS using K8S
Single tenant software to multi-tenant SaaS using K8S
 
Payments Made Easy with Stripe
Payments Made Easy with StripePayments Made Easy with Stripe
Payments Made Easy with Stripe
 

Similar to Database Considerations for SaaS Products

WP REST API: Actionable.co
WP REST API: Actionable.coWP REST API: Actionable.co
WP REST API: Actionable.co
Shawn Hooper
 
Add Module Doing Business Over The Internet
Add Module Doing Business Over The InternetAdd Module Doing Business Over The Internet
Add Module Doing Business Over The Internet
guest7b126e
 
Building the Eventbrite API Ecosystem
Building the Eventbrite API EcosystemBuilding the Eventbrite API Ecosystem
Building the Eventbrite API Ecosystem
Mitch Colleran
 
What are the Best Practices for developing SaaS Applications? | Calidad Infotech
What are the Best Practices for developing SaaS Applications? | Calidad InfotechWhat are the Best Practices for developing SaaS Applications? | Calidad Infotech
What are the Best Practices for developing SaaS Applications? | Calidad Infotech
Calidad Infotech
 
NISO Training Thursday: Implementing SUSHI/COUNTER at Your Institution
NISO Training Thursday: Implementing SUSHI/COUNTER at Your InstitutionNISO Training Thursday: Implementing SUSHI/COUNTER at Your Institution
NISO Training Thursday: Implementing SUSHI/COUNTER at Your Institution
National Information Standards Organization (NISO)
 
Token Management using Stormpath inside Mule
Token Management using Stormpath inside MuleToken Management using Stormpath inside Mule
Token Management using Stormpath inside Mule
RaviShankar Mishra
 
Introducing Sysomos Map 2.0
Introducing Sysomos Map 2.0Introducing Sysomos Map 2.0
Introducing Sysomos Map 2.0
Sysomos
 
Making Sense of Hypermedia APIs – Hype or Reality?
Making Sense of Hypermedia APIs – Hype or Reality?Making Sense of Hypermedia APIs – Hype or Reality?
Making Sense of Hypermedia APIs – Hype or Reality?
Akana
 
RightScale User Conference / Fall / 2010 - Morning Sessions
RightScale User Conference / Fall / 2010 - Morning SessionsRightScale User Conference / Fall / 2010 - Morning Sessions
RightScale User Conference / Fall / 2010 - Morning Sessions
RightScale
 
Design Strategy for Data Isolation in SaaS Model
Design Strategy for Data Isolation in SaaS ModelDesign Strategy for Data Isolation in SaaS Model
Design Strategy for Data Isolation in SaaS Model
Techcello
 
O365Con18 - Hybrid SharePoint Deep Dive - Thomas Vochten
O365Con18 - Hybrid SharePoint Deep Dive - Thomas VochtenO365Con18 - Hybrid SharePoint Deep Dive - Thomas Vochten
O365Con18 - Hybrid SharePoint Deep Dive - Thomas Vochten
NCCOMMS
 
Slideshare may 14 niso tt implementing sushi counter
Slideshare may 14 niso tt implementing sushi counterSlideshare may 14 niso tt implementing sushi counter
Slideshare may 14 niso tt implementing sushi counter
National Information Standards Organization (NISO)
 
Automating your tasks with microsoft flow
Automating your tasks with microsoft flowAutomating your tasks with microsoft flow
Automating your tasks with microsoft flow
Dipti Chhatrapati
 
SharePoint 2013 App Provisioning Models
SharePoint 2013 App Provisioning ModelsSharePoint 2013 App Provisioning Models
SharePoint 2013 App Provisioning Models
Shailen Sukul
 
Proof of Concept: Adobe Analytics Live Stream on Amazon Web Services
Proof of Concept: Adobe Analytics Live Stream on Amazon Web ServicesProof of Concept: Adobe Analytics Live Stream on Amazon Web Services
Proof of Concept: Adobe Analytics Live Stream on Amazon Web Services
YASH Technologies
 
Modern Backends for Mobile Apps
Modern Backends for Mobile AppsModern Backends for Mobile Apps
Modern Backends for Mobile Apps
Sasha Goldshtein
 
Building Multi-tenant SaaS Applications using WSO2 Private PaaS
Building Multi-tenant SaaS Applications using WSO2 Private PaaSBuilding Multi-tenant SaaS Applications using WSO2 Private PaaS
Building Multi-tenant SaaS Applications using WSO2 Private PaaS
Sameera Jayasoma
 
SPSHOU - Upgrading and Migrating to SharePoint 2016 like a Pro
SPSHOU - Upgrading and Migrating to SharePoint 2016 like a ProSPSHOU - Upgrading and Migrating to SharePoint 2016 like a Pro
SPSHOU - Upgrading and Migrating to SharePoint 2016 like a Pro
Brian Culver
 
E-Learning Workshop 2.0
E-Learning Workshop 2.0E-Learning Workshop 2.0
E-Learning Workshop 2.0
compakia
 
Practical Microservices, Practical Whiskey
Practical Microservices, Practical WhiskeyPractical Microservices, Practical Whiskey
Practical Microservices, Practical Whiskey
VMware Tanzu
 

Similar to Database Considerations for SaaS Products (20)

WP REST API: Actionable.co
WP REST API: Actionable.coWP REST API: Actionable.co
WP REST API: Actionable.co
 
Add Module Doing Business Over The Internet
Add Module Doing Business Over The InternetAdd Module Doing Business Over The Internet
Add Module Doing Business Over The Internet
 
Building the Eventbrite API Ecosystem
Building the Eventbrite API EcosystemBuilding the Eventbrite API Ecosystem
Building the Eventbrite API Ecosystem
 
What are the Best Practices for developing SaaS Applications? | Calidad Infotech
What are the Best Practices for developing SaaS Applications? | Calidad InfotechWhat are the Best Practices for developing SaaS Applications? | Calidad Infotech
What are the Best Practices for developing SaaS Applications? | Calidad Infotech
 
NISO Training Thursday: Implementing SUSHI/COUNTER at Your Institution
NISO Training Thursday: Implementing SUSHI/COUNTER at Your InstitutionNISO Training Thursday: Implementing SUSHI/COUNTER at Your Institution
NISO Training Thursday: Implementing SUSHI/COUNTER at Your Institution
 
Token Management using Stormpath inside Mule
Token Management using Stormpath inside MuleToken Management using Stormpath inside Mule
Token Management using Stormpath inside Mule
 
Introducing Sysomos Map 2.0
Introducing Sysomos Map 2.0Introducing Sysomos Map 2.0
Introducing Sysomos Map 2.0
 
Making Sense of Hypermedia APIs – Hype or Reality?
Making Sense of Hypermedia APIs – Hype or Reality?Making Sense of Hypermedia APIs – Hype or Reality?
Making Sense of Hypermedia APIs – Hype or Reality?
 
RightScale User Conference / Fall / 2010 - Morning Sessions
RightScale User Conference / Fall / 2010 - Morning SessionsRightScale User Conference / Fall / 2010 - Morning Sessions
RightScale User Conference / Fall / 2010 - Morning Sessions
 
Design Strategy for Data Isolation in SaaS Model
Design Strategy for Data Isolation in SaaS ModelDesign Strategy for Data Isolation in SaaS Model
Design Strategy for Data Isolation in SaaS Model
 
O365Con18 - Hybrid SharePoint Deep Dive - Thomas Vochten
O365Con18 - Hybrid SharePoint Deep Dive - Thomas VochtenO365Con18 - Hybrid SharePoint Deep Dive - Thomas Vochten
O365Con18 - Hybrid SharePoint Deep Dive - Thomas Vochten
 
Slideshare may 14 niso tt implementing sushi counter
Slideshare may 14 niso tt implementing sushi counterSlideshare may 14 niso tt implementing sushi counter
Slideshare may 14 niso tt implementing sushi counter
 
Automating your tasks with microsoft flow
Automating your tasks with microsoft flowAutomating your tasks with microsoft flow
Automating your tasks with microsoft flow
 
SharePoint 2013 App Provisioning Models
SharePoint 2013 App Provisioning ModelsSharePoint 2013 App Provisioning Models
SharePoint 2013 App Provisioning Models
 
Proof of Concept: Adobe Analytics Live Stream on Amazon Web Services
Proof of Concept: Adobe Analytics Live Stream on Amazon Web ServicesProof of Concept: Adobe Analytics Live Stream on Amazon Web Services
Proof of Concept: Adobe Analytics Live Stream on Amazon Web Services
 
Modern Backends for Mobile Apps
Modern Backends for Mobile AppsModern Backends for Mobile Apps
Modern Backends for Mobile Apps
 
Building Multi-tenant SaaS Applications using WSO2 Private PaaS
Building Multi-tenant SaaS Applications using WSO2 Private PaaSBuilding Multi-tenant SaaS Applications using WSO2 Private PaaS
Building Multi-tenant SaaS Applications using WSO2 Private PaaS
 
SPSHOU - Upgrading and Migrating to SharePoint 2016 like a Pro
SPSHOU - Upgrading and Migrating to SharePoint 2016 like a ProSPSHOU - Upgrading and Migrating to SharePoint 2016 like a Pro
SPSHOU - Upgrading and Migrating to SharePoint 2016 like a Pro
 
E-Learning Workshop 2.0
E-Learning Workshop 2.0E-Learning Workshop 2.0
E-Learning Workshop 2.0
 
Practical Microservices, Practical Whiskey
Practical Microservices, Practical WhiskeyPractical Microservices, Practical Whiskey
Practical Microservices, Practical Whiskey
 

More from Shawn Hooper

Introduction to WordPress Security
Introduction to WordPress SecurityIntroduction to WordPress Security
Introduction to WordPress Security
Shawn Hooper
 
Writing Clean, Standards Compliant, Testable Code for WordPress
Writing Clean, Standards Compliant, Testable Code for WordPressWriting Clean, Standards Compliant, Testable Code for WordPress
Writing Clean, Standards Compliant, Testable Code for WordPress
Shawn Hooper
 
Creating Multilingual WordPress Websites
Creating Multilingual WordPress WebsitesCreating Multilingual WordPress Websites
Creating Multilingual WordPress Websites
Shawn Hooper
 
Creating Multilingual WordPress Websites
Creating Multilingual WordPress WebsitesCreating Multilingual WordPress Websites
Creating Multilingual WordPress Websites
Shawn Hooper
 
WP-CLI Presentation from WordCamp NYC 2015
WP-CLI Presentation from WordCamp NYC 2015WP-CLI Presentation from WordCamp NYC 2015
WP-CLI Presentation from WordCamp NYC 2015
Shawn Hooper
 
Securing WordPress
Securing WordPressSecuring WordPress
Securing WordPress
Shawn Hooper
 
Writing Secure Code for WordPress
Writing Secure Code for WordPressWriting Secure Code for WordPress
Writing Secure Code for WordPress
Shawn Hooper
 
Manage WordPress From the Command Line with WP-CLI
Manage WordPress From the Command Line with WP-CLIManage WordPress From the Command Line with WP-CLI
Manage WordPress From the Command Line with WP-CLI
Shawn Hooper
 
Hooked on WordPress: WordCamp Columbus
Hooked on WordPress: WordCamp ColumbusHooked on WordPress: WordCamp Columbus
Hooked on WordPress: WordCamp Columbus
Shawn Hooper
 
WP-CLI Talk from WordCamp Montreal
WP-CLI Talk from WordCamp MontrealWP-CLI Talk from WordCamp Montreal
WP-CLI Talk from WordCamp Montreal
Shawn Hooper
 
WP-CLI - WordCamp Miami 2015
WP-CLI - WordCamp Miami 2015WP-CLI - WordCamp Miami 2015
WP-CLI - WordCamp Miami 2015
Shawn Hooper
 
Save Time by Managing WordPress from the Command Line
Save Time by Managing WordPress from the Command LineSave Time by Managing WordPress from the Command Line
Save Time by Managing WordPress from the Command Line
Shawn Hooper
 
Time Code: Automating Tasks in WordPress with WP-Cron
Time Code: Automating Tasks in WordPress with WP-CronTime Code: Automating Tasks in WordPress with WP-Cron
Time Code: Automating Tasks in WordPress with WP-Cron
Shawn Hooper
 

More from Shawn Hooper (13)

Introduction to WordPress Security
Introduction to WordPress SecurityIntroduction to WordPress Security
Introduction to WordPress Security
 
Writing Clean, Standards Compliant, Testable Code for WordPress
Writing Clean, Standards Compliant, Testable Code for WordPressWriting Clean, Standards Compliant, Testable Code for WordPress
Writing Clean, Standards Compliant, Testable Code for WordPress
 
Creating Multilingual WordPress Websites
Creating Multilingual WordPress WebsitesCreating Multilingual WordPress Websites
Creating Multilingual WordPress Websites
 
Creating Multilingual WordPress Websites
Creating Multilingual WordPress WebsitesCreating Multilingual WordPress Websites
Creating Multilingual WordPress Websites
 
WP-CLI Presentation from WordCamp NYC 2015
WP-CLI Presentation from WordCamp NYC 2015WP-CLI Presentation from WordCamp NYC 2015
WP-CLI Presentation from WordCamp NYC 2015
 
Securing WordPress
Securing WordPressSecuring WordPress
Securing WordPress
 
Writing Secure Code for WordPress
Writing Secure Code for WordPressWriting Secure Code for WordPress
Writing Secure Code for WordPress
 
Manage WordPress From the Command Line with WP-CLI
Manage WordPress From the Command Line with WP-CLIManage WordPress From the Command Line with WP-CLI
Manage WordPress From the Command Line with WP-CLI
 
Hooked on WordPress: WordCamp Columbus
Hooked on WordPress: WordCamp ColumbusHooked on WordPress: WordCamp Columbus
Hooked on WordPress: WordCamp Columbus
 
WP-CLI Talk from WordCamp Montreal
WP-CLI Talk from WordCamp MontrealWP-CLI Talk from WordCamp Montreal
WP-CLI Talk from WordCamp Montreal
 
WP-CLI - WordCamp Miami 2015
WP-CLI - WordCamp Miami 2015WP-CLI - WordCamp Miami 2015
WP-CLI - WordCamp Miami 2015
 
Save Time by Managing WordPress from the Command Line
Save Time by Managing WordPress from the Command LineSave Time by Managing WordPress from the Command Line
Save Time by Managing WordPress from the Command Line
 
Time Code: Automating Tasks in WordPress with WP-Cron
Time Code: Automating Tasks in WordPress with WP-CronTime Code: Automating Tasks in WordPress with WP-Cron
Time Code: Automating Tasks in WordPress with WP-Cron
 

Recently uploaded

みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Things to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUUThings to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUU
FODUU
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 

Recently uploaded (20)

みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Things to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUUThings to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUU
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 

Database Considerations for SaaS Products

  • 1. Database Architecture for Software as a Service ConFoo Vancouver 2016 Blog - shawnhooper.ca
 Twitter - @shawnhooper
  • 2. Blog - shawnhooper.ca
 Twitter - @shawnhooper Director of IT at 
 Actionable.co 
 Web Developer for the past 20 years
 Happy to be visiting here from Ottawa Hi, I’m Shawn
  • 3. Blog - shawnhooper.ca
 Twitter - @shawnhooper Centrally Hosted Subscription Basis Usually Accessed Through a Web Browser What is SaaS ?
  • 4. Blog - shawnhooper.ca
 Twitter - @shawnhooper Learning & Development Platform (SaaS)
 Team conversations, individually-relevant actions, peer accountability and real-time, applicable business insights. Sold and supported through a network of professional consultants. Actionable Conversations
  • 5. Blog - shawnhooper.ca
 Twitter - @shawnhooper * Team has an in-person conversation around a pain point
 * Each participant creates a commitment * Participants “check-in” (1-10) on how they’re feeling about that commitment
 * Assign an accountability buddy to encourage / keep them on track * After a month the user, buddy, and manager “close the loop”. * User, Manager and Consultant all get high-level insights. Actionable Conversations
  • 6. Blog - shawnhooper.ca
 Twitter - @shawnhooper Database Considerations
  • 7. Blog - shawnhooper.ca
 Twitter - @shawnhooper Users need to be able to sign up for your service without the need for your manual involvement. If you had to manually configure each client, this wouldn’t exactly be “on demand”. Self-Service
  • 8. Blog - shawnhooper.ca
 Twitter - @shawnhooper How does your database design handle tens, hundreds, thousands, or millions (hey, I can dream!) of users? Scalability
  • 9. Blog - shawnhooper.ca
 Twitter - @shawnhooper What impact does your architecture selection have on the complexity of your code? 
 
 (Application code, Database Queries, etc.) Code Complexity
  • 10. Blog - shawnhooper.ca
 Twitter - @shawnhooper “With Great Power Comes Great Responsibility.” How does your database design impact data security ? Security
  • 11. Blog - shawnhooper.ca
 Twitter - @shawnhooper What impact does your architecture decision have on your ability to make changes your application? Extendability / Customization
  • 12. Blog - shawnhooper.ca
 Twitter - @shawnhooper * Multi Tenancy * Single Tenancy * Micro Service Models We’ll Look At
  • 13. Blog - shawnhooper.ca
 Twitter - @shawnhooper Our tenants are companies. Each tenant has many users. Tenant
  • 14. Blog - shawnhooper.ca
 Twitter - @shawnhooper Multi-Tenant Model
  • 15. Blog - shawnhooper.ca
 Twitter - @shawnhooper All Users/Clients Share One Database Multi-Tenancy Model
  • 16. Blog - shawnhooper.ca
 Twitter - @shawnhooper Multi-Tenancy Model
  • 17. Blog - shawnhooper.ca
 Twitter - @shawnhooper All Users/Clients Share One Database Self-Service: Easy - Just Add Database Records Multi-Tenancy Model
  • 18. Blog - shawnhooper.ca
 Twitter - @shawnhooper All Users/Clients Share One Database Self-Service: Easy - Just Add Database Records Scalability: Limited by storage & system resources Multi-Tenancy Model
  • 19. Blog - shawnhooper.ca
 Twitter - @shawnhooper All Users/Clients Share One Database Self-Service: Easy - Just Add Database Records Scalability: Limited by storage & system resources Code Complexity: Queries need to include client ID Multi-Tenancy Model
  • 20. Blog - shawnhooper.ca
 Twitter - @shawnhooper All Users/Clients Share One Database Self-Service: Easy - Just Add Database Records Scalability: Limited by storage & system resources Code Complexity: Queries need to include client ID Security Concerns: Poorly written queries, single point of data breach. Multi-Tenancy Model
  • 21. Blog - shawnhooper.ca
 Twitter - @shawnhooper All Users/Clients Share One Database Upgrades: Easy! One copy of the database to perform migrations on. Also means everyone gets upgraded at the same time. Multi-Tenancy Model
  • 22. Blog - shawnhooper.ca
 Twitter - @shawnhooper All Users/Clients Share One Database Customization: Extensions or custom features available to all clients. Potential for more bugs to reach all users. Multi-Tenancy Model
  • 23. Blog - shawnhooper.ca
 Twitter - @shawnhooper All Users/Clients Share One Database Data Storage: All data lives in the same place. This needs to be a consideration for where, geographically, you’ll store your data. Multi-Tenancy Model
  • 24. Blog - shawnhooper.ca
 Twitter - @shawnhooper All Users/Clients Share One Database “Oversight Accounts”: For our resellers (consultants) and support staff, this model made it easy to create dashboards that could look at the activity of many tenants at the same time. Multi-Tenancy Model
  • 25. Blog - shawnhooper.ca
 Twitter - @shawnhooper Single Tenant Model
  • 26. Blog - shawnhooper.ca
 Twitter - @shawnhooper Separate Database or Schema For Each Tenant Single Tenant Model
  • 27. Blog - shawnhooper.ca
 Twitter - @shawnhooper Tenant 1 Tenant 2 Tenant 3
  • 28. Blog - shawnhooper.ca
 Twitter - @shawnhooper Separate Database or Schema For Each Tenant Self-Service: More difficult. Requires the system to be able to create a new database schema or database when a user signs up for your service. Single Tenant Model
  • 29. Blog - shawnhooper.ca
 Twitter - @shawnhooper Separate Database or Schema For Each Tenant Scalability: Imbalance of server resources Some users taking up more than their “share” Single Tenant Model
  • 30. Blog - shawnhooper.ca
 Twitter - @shawnhooper Separate Database or Schema For Each Tenant Scalability: This can be an advantage too. It gives you the ability to move databases between servers to balance load. You can even distribute based on geography for data storage. Single Tenant Model
  • 31. Blog - shawnhooper.ca
 Twitter - @shawnhooper Separate Database or Schema For Each Tenant Security: 
 Data Separation! Excellent! Single Tenant Model
  • 32. Blog - shawnhooper.ca
 Twitter - @shawnhooper Separate Database or Schema For Each Tenant Code Complexity: 
 No need to include Tenant ID in every query. Instead, you need to manage connection strings. Single Tenant Model
  • 33. Blog - shawnhooper.ca
 Twitter - @shawnhooper Single Tenant Model
  • 34. Blog - shawnhooper.ca
 Twitter - @shawnhooper Single Tenant Model
  • 35. Blog - shawnhooper.ca
 Twitter - @shawnhooper Separate Database or Schema For Each Tenant Upgrades: 
 In this model, you could upgrade some tenants and not others to do a controlled release. Single Tenant Model
  • 36. Blog - shawnhooper.ca
 Twitter - @shawnhooper Separate Database or Schema For Each Tenant Customizations: 
 You could fork and/or provide add-ons only available to some tenants without an impact on other’s databases. Single Tenant Model
  • 37. Blog - shawnhooper.ca
 Twitter - @shawnhooper Separate Database or Schema For Each Tenant Data Migrations: 
 A benefit of this model is that you could easy backup/move one tenant. Example : Refresh Staging / Test Environment Single Tenant Model
  • 38. Blog - shawnhooper.ca
 Twitter - @shawnhooper Separate Database or Schema For Each Tenant Oversight Accounts: 
 Not a great model for the “oversight accounts”. Hard to build dashboards, aggregating data from multiple databases. Single Tenant Model
  • 39. Blog - shawnhooper.ca
 Twitter - @shawnhooper Micro Services Model
  • 40. Blog - shawnhooper.ca
 Twitter - @shawnhooper Databases Separated by Function Micro Services Model
  • 41. Blog - shawnhooper.ca
 Twitter - @shawnhooper Authentication Products Transactions
  • 42. Blog - shawnhooper.ca
 Twitter - @shawnhooper Databases Separated by Function This is much closer to the multi-tenant model we first explored. Micro Services Model
  • 43. Blog - shawnhooper.ca
 Twitter - @shawnhooper Databases Separated by Function Self-Service: You’re still just adding rows to tables, just in multiple databases. Micro Services Model
  • 44. Blog - shawnhooper.ca
 Twitter - @shawnhooper Databases Separated by Function Scalability: Assign more/less resources to the services that need them the most. Micro Services Model
  • 45. Blog - shawnhooper.ca
 Twitter - @shawnhooper Databases Separated by Function Security: You’ll be including the Tenant ID again. However, less data is stored in each service, limiting potential for loss in the event of a breach. Micro Services Model
  • 46. Blog - shawnhooper.ca
 Twitter - @shawnhooper Databases Separated by Function Code Complexity: Multiple Database Connections to Maintain (Multiple APIs too) Micro Services Model
  • 47. Blog - shawnhooper.ca
 Twitter - @shawnhooper Databases Separated by Function Code Complexity: Lack of Referential Integrity between services. Micro Services Model
  • 48. Blog - shawnhooper.ca
 Twitter - @shawnhooper Databases Separated by Function Code Complexity: Lots of traffic between services! Micro Services Model
  • 49. Blog - shawnhooper.ca
 Twitter - @shawnhooper Databases Separated by Function Customization: Bolting new features onto your application may be adding a new micro-service. Micro Services Model
  • 50. Blog - shawnhooper.ca
 Twitter - @shawnhooper We looked at: * Multi Tenancy * Single Tenancy * Micro Service Models We’ll Look At
  • 54. Blog - shawnhooper.ca
 Twitter - @shawnhooper So…. what’s the answer?
  • 55. Blog - shawnhooper.ca
 Twitter - @shawnhooper What did we do ? Actionable Conversations
  • 56. Blog - shawnhooper.ca
 Twitter - @shawnhooper Multi-Tenant Model * Easy Scalability 
 * Support for Oversight Accounts (Consultants / Resellers ) * Allowed users to be part of multiple tenants with one account Downside: We had to pick one geography in which to store data. Actionable Conversations
  • 57. Blog - shawnhooper.ca
 Twitter - @shawnhooper Micro-Services Model One service to handle the “Common” parts of the system: User Accounts Partner Profiles (Consultants) Wholesale Pricing and Sales Lists - ex: countries, industries, etc. Actionable Conversations
  • 58. Blog - shawnhooper.ca
 Twitter - @shawnhooper Micro-Services Model One service to handle the “Tenants” parts of the system: Memberships Conversations Run Feedback & Check-Ins Credit Usage / Purchase History Actionable Conversations
  • 59. Blog - shawnhooper.ca
 Twitter - @shawnhooper Micro-Services Model One service to handle the “Notifications” parts of the system: E-Mail & SMS Message Schedules, Queues and Logs Actionable Conversations
  • 60. Blog - shawnhooper.ca
 Twitter - @shawnhooper Micro-Services Model One service to handle the “Content” parts of the system: Why re-invent the wheel? We used WordPress, connected with a REST API. Actionable Conversations
  • 61. Blog - shawnhooper.ca
 Twitter - @shawnhooper Hosting RDS Instance with Amazon Web Services. Allowed for scaling as the platform grows. Actionable Conversations
  • 62. Blog - shawnhooper.ca
 Twitter - @shawnhooper API We built the application using API First methodology using the Loopback Framework & Strongloop. Actionable Conversations
  • 63. Blog - shawnhooper.ca
 Twitter - @shawnhooper Actionable Conversations
  • 64. Blog - shawnhooper.ca
 Twitter - @shawnhooper A new platform that allowed clients to use the “Actionable” method to deliver their own onboarding programs. Duplicates the application & database using the same Multi-Tenant Model with only one tenant in it. Actionable Training
  • 66. Blog - shawnhooper.ca
 Twitter - @shawnhooper shawn@actionable.co Slides will be available shortly at shawnhooper.ca Questions? Tweet @shawnhooper Thank You!