SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Top 7 Mistakes
when Building Scalable SharePoint
Applications
Talbott Crowell
ThirdM.com
@talbott
http://www.freeimages.com/photo/858598
Mistake #1
Conflating Performance and
Scalability
Terminology
Performance
Behavior and response time for a single
user or multiple users under load
Scalability
Behavior and response time for a
growing number of users and volume
under load
Performance
A Lamborghini
performs well
Ferrari is a high
performance vehicle
http://www.freeimages.com/photo/46549
Scalability
A Greyhound bus performs even better than a Ferrari
when transporting 100 passengers from Boston to San Francisco
https://www.greyhound.com
Example
• The application is built on developer machines and performs
great (single user)
• The application is tested by the QA (quality assurance) team,
and they find the performance great (single user)
• The application gets deployed into a pilot group of 10
people, the application is still fine because the 10 people
don’t use it simultaneously (still effectively single user)
• The application is launched and thousands of users start
using it and concurrency issues arise
Solution
• Add load testing to your SDLC (software
development lifecycle)
• The earlier the better
• Many large Fortune 500 companies have a
mandatory stage in their SDLC for volume testing
• Adding it into a continuous integration environment
is even better
• Better catch it early than right before scheduled
deployment to production
Mitigation
• Strategic
• Make sure scalability goals are set
early on
• Build scalabilty goals into your
SDLC
• Tactical
• Testing tools
Mistake #2
Using SharePoint lists as an
OLTP database
Solution Architecture
• SharePoint stores data in lists
• Lists are abstractions that are
physically represented as records
in the content database
• If you are building an application
in SharePoint, consider the options
in storing the data in its own
database
SQL
Design for the Future
Office 365 standard design for
Provider Hosted Apps is to use a
custom SQL database for your
application purposes and to write
back to SharePoint lists only when
needed
SharePoint 2013 Provider Hosted
• Custom Database
• ASP.NET development model
• Connect to SharePoint using CSOM
• Required security token and framework
Mitigation
• Strategic
• Education on SharePoint Provider
Hosteted Apps
• Tactical
• Build POC’s
• Make sure custom DB’s are
considered when laying out
architecture
Mistake #3
Iterating through SPList
Don’t loop through Lists
• Instead use a CAML Query
• SPQuery properties:
• Query
• RowLimit
• ViewFields
Demo
Mitigation
• Strategic
• Add volume testing to all stages of
SDLC
• Tactical
• Code reviews
• Education
Mistake #4
Forgetting about Caching
Types of Caching
• BLOB caching
• Page output cache profiles
• Object cache
• Anonymous search results cache
• Custom code: ASP.NET cache
Caching Consideratins
• What can be cached
• What is heavily used
• What takes up the most time
• How long can you cache those items
Multi-server Farm
Considerations
• If you implement custom ASP.NET
caching, and need to “clear” the
cache
• Make sure there if the same user
hits another server it doesn’t still
have data cached
Mitigation
• Strategic
• Make sure caching is part of the
SDLC
• Tactical
• Evaluate different caching
mechanisms
Mistake #5
Failing to estimate and test
for concurrent user load
Estimate User Load
• Document Most Common Use
Cases
• Weight each Use Case in percentage
• Determine Peak User Count
• Run load tests on use cases
weighted by percentage
When should load test be run?
• Answer: the earlier the better
• Waterfall:
Requirements, Design, Develop, Functional Testing,
Load Testing (sometimes too late), Production
• Agile: build load test into
continuous integration
Test Cases
Know BEFORE you start designing, even
before you are laying out the solution
architecture what a real world scenario
will look like
1. Use cases
2. Number of users
3. Volume of data
Mitigation
• Strategic
• Make load and scalability part of the
vision or mission statement for each
project
• Tactical
• Keep a catalog of non-functional
requirements
• Add this to the checklist so every
project requires load estimates
Mistake #6
Failing to account for data
growth
Volume of Data
• Application might perform just fine with one
to ten Purchase Orders, but what happens
when there are hundreds of thousands?
• Know your target volume
• Simulate that volume using scripts
• Make sure at every step of the way,
volume is considered:
• envisioning, designing, implementing,
testing…
Estimate Volume of Data
• After you design your solution
estimate what the volume might
look like after a year
• Load a year’s worth of dummy data
• Use PowerShell or C# code
• Make sure developer, testers, and
pilot users have volume pre-loaded
Mitigation
• Strategic
• Make load and scalability part of the
vision or mission statement for each
project
• Tactical
• Keep a catalog of non-functional
requirements
• Add this to the checklist so every
project requires load estimates
Mistake #7
Not Leveraging Search
Search is very scalable
• Very fast response for indexed data
• Tune your crawls, best bets,
managed properties
• Not fast for immediate feedback
• Not right solution for all situations
• Crawls can sometime take
hours/days
Mitigation
• Strategic
• Increase awareness
• Tactical
• POC some functionality leveraging
search
• Make sure to understand indexing
and volume time
Final Tip:
Know SharePoint Limitations
• Web Applications per farm
• Site Collections per Web App
• Sites per Collection
• Lists per Site
• Items per List
• SharePoint Limitations
• http://bit.ly/limits2013
Review
1. Performance vs Scalabilty
2. SharePoint lists not always a good
substitute for transactional database
3. For each item in SPList vs CAML Query
4. Caching (many flavors)
5. Concurrent User Load
6. Data volume and growth
7. Make sure to leverage Search
Resources
• Office Dev Patterns and Practices on GitHub:
http://bit.ly/o365pnp
• Bit.ly Bundle:
https://bitly.com/bundles/talbott/2
• Blog:
http://talbottcrowell.wordpress.com/
• Twitter:
https://twitter.com/talbott
Talbott Crowell
ThirdM.com
@talbott

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

