Designing cloud-only enterprise-grade solutions often poses a challenge: ensuring well known best practices, such as encapsulation and isolation, reusability and separation of concerns, but also standardizing infrastructure-layer tasks such as impersonification, logging and error handling across different cloud business blocks and different technologies, is very different from the way this has been done in the past. This session will be a practical walk-through implementing a Domain Driven Design pattern based reference architecture, using different Azure services and Office 365 data in creating a scalable and robust enterprise-grade cloud solution.
3. Adis Jugo
Microsoft MVP Office Apps and Services
Microsoft MVP Office Development
In IT for way too long (first money earned with development in 91)
Still dreaming of a restaurant or a vineyard
Director of Product Technology at skybow AG
Mastermind behind European Collaboration Summit (www.collabsummit.eu)
Born in Sarajevo, Bosnia, living in Bingen, Germany
Cheering for Borussia Dortmund
Blogger, speaker, author. adisjugo.com
4.
5. What is this session about?
• “Modern”
• Applied known, old, “unmodern” architecture patterns in “modern”
cloud solutions
• Focus on Office 365 and SharePoint Online
6. Why this session
• skybow Solution Studio Online
• SaaS offering
• 35000 users at the moment
• Challenges:
• Performance
• Scalability
• Robustness
• Identity, Authentication and Authorization
• Maintainability and operations
8. Not a new phenomenon
• Cobol
• …
• Windows Forms => Database
• PHP => MySQL
• “Classic” SharePoint development: Webparts talk to lists
• ...
• Modern web applications
• Model understood as DAL
• View understood as UI
• Controller understood as BL
16. What did we do
• MVC web part talks directly to datasource
• (SharePoint Online REST API)
• It works!
• No code reusability
•What are our options?
• Move the code for wine adding and calculation out
• Apply architecture
17. SP AnythingDATA SOURCES
FRONTEND SPFx Web Application Mobile …DaemonWindows
DATA ACCESS LAYER APP Service
BUSINESS LAYER
APP Service Azure Functions
DAEMONS AND
HANDLERS
Authentication Logging Caching Testing
WebJob /
AzureFunction
RER/Webhook
18. SP AnythingDATA SOURCES
FRONTEND SPFx Web Application Mobile …DaemonWindows
DATA ACCESS LAYER APP Service
BUSINESS LAYER
APP Service
WebJob /
AzureFunction
Azure Functions
DAEMONS AND
HANDLERS
Authentication Logging Caching Testing
APP ONLYDELEGATED
(IMPERSONIFICATION)
RER/Webhook
19. DEMO 2 – MOVING BL and DAL out
• Create an AAD Application
• App only vs. delegated permissions
• Certificate-based auth for App Only
• Using Azure Functions for BL layer
• Calling AF fro SPFx webparts
• Creating any other clients (web,
mobile native)
• Create a Bot which interacts with
your BL and adds Wine to SP Lists
22. Get to know your toolchain
• Azure Active Directory – Authentication
• JavaScript and Node.JS – web front end
• Azure Functions – Business Layer
• Azure APP Service – Business Layer, Data Access Layer
• Azure Application Insights – logging, monitoring
23. When to use what – AAD
• Authentication
• Authorization
• Application Management
• Application Capabilities
• Delegated (impersonation) vs AppOnly (Daemons)
24. When to use what – JavaScript and Node.JS
• User Interface - RIA
• Modern WebParts (when in SharePoint)
• Azure Functions (Business Logic)
• AAD secured Applications
25. When to use what – C#, .NET
• AAD secured Web Applications
• Azure Functions (Business Logic)
• Azure API Apps (BL, DAL)
26. When to use what – Azure Functions
• Lightweight BL scenarios
• Wrappers around APIs hosted in App Service
• Common scenario: Exposing parts of AAD-protected APIs as anonymous or
key-protected APIs
• Fast development, drawbacks in deployment, debugging and ALM
(DevOps)
• Limited debugging and tracing
• Plumbing less mature than in App Service
27. When to use what – Azure APP Service
• Business Layer, Data Access Layer
• Heavy-weight, reliable code
• Mature development and ALM cycles
• Use C#
• Good debugging and tracing
• Relatively easy plumbing
28. When to use what – Azure Application Insights
• Logging
• Monitoring
• Analysis
• Easy plumbing
29. Microsoft Cloud Design Patterns
• msdn.microsoft.com/en-us/library/dn568099.aspx
• Availability
• Data Management
• Design and Implementation
• Messaging
• Management and Monitoring
• Performance & Scalability
• Resiliency
• Security
30. Dino Esposito: Architecting Applications for Enterprise
• One of the best architecture books ever
• Practical applications of
• Domain Driven Design
31. THANK YOU!
• Series of blog posts at
• http://adisjugo.com
• http://blog.sharedove.com/adisjugo/index.php/2017/10/15/timerjob
s-in-sharepoint-online/
• @adisjugo
Notes de l'éditeur
VS 2013 with console
VS 2013 empty
VS 2012 with WP emulator
SP Designer
Microsoft Azure (IE)
Win Dev Portal (IE)
Dev site (Chrome)
VS 2013 with console
VS 2013 empty
VS 2012 with WP emulator
SP Designer
Microsoft Azure (IE)
Win Dev Portal (IE)
Dev site (Chrome)