1. Introduction
    1. A managed platform for deploying and scaling web apps.
  2. Types
    1. Web App
    2. Mobile Apps
      1. Azure Notification Hub
        1. Platform independent
      2. Offline sync
      3. Track
        1. Activities
        2. Crash reports
    3. Api apps
      1. CORS
        1. Level
          1. Code
          2. App Service
      2. Documentation
        1. Swagger
        2. OpenAPI
  3. App Service Plans
    1. Set of virtual server resources that run App Service apps
    2. A single App Service plan can host multiple App Service web apps
    3. Unit of billing apart from bandwidth
    4. Based on a current limitation, for the same resource group you cannot mix Windows and Linux apps in the same region.
    5. Types
      1. Shared
        1. No scale-out
        2. Shared by all customers
      2. Dedicated
        1. Only apps in the same App Service plan share the same compute resources
      3. Isolated
        1. Runs on dedicated Azure VMs on dedicated Azure virtual networks
        2. Network isolation
        3. Compute isolation
        4. When?
          1. Resource intensive apps
          2. Independant scaling
          3. Regional requirments
  4. Deployment
    1. CI/CD
      1. Git
        1. DevOps
        2. Github
        3. Bitbucket
        4. Etc..
      2. Storage
        1. Dropbox
        2. Onedrive
    2. Manual
      1. Git
        1. App service as a remote repository
        2. Kudu - Kudu is the platform is in charge of the Git deployments in Azure app service
      2. az webapp up
        1. Packages the app and deploys
        2. Creates a new instance if not exist
      3. FTP/S
      4. IDE
        1. Visual Studio
        2. Visual Code
      5. ZIP or WAR
        1. az webapp deployment source config-zip
        2. REST APIs
    3. ARM
  5. Scaling
    1. Why
      1. remain responsive during high demand
      2. reducing the resources in low demand and save money
    2. Types
      1. Per-app Scaling
        1. Scaling an app independently from the App Service plan that hosts it
        2. ARM
        3. Powershell
      2. Automatic
        1. Rules
          1. Thresholds
        2. Schedule
      3. Manual
    3. Scale In - Out
      1. Number of Instances
    4. Scale up - Down
      1. Changing the pricing tier and hardware level
      2. Service interruption
    5. Scaling history can be seen in the Run history
    6. Can be disabled
    7. A resource can have only one autoscale setting
    8. Profiles
      1. Fixed Date
      2. Recurring
      3. Always
    9. Add Scale condition then scale rule
  6. Diagnostic Logging
    1. Web Server
      1. Detailed error
      2. Failed requests
      3. Web server logs
        1. Http requests
    2. Application diagnostics
      1. Logs from code
    3. Deployment diagnostics
      1. Auto enabled
    4. Streaming logs
      1. az webapp log tail --resource-group --name
    5. Application Insights
    6. Log file Locations
      1. Application
        1. Application generated
      2. Detailed Errors
        1. Web server logs
      3. HTTP
        1. Web server logs
      4. W3SVC--
        1. Failed HTTP requests
  7. Security
    1. SSL
      1. Import
        1. keyvault
      2. Upload
      3. App Service managed certificates
        1. Free
          1. No Wildcard
          2. No naked domains
          3. Cannot export
          4. No DNS-A records
        2. Paid
  8. Configuration
    1. General Settings
      1. Framework Verson
      2. Platform 32 / 64
      3. Web Sockets
      4. Always On
      5. manual Pipeline version
      6. Http version
      7. Auto Swap
      8. Debugging
    2. App Settings
    3. Connection strings
    4. Default documents
    5. Path Mapping
  9. Deployment Slots
    1. Each slot is a separate instance of the web app
    2. You can deploy a different version of your web app into each slot
    3. Swapping
      1. App is never exposed to the public web in a partially deployed state
      2. Can avoid cold stars by warning up
      3. Slot settings can be used to override default settings
      4. Types
        1. Swap with preview
          1. Phase 1
          2. Slot settings from the target slot are applied to the we app in the source slot
          3. Warms up the source slot with new target settings
          4. Can be tested before finalizing
          5. Phase 2
          6. Host names are swapped
          7. Phase 3
          8. Target host settings are applied to the target
        2. Auto
          1. Can't test the new app version in the staging slot before the swap
          2. Azure automatically swaps it whenever you push code or content
          3. Rollback
          4. This option is only available on slots other than the production slot
      5. Instantaneous
    4. Slots
      1. Production
      2. User created slot
      3. Each slot shares the resources of the App Service plan
        1. Free, Basic, Shared - No slots
        2. Standard - 5 slots
        3. Premium, Isolated - 20 slots
  10. Chathuranga Sandun Kumara