our - decision tech · -dependency injection-tag helper-app engine “greenfield warfare”...

51

Upload: others

Post on 18-Aug-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”
Page 2: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”
Page 3: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

OUR

BRANDS

Page 4: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”
Page 5: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

TECHOUR

STACK

Page 6: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

decision.tech/vacancies

Page 7: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

Alex SloatDevelopment Manager@alexsloat

Page 8: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The March To Victory”

Page 9: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The March To Victory”Hopes

&

Dreams

VICTORY!

Page 10: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The March To Victory”2016 2018

NOW

“Greenfield Warfare”

Phone recycling platform

in .Net Core 1.1

“The Final Battle”

Dot Net Core in a

brown field project

2017

“There has to

be a better way”

.Net codebase

The status-quo

“The Recon Mission”

.NET on Google Cloud

Platform

“The mini

mutiny”

Third party vs

roll your own

“Logistics Unit”

Resilience in

underlinable

external services

“Secret

weapons”

- Webpack

- Dependency

injection

- Tag helper

- App Engine

Page 11: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The Recon Mission”

Running .NET in production

on Google Cloud Platform

Page 12: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The Recon Mission”The DecisionTech Stack 2016

Page 13: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

But can’t you run .net on a Linux server?

“The Recon Mission”

Page 14: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The Recon Mission”

Running .NET in production

on Google Cloud Platform

Page 15: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The March To Victory”2016 2018

NOW

“The Final Battle”

Dot Net Core in a

brown field project

2017

“Greenfield Warfare”

Phone recycling platform

in .Net Core 1.1

“There has to

be a better way”

.Net codebase

The status-quo

“The Recon Mission”

.NET on Google Cloud

Platform

“The mini

mutiny”

Third party vs

roll your own

“Logistics Unit”

Resilience in

underlinable

external services

“Secret

weapons”

- Webpack

- Dependency

injection

- Tag helper

- App Engine

Page 16: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“Greenfield Warfare”Greenfield project:

2017 Recycling PHP Rebuild

Page 17: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“Greenfield Warfare”The Enemy

Page 18: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“Greenfield Warfare”Introducing .NET Core to the Stack

Page 19: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“Logistics Unit”Resilience against underlinable external services

Page 20: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

MVC Application

Umbraco client

“Logistics Unit”Microservices

Raven client

Page 21: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

MVC Application

Content API Deals API

“Logistics Unit”Microservices

Page 22: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“Logistics Unit”

Resilience in underlinable external services

Page 23: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The Mini Mutiny”Open Source vs Roll-Your-Own

Page 24: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

MVC Application and APIs

CompareMyMobile.com SellMyMobile.com

“The Mini Mutiny”Open Source vs Roll-Your-Own

Page 25: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The Mini Mutiny”Multi-Tenancy with

Page 26: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The Mini Mutiny”Multi-Tenancy with

Page 27: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The Mini Mutiny”Multi-Tenancy with

Page 28: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The Mini Mutiny”

Open Source vs Roll-Your-Own

Page 29: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“Secret Weapons”

Page 30: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

• Ability to deal with all static assets

• Rich Plugins

• Multiple configuration support

“Secret Weapons”The battle for Faster pages

Page 31: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“Secret Weapons”The battle for Faster pages

Page 32: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“Secret Weapons”The battle for Faster pages

Page 33: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“Secret Weapons”Dependency Injection out of the Box

• Simplistic DI

• Razor View support

• SOLID code with little effort

Page 34: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“Secret Weapons”

public void ConfigureServices(IServiceCollection services){

services.AddTransient<IRepository, ActualRepository>();services.AddScoped<IRepository, ActualRepository>();services.AddSingleton<IRepository, ActualRepository>();

}

Dependency Injection out of the Box

Page 35: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“Secret Weapons”Tag Helpers

• Accessible for all developers

• Intelli-sense support

• Easy to reuse across a solution

Page 36: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“Secret Weapons”Tag Helpers

Page 37: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“Secret Weapons”DotNet Core and App Engine

Page 38: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“Secret Weapons”DotNet Core and App Engine

Page 39: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“Secret Weapons”DotNet Core and App Engine

Page 40: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“Greenfield Warfare”Victory!

Page 41: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The March To Victory”2016 2018

NOW

2017

“Greenfield Warfare”

Phone recycling platform

in .Net Core 1.1

“The Final Battle”

Dot Net Core in a

brown field project

“There has to

be a better way”

.Net codebase

The status-quo

“The Recon Mission”

.NET on Google Cloud

Platform

“The mini

mutiny”

Third party vs

roll your own

“Logistics Unit”

Resilience in

underlinable

external services

“Secret

weapons”

- Webpack

- Dependency

injection

- Tag helper

- App Engine

Page 42: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The Final Battle”Brownfield Project:

Migrating The Existing Full .NET Applicationto DotNet Core

Page 43: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The Final Battle”When two worlds collide

MVC Application

/guides

/news

/ask-our-expert

….

www.broadbandchoices.co.uk

Amazon

Route 53

Classic

Load

Balancer

EC2 Instances

Legacy .NET

Stack

Page 44: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

www.broadbandchoices.co.uk

Amazon

Route 53

Application

Load

Balancer

Classic

Load

Balancer

/guides

/news

/ask-our-expert

EC2 Instances

.NET Core Stack

Legacy .NET

StackDefault routes

“The Final Battle”When two worlds collide

Page 45: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The Final Battle”When two worlds collide

if (_siteConfig.Feature.Content != null){ app.UseContentApi();routes.UseContentRouting();

}

app.MapWhen(s => IsALegacyPath(s, serviceProvider, routes), builder => builder.UseMiddleware<ProxyMiddleware>(GetOptions()));

Amazon

Route 53

Application

Load

Balancer

Classic

Load

Balancer

EC2 Instances

.NET Core Stack

Legacy .NET

Stack

Page 46: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

• Feedback as you go

• Reduced risk

• Keeping delivery cadence

“The Final Battle”Advantages of the phased approach

Page 47: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

• Temporary technical debt

• Perceived slower progress

“The Final Battle”Disadvantages of the phased approach

Page 48: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

“The Final Battle”Migrating The Existing Full .NET Application

to DotNet Core

VICTORY!

Page 49: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

Learnings from .NET Core

• Flexible request processing pipelines

• Alpha or Beta software might be needed

• Contribute to the OSS community

• Does all your tooling

support .NET Core

• Don’t do a full rewrite

Page 50: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

Any Questions?

Page 51: OUR - Decision Tech · -Dependency injection-Tag helper-App Engine “Greenfield Warfare” Greenfield project: 2017 Recycling PHP Rebuild “Greenfield Warfare”

Thanks for coming

https://decision.tech/vacancies