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. Sponsor Raffle!!!
• Each sponsor stamp will opt you into sponsor raffle prize and mailings
• Collect 7 or more sponsor stamps on your Badge to be eligible for the
Xbox One X
• Hand entire Badge/ ribbon back into registration desk at end of day to
enter the prize draw
• Badges drawn at 5.15pm in Trinobantes (if you are drawn and do not
have the pre-requisite stamp/s….. You’ll lose!)
4. Social
• Tweet on #spscambridge OR #sqlsatcambridge
• We have Giant Jenga, Giant Connect 4, Giant Kerplunk and Sack races!
• Post event, join us for a SharePint/ SQLPint from our bar
• Don’t forget to thank Sponsors, Volunteers and Speakers!
• The event doors will close at 6.30pm
5. Adis Jugo
Microsoft MVP Office Development
Microsoft MVP Office Servers and Services
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
Blogger, speaker, author. adisjugo.com
6.
7. What is this session about?
• “Modern”
• Applied known, old, “unmodern” architecture patterns in “modern” cloud solutions
• Focus on Office 365 and SharePoint Online
8. 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
10. 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
18. 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
19. 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
20. 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
21. DEMO 2 – MOVING BL and DAL out
Create AAD Application
App only vs. delegated permissions
Certificates for app only
Azure Functions
Integrating AF into SPFx webparts
Other clients
24. Get to know your toolchain
• Azure Active Directory – Authentication
• JavaScript and Node.JS – front end
• Azure Functions – Business Layer
• Azure APP Service – BL, DAL
• Azure Application Insights – logging, monitoring
25. When to use what – AAD
• Authentication
• Authorization
• Application Management
• Application Capabilities
• Delegated (impersonation) vs AppOnly (Daemons)
26. When to use what – JavaScript and Node.JS
• User Interface - RIA
• Modern WebParts (when in SharePoint)
• Azure Functions (Business Logic)
• AAD secured Applications
27. When to use what – C#, .NET
• AAD secured Web Applications
• Azure Functions (Business Logic)
• Azure API Apps (BL, DAL)
28. When to use what – Azure Functions
• Lightweight BL
• wrappers around API Apps
• Fast development, drawbacks in development and ALM Cycle
• Limited debugging and tracing
• Plumbing less mature than in API Apps
29. When to use what – Azure APP
Service
• Business Layer, Data Access Layer
• Heavy-weight, reliable code
• Mature development cycle
• Use C#
• Good debugging and tracing
• Relatively easy plumbing
30. When to use what – Azure Application
Insights
• Logging
• Monitoring
• Analysis
• Easy plumbing
31. 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
32. Dino Esposito: Architecting Applications for
Enterprise
• One of the best architecture books ever
• Practical applications of
• Domain Driven Design
33. Plumbing is not easy (yet)
• Series of blog posts at
• http://adisjugo.com
• http://blog.sharedove.com/adisjugo/index.php/2017/10/15/timerjobs-in-sharepoint-online/
• @adisjugo