ECS19 - Katja Jokisalo - Modernize your Intranet
ECS19 - Katja Jokisalo - Modernize your IntranetECS19 - Katja Jokisalo - Modernize your Intranet
ECS19 - Katja Jokisalo - Modernize your Intranet
 
ecs19 - Bill Ayers - RE-USE YOUR SHAREPOINT FRAMEWORK SKILLZ TO BUILD OFFICE ...
ecs19 - Bill Ayers - RE-USE YOUR SHAREPOINT FRAMEWORK SKILLZ TO BUILD OFFICE ...ecs19 - Bill Ayers - RE-USE YOUR SHAREPOINT FRAMEWORK SKILLZ TO BUILD OFFICE ...
ecs19 - Bill Ayers - RE-USE YOUR SHAREPOINT FRAMEWORK SKILLZ TO BUILD OFFICE ...
 
Modern SharePoint, the Good, the Bad, and the Ugly
Modern SharePoint, the Good, the Bad, and the UglyModern SharePoint, the Good, the Bad, and the Ugly
Modern SharePoint, the Good, the Bad, and the Ugly
 
My First SharePoint Online PowerApp
My First SharePoint Online PowerAppMy First SharePoint Online PowerApp
My First SharePoint Online PowerApp
 
ECS19 - Vesa Juvonen - Getting Started With SharePoint Framework - Roadmap
ECS19 - Vesa Juvonen - Getting Started With SharePoint Framework - RoadmapECS19 - Vesa Juvonen - Getting Started With SharePoint Framework - Roadmap
ECS19 - Vesa Juvonen - Getting Started With SharePoint Framework - Roadmap
 
ECS19 - Robi Voncina - Upgrade to SharePoint 2019
ECS19 - Robi Voncina - Upgrade to SharePoint 2019ECS19 - Robi Voncina - Upgrade to SharePoint 2019
ECS19 - Robi Voncina - Upgrade to SharePoint 2019
 
Going with the Flow: Rationalizing the workflow options in SharePoint Online
Going with the Flow: Rationalizing the workflow options in SharePoint OnlineGoing with the Flow: Rationalizing the workflow options in SharePoint Online
Going with the Flow: Rationalizing the workflow options in SharePoint Online
 
ECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
ECS19 - Ahmad Najjar and Serge Luca - Power Platform TutorialECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
ECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
 
Share point development 101
Share point development 101Share point development 101
Share point development 101
 
ECS19 - John White - Unlock SharePoint’s Reporting Secrets
ECS19 - John White - Unlock SharePoint’s Reporting SecretsECS19 - John White - Unlock SharePoint’s Reporting Secrets
ECS19 - John White - Unlock SharePoint’s Reporting Secrets
 
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOpsECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
 
