Back to
architecture!
Adis Jugo
Slide 3
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 Ćevapi restaurant or a vineyard
Director of Product Technology at skybow AG
Born in Sarajevo, B&H, living in Bingen, Germany
Blogger, speaker, author. adisjugo.com
What is this session about?
• No-architecture mantra
• Applied architecture in cloud solutions
• Focus on Office 365 and SharePoint Online
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
 Performance
 Scalability
 Robustness and scalability
 Auth, Identity
 Maintainability and operations
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
SharePoint Framework
Applying DDD to enterprise-oriented Microsoft
Cloud (Azure, Office 365…) solutions
1990es: Domain Driven Design
Danger of over-architecting
SP AnythingBACKEND
SP AnythingBACKEND
FRONTEND SPFx
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
SP AnythingDATA SOURCES
FRONTEND SPFx Web Application Mobile …DaemonWindows
DATA ACCESS LAYER API Apps
BUSINESS LAYER
API Apps
Webhooks
Azure Functions
DAEMONS AND
HANDLERS
Azure Functions
Authentication Logging Caching Testing
SP AnythingDATA SOURCES
FRONTEND SPFx Web Application Mobile …DaemonWindows
DATA ACCESS LAYER API Apps
BUSINESS LAYER
API Apps
Webhooks
Azure Functions
DAEMONS AND
HANDLERS
Azure Functions
Authentication Logging Caching Testing
APP ONLYDELEGATED
(IMPERSONIFICATION)
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
AAD Application Scenarios
Microsoft Application Architecture Guide
https://msdn.microsoft.com/e
n-us/library/ff650706.aspx
Get to know your toolchain
• Azure Active Directory – Authentication
• JavaScript and Node.JS – front end
• Azure Functions – Business Layer
• Azure API Apps – BL, DAL
• Azure Application Insights – logging, monitoring
When to use what – AAD
• Authentication
• Authorization
• Application Management
• Application Capabilities
• Delegated (impersonation) vs AppOnly (Daemons)
When to use what – JavaScript and Node.JS
• User Interface - RIA
• Modern WebParts (when in SharePoint)
• Azure Functions (Business Logic)
• AAD secured Applications
When to use what – C#, .NET
• AAD secured Web Applications
• Azure Functions (Business Logic)
• Azure API Apps (BL, DAL)
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
When to use what – Azure API Apps
• Business Layer, Data Access Layer
• Heavy-weight, reliable code
• Mature development cycle
• Use C#
• Good debugging and tracing
• Relatively easy plumbing
When to use what – Azure Application Insights
• Logging
• Monitoring
• Analysis
• Easy plumbing
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
Dino Esposito: Architecting Applications for
Enterprise
• One of the best architecture books ever
• Practical applications of
• Domain Driven Design
Plumbing is not easy (yet)
• Series of blog posts at
• http://adisjugo.com
• http://blog.sharedove.com/adisjugo/index.php/2017/10/15/timerjo
bs-in-sharepoint-online/
• @adisjugo
Thank you. Questions?

SPUnite17 Creating Scalable Cloud Solutions

  • 1.
  • 3.
    Slide 3 Adis Jugo MicrosoftMVP 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 Ćevapi restaurant or a vineyard Director of Product Technology at skybow AG Born in Sarajevo, B&H, living in Bingen, Germany Blogger, speaker, author. adisjugo.com
  • 4.
    What is thissession about? • No-architecture mantra • Applied architecture in cloud solutions • Focus on Office 365 and SharePoint Online
  • 5.
    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
  • 6.
     Performance  Scalability Robustness and scalability  Auth, Identity  Maintainability and operations
  • 8.
    Not a newphenomenon • 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
  • 10.
  • 11.
    Applying DDD toenterprise-oriented Microsoft Cloud (Azure, Office 365…) solutions
  • 12.
    1990es: Domain DrivenDesign Danger of over-architecting
  • 13.
  • 14.
  • 15.
    What did wedo • 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
  • 16.
    SP AnythingDATA SOURCES FRONTENDSPFx Web Application Mobile …DaemonWindows DATA ACCESS LAYER API Apps BUSINESS LAYER API Apps Webhooks Azure Functions DAEMONS AND HANDLERS Azure Functions Authentication Logging Caching Testing
  • 17.
    SP AnythingDATA SOURCES FRONTENDSPFx Web Application Mobile …DaemonWindows DATA ACCESS LAYER API Apps BUSINESS LAYER API Apps Webhooks Azure Functions DAEMONS AND HANDLERS Azure Functions Authentication Logging Caching Testing APP ONLYDELEGATED (IMPERSONIFICATION)
  • 18.
    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
  • 19.
  • 20.
    Microsoft Application ArchitectureGuide https://msdn.microsoft.com/e n-us/library/ff650706.aspx
  • 21.
    Get to knowyour toolchain • Azure Active Directory – Authentication • JavaScript and Node.JS – front end • Azure Functions – Business Layer • Azure API Apps – BL, DAL • Azure Application Insights – logging, monitoring
  • 22.
    When to usewhat – AAD • Authentication • Authorization • Application Management • Application Capabilities • Delegated (impersonation) vs AppOnly (Daemons)
  • 23.
    When to usewhat – JavaScript and Node.JS • User Interface - RIA • Modern WebParts (when in SharePoint) • Azure Functions (Business Logic) • AAD secured Applications
  • 24.
    When to usewhat – C#, .NET • AAD secured Web Applications • Azure Functions (Business Logic) • Azure API Apps (BL, DAL)
  • 25.
    When to usewhat – 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
  • 26.
    When to usewhat – Azure API Apps • Business Layer, Data Access Layer • Heavy-weight, reliable code • Mature development cycle • Use C# • Good debugging and tracing • Relatively easy plumbing
  • 27.
    When to usewhat – Azure Application Insights • Logging • Monitoring • Analysis • Easy plumbing
  • 28.
    Microsoft Cloud DesignPatterns • msdn.microsoft.com/en-us/library/dn568099.aspx • Availability • Data Management • Design and Implementation • Messaging • Management and Monitoring • Performance & Scalability • Resiliency • Security
  • 29.
    Dino Esposito: ArchitectingApplications for Enterprise • One of the best architecture books ever • Practical applications of • Domain Driven Design
  • 30.
    Plumbing is noteasy (yet) • Series of blog posts at • http://adisjugo.com • http://blog.sharedove.com/adisjugo/index.php/2017/10/15/timerjo bs-in-sharepoint-online/ • @adisjugo
  • 31.