Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

CHRIS AYERS AZURE / DEVOPS CONSULTANT [email protected] Twitter: @Chris_L_Ayers linkedin.com/in/chris-l-ayers/ Blog: https://chrislayers.com/ Github: https://github.com/Codebytes

Slide 3

Slide 3 text

WHAT IS DEVOPS?

Slide 4

Slide 4 text

DevOps is the union Of people, process, and products to enable continuous delivery of value to our end users. -Donovan Brown

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

LET’S SHIFT LEFT ON DEVOPS

Slide 9

Slide 9 text

WHAT IS SHIFT LEFT?

Slide 10

Slide 10 text

WATERFALL DEVELOPMENT Requirement Gathering and analysis System Design Implementation Integration and Testing Deployment of system Maintenance

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

WHAT ARE WE GOING TO SHIFT LEFT? Health Monitoring Observability Feature Flags Configuration and Secrets API Versioning API Documentation

Slide 15

Slide 15 text

HEALTH MONITORING

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

HISTORICAL STATUS

Slide 18

Slide 18 text

MULTIPLE SERVICES

Slide 19

Slide 19 text

SAMPLE HEALTHCHECK

Slide 20

Slide 20 text

OBSERVABILITY

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

APPLICATION INISIGHTS

Slide 25

Slide 25 text

CUSTOM EVENTS AND METRICS

Slide 26

Slide 26 text

FEATURE FLAGS

Slide 27

Slide 27 text

WHY? Code separation Minimize disruption to customers Progressive rollouts A/B Testing Kill switch

Slide 28

Slide 28 text

FEATURE FLAGS - ITS JUST AN IF

Slide 29

Slide 29 text

MICROSOFT FEATURE MANAGEMENT

Slide 30

Slide 30 text

CONFIGURATION AND SECRETS

Slide 31

Slide 31 text

WHERE DO WE CONFIGURE OUR APPLICATION? Source code Web.config App.settings Database External System Release tool

Slide 32

Slide 32 text

KEY VAULT

Slide 33

Slide 33 text

KEYVAULT Secrets

Slide 34

Slide 34 text

API VERSIONING

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

SIMPLE OR COMPLEX

Slide 37

Slide 37 text

API DOCUMENTATION

Slide 38

Slide 38 text

OPENAPI (SWAGGER)

Slide 39

Slide 39 text

QUESTIONS?