So you’re building an intranet
So you’re building an intranetSo you’re building an intranet
So you’re building an intranet
 
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClass
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClassECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClass
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClass
 
O365Con18 - Using ARM Templates to Deploy Solutions on Azure - Kevin Timmermann
O365Con18 - Using ARM Templates to Deploy Solutions on Azure - Kevin TimmermannO365Con18 - Using ARM Templates to Deploy Solutions on Azure - Kevin Timmermann
O365Con18 - Using ARM Templates to Deploy Solutions on Azure - Kevin Timmermann
 
ECS 19 - Chris O'Brien - The hit list - Office 365 dev techniques you should ...
ECS 19 - Chris O'Brien - The hit list - Office 365 dev techniques you should ...ECS 19 - Chris O'Brien - The hit list - Office 365 dev techniques you should ...
ECS 19 - Chris O'Brien - The hit list - Office 365 dev techniques you should ...
 
Value of share point add ins
Value of share point add insValue of share point add ins
Value of share point add ins
 
Building a Microsoft Teams Provisioning Process using Power Apps & Power Auto...
Building a Microsoft Teams Provisioning Process using Power Apps & Power Auto...Building a Microsoft Teams Provisioning Process using Power Apps & Power Auto...
Building a Microsoft Teams Provisioning Process using Power Apps & Power Auto...
 
SharePoint Framework - Developer Preview
SharePoint Framework - Developer PreviewSharePoint Framework - Developer Preview
SharePoint Framework - Developer Preview
 
Chris O'Brien - Introduction to the SharePoint Framework for developers
Chris O'Brien - Introduction to the SharePoint Framework for developersChris O'Brien - Introduction to the SharePoint Framework for developers
Chris O'Brien - Introduction to the SharePoint Framework for developers
 
O365Con18 - Site Templates, Site Life Cycle Management and Modern SharePoint ...
O365Con18 - Site Templates, Site Life Cycle Management and Modern SharePoint ...O365Con18 - Site Templates, Site Life Cycle Management and Modern SharePoint ...
O365Con18 - Site Templates, Site Life Cycle Management and Modern SharePoint ...
 

Andere mochten auch

Andere mochten auch (18)

F# and functional programming
F# and functional programmingF# and functional programming
F# and functional programming
 
Practical F#
Practical F#Practical F#
Practical F#
 
SharePoint Saturday Boston 2010
SharePoint Saturday Boston 2010SharePoint Saturday Boston 2010
SharePoint Saturday Boston 2010
 
Deploying SharePoint 2013 on microsoft azure
Deploying SharePoint 2013 on microsoft azureDeploying SharePoint 2013 on microsoft azure
Deploying SharePoint 2013 on microsoft azure
 
Introduction to F#
Introduction to F#Introduction to F#
Introduction to F#
 
F# on the Web
F# on the WebF# on the Web
F# on the Web
 
Creazione Interiors™ - Designing Interiors Creatively (Brochure)
Creazione Interiors™ - Designing Interiors Creatively (Brochure) Creazione Interiors™ - Designing Interiors Creatively (Brochure)
Creazione Interiors™ - Designing Interiors Creatively (Brochure)
 
Setting Up SharePoint 2013 on Windows Azure Infrastructure as a Service - SPS...
Setting Up SharePoint 2013 on Windows Azure Infrastructure as a Service - SPS...Setting Up SharePoint 2013 on Windows Azure Infrastructure as a Service - SPS...
Setting Up SharePoint 2013 on Windows Azure Infrastructure as a Service - SPS...
 
A Business Perspective on Building SharePoint 2013 Solutions on Windows Azure
A Business Perspective on Building SharePoint 2013 Solutions on Windows AzureA Business Perspective on Building SharePoint 2013 Solutions on Windows Azure
A Business Perspective on Building SharePoint 2013 Solutions on Windows Azure
 
Joanne Motta: Aussies Love British Columbia
Joanne Motta:  Aussies Love British ColumbiaJoanne Motta:  Aussies Love British Columbia
Joanne Motta: Aussies Love British Columbia
 
