Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ASP.Net Core - Shift Left and Start Out Right

ASP.Net Core - Shift Left and Start Out Right

If you're starting an ASP.Net Core application, there are some great things you can add it to that will make your application incredible. Learn about Healthchecks, Versioning APIs, Feature flags, Swagger, and Key Vault. By embracing monitoring, configuration, and versioning from the start, we're going to shift left on DevOps to start your application out right.

Ed0195c951a51ca754ba19eb92a98e3f?s=128

Chris Ayers

October 19, 2019
Tweet

Transcript

  1. ASP.NET CORE SHIFT LEFT & START OUT RIGHT Chris Ayers

  2. CHRIS AYERS AZURE / DEVOPS CONSULTANT Chris.Ayers@NewSignature.com Twitter: @Chris_L_Ayers linkedin.com/in/chris-l-ayers/

    Blog: https://chrislayers.com/ Github: https://github.com/Codebytes
  3. WHAT IS DEVOPS?

  4. DevOps is the union Of people, process, and products to

    enable continuous delivery of value to our end users. -Donovan Brown
  5. None
  6. None
  7. PRACTICES Automated Testing Continuous Integration Continuous Deployment Release Management PRACTICES

    Usage Monitoring Telemetry Collection Testing in Production Stakeholder Feedback PRACTICES Testing in Production Usage Monitoring User Telemetry Stakeholder feedback Feature flags PRACTICES Code Reviews Automated Testing Continuous Measurement PRACTICES Application Performance Management Infrastructure as Code Continuous Delivery Release Management Configuration Management Automated Recovery PRACTICES Application Performance Management Infrastructure as Code Continuous Deployment Release Management Configuration Management Automated Recovery PRACTICES Enterprise Agile Continuous Integration Continuous Deployment Release Management FLOW OF CUSTOMER VALUE TEAM AUTONOMY & ENTERPRISE ALIGNMENT BACKLOG refined with LEARNING EVIDENCE gathered in PRODUCTION MANAGED TECHNICAL DEBT PRODUCTION FIRST MINDSET INFRASTRUCTURE is a FLEXIBLE RESOURCE DEVOPS HABITS AND PRACTICES
  8. LET’S SHIFT LEFT ON DEVOPS

  9. WHAT IS SHIFT LEFT?

  10. WATERFALL DEVELOPMENT Requirement Gathering and analysis System Design Implementation Integration

    and Testing Deployment of system Maintenance
  11. AGILE Features Sprint 1 More Features Sprint 2 Release to

    Dev Sprint 3 More Features Sprint 4 Release to QA Sprint 5 •MVP •Release to Prod Sprint 6
  12. None
  13. None
  14. WHAT ARE WE GOING TO SHIFT LEFT? Health Monitoring Observability

    Feature Flags Configuration and Secrets API Versioning API Documentation
  15. HEALTH MONITORING

  16. HEALTH MONITORING  Built into ASP.Net (as of version 2.2)

     Builtin Health probes  Custom Health checks  Readiness vs Liveness  Optional Healthcheck UI  System  Network  SqlServer  MongoD  Kubernetes  Npgsql  Elasticsearch  Redis  EventStore  AzureStorage  AzureServiceBus  AzureKeyVault  MySql  DocumentDb  SqLite  RavenDB  Consul  SignalR  Kafka  RabbitMQ  Uris  OpenIdConnectServer  DynamoDB  Oracle  Aws.S3  Hangfire  Gcp.CloudFirestore  Prometheus  Seq  ApplicationInsights  Datadog
  17. HISTORICAL STATUS

  18. MULTIPLE SERVICES

  19. SAMPLE HEALTHCHECK

  20. OBSERVABILITY

  21. OBSERVABILITY: A MEASURE OF HOW WELL INTERNAL STATES OF A

    SYSTEM CAN BE INFERRED FROM KNOWLEDGE OF ITS EXTERNAL OUTPUTS.  Monitoring  Logging  Tracing  Analytics  Alerting
  22. USER AND SESSION COUNTS PERFORMANCE COUNTERS HOST DIAGNOSTICS DIAGNOSTIC TRACE

    LOGS CUSTOM EVENTS AND METRICS REQUEST RATES, RESPONSE TIMES, AND FAILURE RATES DEPENDENCY RATES, RESPONSE TIMES, AND FAILURE RATES EXCEPTIONS PAGE VIEWS AND LOAD PERFORMANCE AJAX CALLS FROM WEB PAGES AZURE APPLICATION INSIGHTS
  23. None
  24. APPLICATION INISIGHTS

  25. CUSTOM EVENTS AND METRICS

  26. FEATURE FLAGS

  27. WHY? Code separation Minimize disruption to customers Progressive rollouts A/B

    Testing Kill switch
  28. FEATURE FLAGS - ITS JUST AN IF

  29. MICROSOFT FEATURE MANAGEMENT

  30. CONFIGURATION AND SECRETS

  31. WHERE DO WE CONFIGURE OUR APPLICATION? Source code Web.config App.settings

    Database External System Release tool
  32. KEY VAULT

  33. KEYVAULT Secrets

  34. API VERSIONING

  35. HOW DO YOU WANT TO VERSION? •/api/foo?api-version=1.0 •/api/foo?api-version=2.0-Alpha •/api/foo?api-version=2015-05-01.3.0 Query

    String Versioning •/api/v1/foo •/api/v2.0-Alpha/foo •/api/v2015-05-01.3.0/foo URL Path Versioning •accept: text/plain;v=1.0 •content-type: text/plain;v=2.0 Media Type Versioning HTTP Header Versioning
  36. SIMPLE OR COMPLEX

  37. API DOCUMENTATION

  38. OPENAPI (SWAGGER)

  39. QUESTIONS?