Share point 2013 on azure
Share point 2013 on azureShare point 2013 on azure
Share point 2013 on azure
 
F# Eye for the C# Guy
F# Eye for the C# GuyF# Eye for the C# Guy
F# Eye for the C# Guy
 
SharePoint 2013 on Azure: Your Dedicated Farm in the Cloud
SharePoint 2013 on Azure: Your Dedicated Farm in the CloudSharePoint 2013 on Azure: Your Dedicated Farm in the Cloud
SharePoint 2013 on Azure: Your Dedicated Farm in the Cloud
 
Windows azure infrastructure services and share point 2013 farm case study
Windows azure infrastructure services and share point 2013 farm case studyWindows azure infrastructure services and share point 2013 farm case study
Windows azure infrastructure services and share point 2013 farm case study
 
Lessons from the Field: Setting up SharePoint on Azure
Lessons from the Field: Setting up SharePoint on AzureLessons from the Field: Setting up SharePoint on Azure
Lessons from the Field: Setting up SharePoint on Azure
 
Share point 2013 new and improved
Share point 2013 new and improvedShare point 2013 new and improved
Share point 2013 new and improved
 
Architecting Solutions for the Manycore Future
Architecting Solutions for the Manycore FutureArchitecting Solutions for the Manycore Future
Architecting Solutions for the Manycore Future
 
Webinar - Migrating Legacy On Premise Solutions to SharePoint Online and Wind...
Webinar - Migrating Legacy On Premise Solutions to SharePoint Online and Wind...Webinar - Migrating Legacy On Premise Solutions to SharePoint Online and Wind...
Webinar - Migrating Legacy On Premise Solutions to SharePoint Online and Wind...
 

Ähnlich wie Top 7 mistakes

Ähnlich wie Top 7 mistakes (20)

CodeIgniter for Startups, cicon2010
CodeIgniter for Startups, cicon2010CodeIgniter for Startups, cicon2010
CodeIgniter for Startups, cicon2010
 
Learn from my Mistakes - Building Better Solutions in SPFx
Learn from my  Mistakes - Building Better Solutions in SPFxLearn from my  Mistakes - Building Better Solutions in SPFx
Learn from my Mistakes - Building Better Solutions in SPFx
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management
 
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
 
Optimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best PracticesOptimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best Practices
 
Software development planning and essentials
Software development planning and essentialsSoftware development planning and essentials
Software development planning and essentials
 
Software development planning and essentials
Software development planning and essentialsSoftware development planning and essentials
Software development planning and essentials
 
Scaling Your Applications with Engine Yard Cloud
Scaling Your Applications with Engine Yard CloudScaling Your Applications with Engine Yard Cloud
Scaling Your Applications with Engine Yard Cloud
 
Performance Optimization of Cloud Based Applications by Peter Smith, ACL
Performance Optimization of Cloud Based Applications by Peter Smith, ACLPerformance Optimization of Cloud Based Applications by Peter Smith, ACL
Performance Optimization of Cloud Based Applications by Peter Smith, ACL
 
Minimum Viable Architecture - Good Enough is Good Enough
Minimum Viable Architecture - Good Enough is Good EnoughMinimum Viable Architecture - Good Enough is Good Enough
Minimum Viable Architecture - Good Enough is Good Enough
 
Measure and Increase Developer Productivity with Help of Serverless at Server...
Measure and Increase Developer Productivity with Help of Serverless at Server...Measure and Increase Developer Productivity with Help of Serverless at Server...
Measure and Increase Developer Productivity with Help of Serverless at Server...
 
Agile Methodology - Software Engineering
Agile Methodology - Software EngineeringAgile Methodology - Software Engineering
Agile Methodology - Software Engineering
 
Browser-Based Load Testing with Grafana K6
Browser-Based Load Testing with Grafana K6Browser-Based Load Testing with Grafana K6
Browser-Based Load Testing with Grafana K6
 
Architecting govCMS: Australian Government as a Service -
Architecting govCMS: Australian Government as a Service - Architecting govCMS: Australian Government as a Service -
Architecting govCMS: Australian Government as a Service -
 
Cloud Design Patterns - Hong Kong Codeaholics
Cloud Design Patterns - Hong Kong CodeaholicsCloud Design Patterns - Hong Kong Codeaholics
Cloud Design Patterns - Hong Kong Codeaholics
 
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...
 
Agile methodology and Scrum Framewwork
Agile methodology and Scrum FramewworkAgile methodology and Scrum Framewwork
Agile methodology and Scrum Framewwork
 
Load testing with Visual Studio and Azure - Andrew Siemer
Load testing with Visual Studio and Azure - Andrew SiemerLoad testing with Visual Studio and Azure - Andrew Siemer
Load testing with Visual Studio and Azure - Andrew Siemer
 
8 cloud design patterns you ought to know - Update Conference 2018
8 cloud design patterns you ought to know - Update Conference 20188 cloud design patterns you ought to know - Update Conference 2018
8 cloud design patterns you ought to know - Update Conference 2018
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty Details
 

Mehr von Talbott Crowell

PowerShell and SharePoint @spsnyc July 2012
PowerShell and SharePoint @spsnyc July 2012PowerShell and SharePoint @spsnyc July 2012
PowerShell and SharePoint @spsnyc July 2012
Talbott Crowell
 
Exploring SharePoint with F#
Exploring SharePoint with F#Exploring SharePoint with F#
Exploring SharePoint with F#
Talbott Crowell
 
Automating PowerShell with SharePoint
Automating PowerShell with SharePointAutomating PowerShell with SharePoint
Automating PowerShell with SharePoint
Talbott Crowell
 

Mehr von Talbott Crowell (9)

Developing a Provider Hosted SharePoint app
Developing a Provider Hosted SharePoint appDeveloping a Provider Hosted SharePoint app
Developing a Provider Hosted SharePoint app
 
Developing a provider hosted share point app
Developing a provider hosted share point appDeveloping a provider hosted share point app
Developing a provider hosted share point app
 
Introduction to F# 3.0
Introduction to F# 3.0Introduction to F# 3.0
Introduction to F# 3.0
 
PowerShell and SharePoint @spsnyc July 2012
PowerShell and SharePoint @spsnyc July 2012PowerShell and SharePoint @spsnyc July 2012
PowerShell and SharePoint @spsnyc July 2012
 
PowerShell and SharePoint
PowerShell and SharePointPowerShell and SharePoint
PowerShell and SharePoint
 
Welcome to windows 8
Welcome to windows 8Welcome to windows 8
Welcome to windows 8
 
Exploring SharePoint with F#
Exploring SharePoint with F#Exploring SharePoint with F#
Exploring SharePoint with F#
 
Automating PowerShell with SharePoint
Automating PowerShell with SharePointAutomating PowerShell with SharePoint
Automating PowerShell with SharePoint
 
F# And Silverlight
F# And SilverlightF# And Silverlight
F# And Silverlight
 

Kürzlich hochgeladen

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Kürzlich hochgeladen (20)

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 

Top 7 mistakes

  • 1. Top 7 Mistakes when Building Scalable SharePoint Applications Talbott Crowell ThirdM.com @talbott http://www.freeimages.com/photo/858598
  • 3. Terminology Performance Behavior and response time for a single user or multiple users under load Scalability Behavior and response time for a growing number of users and volume under load
  • 4. Performance A Lamborghini performs well Ferrari is a high performance vehicle http://www.freeimages.com/photo/46549
  • 5. Scalability A Greyhound bus performs even better than a Ferrari when transporting 100 passengers from Boston to San Francisco https://www.greyhound.com
  • 6. Example • The application is built on developer machines and performs great (single user) • The application is tested by the QA (quality assurance) team, and they find the performance great (single user) • The application gets deployed into a pilot group of 10 people, the application is still fine because the 10 people don’t use it simultaneously (still effectively single user) • The application is launched and thousands of users start using it and concurrency issues arise
  • 7. Solution • Add load testing to your SDLC (software development lifecycle) • The earlier the better • Many large Fortune 500 companies have a mandatory stage in their SDLC for volume testing • Adding it into a continuous integration environment is even better • Better catch it early than right before scheduled deployment to production
  • 8. Mitigation • Strategic • Make sure scalability goals are set early on • Build scalabilty goals into your SDLC • Tactical • Testing tools
  • 9. Mistake #2 Using SharePoint lists as an OLTP database
  • 10. Solution Architecture • SharePoint stores data in lists • Lists are abstractions that are physically represented as records in the content database • If you are building an application in SharePoint, consider the options in storing the data in its own database SQL
  • 11. Design for the Future Office 365 standard design for Provider Hosted Apps is to use a custom SQL database for your application purposes and to write back to SharePoint lists only when needed
  • 12. SharePoint 2013 Provider Hosted • Custom Database • ASP.NET development model • Connect to SharePoint using CSOM • Required security token and framework
  • 13. Mitigation • Strategic • Education on SharePoint Provider Hosteted Apps • Tactical • Build POC’s • Make sure custom DB’s are considered when laying out architecture
  • 15. Don’t loop through Lists • Instead use a CAML Query • SPQuery properties: • Query • RowLimit • ViewFields
  • 16. Demo
  • 17. Mitigation • Strategic • Add volume testing to all stages of SDLC • Tactical • Code reviews • Education
  • 19. Types of Caching • BLOB caching • Page output cache profiles • Object cache • Anonymous search results cache • Custom code: ASP.NET cache
  • 20. Caching Consideratins • What can be cached • What is heavily used • What takes up the most time • How long can you cache those items
  • 21. Multi-server Farm Considerations • If you implement custom ASP.NET caching, and need to “clear” the cache • Make sure there if the same user hits another server it doesn’t still have data cached
  • 22. Mitigation • Strategic • Make sure caching is part of the SDLC • Tactical • Evaluate different caching mechanisms
  • 23. Mistake #5 Failing to estimate and test for concurrent user load
  • 24. Estimate User Load • Document Most Common Use Cases • Weight each Use Case in percentage • Determine Peak User Count • Run load tests on use cases weighted by percentage
  • 25. When should load test be run? • Answer: the earlier the better • Waterfall: Requirements, Design, Develop, Functional Testing, Load Testing (sometimes too late), Production • Agile: build load test into continuous integration
  • 26. Test Cases Know BEFORE you start designing, even before you are laying out the solution architecture what a real world scenario will look like 1. Use cases 2. Number of users 3. Volume of data
  • 27. Mitigation • Strategic • Make load and scalability part of the vision or mission statement for each project • Tactical • Keep a catalog of non-functional requirements • Add this to the checklist so every project requires load estimates
  • 28. Mistake #6 Failing to account for data growth
  • 29. Volume of Data • Application might perform just fine with one to ten Purchase Orders, but what happens when there are hundreds of thousands? • Know your target volume • Simulate that volume using scripts • Make sure at every step of the way, volume is considered: • envisioning, designing, implementing, testing…
  • 30. Estimate Volume of Data • After you design your solution estimate what the volume might look like after a year • Load a year’s worth of dummy data • Use PowerShell or C# code • Make sure developer, testers, and pilot users have volume pre-loaded
  • 31. Mitigation • Strategic • Make load and scalability part of the vision or mission statement for each project • Tactical • Keep a catalog of non-functional requirements • Add this to the checklist so every project requires load estimates
  • 33. Search is very scalable • Very fast response for indexed data • Tune your crawls, best bets, managed properties • Not fast for immediate feedback • Not right solution for all situations • Crawls can sometime take hours/days
  • 34. Mitigation • Strategic • Increase awareness • Tactical • POC some functionality leveraging search • Make sure to understand indexing and volume time
  • 35. Final Tip: Know SharePoint Limitations • Web Applications per farm • Site Collections per Web App • Sites per Collection • Lists per Site • Items per List • SharePoint Limitations • http://bit.ly/limits2013
  • 36. Review 1. Performance vs Scalabilty 2. SharePoint lists not always a good substitute for transactional database 3. For each item in SPList vs CAML Query 4. Caching (many flavors) 5. Concurrent User Load 6. Data volume and growth 7. Make sure to leverage Search
  • 37. Resources • Office Dev Patterns and Practices on GitHub: http://bit.ly/o365pnp • Bit.ly Bundle: https://bitly.com/bundles/talbott/2 • Blog: http://talbottcrowell.wordpress.com/ • Twitter: https://twitter.com/talbott Talbott Crowell ThirdM.com @talbott