42
Arquitecturas y posicionamiento s tecnológicos

Arquitecturas y posicionamientos tecnológicos

Embed Size (px)

DESCRIPTION

Sesión de #ArchitectureDay de Plain Concepts sobre arquitectura

Citation preview

Page 1: Arquitecturas y posicionamientos tecnológicos

Arquitecturas y posicionamientos tecnológicos

Page 2: Arquitecturas y posicionamientos tecnológicos

MADRIDGeneral Rodrigo 6Cuerpo alto, 1ª planta28003(+34) 915 346 836

BILBAONervión 36ª planta48001(+34) 946 008 168

SEATTLE1511 Third AvenueSuite 512WA 98101(+1) 206 708 1285

www.plainconcepts.com

MADRIDGeneral Rodrigo 6Cuerpo alto, 1ª planta28003(+34) 915 346 836

BILBAONervión 36ª planta48001(+34) 946 008 168

SEATTLE1511 Third AvenueSuite 512WA 98101(+1) 206 708 1285

www.plainconcepts.com

Page 3: Arquitecturas y posicionamientos tecnológicos

Introducción

http://geeks.ms/blogs/unai

[email protected]

¿Quíen soy? Unai Zorrilla Castro Development Lead en Plain Concepts Microsoft MVP ASP.NET Microsoft Data Insider

¿Expectativas? Hablar de “arquitectura” y posicionamiento tecnológico. Estado del arte en stack webs.

Page 4: Arquitecturas y posicionamientos tecnológicos

Arquitectura

?

Page 5: Arquitecturas y posicionamientos tecnológicos

Arquitectura y tecnología por necesidadesTecnologías y estilos

Prioridades de negocio

¿RADs vs arquitecturas desacopladas ?.

¿Data-driven vs Domain-Driven?.

¿Modern-apps vs Desktop applications?.

Short Time-to-market vs long-term investment.

Departmental vs misión crítica.

Atraer clients vs Ejecutar el negocio

Page 6: Arquitecturas y posicionamientos tecnológicos

Infrastructure services

Application services

Client software

Deployment environment

On Premises Private Cloud Public Cloud

ALM

& d

evelo

pm

ent to

ols

Browser

LightSwitch HTML5

HTML5+JavaScript

JavaScript Libs

Native mobile (Windows 8 and Windows Phone 8)

.NET/XAMLHTML5/WinJS

C++

Desktop

.NET WPF/

WinForms

Apps for Office

C++

Web presentation/UI services

LightSwitch server

ASP.NETWebForms

ASP.NETMVC & SPA

Services

LightSwitch OData

services

ASP.NET Web API (REST)

WCF Workflow services

Collaboration and portals

Apps for SharePoint

Full-trust SharePoint

Sites

SharePointServices

Custom application platform

Custom component

s

Entity models

CacheSecurity,

authorizationApp.

workflows

Messaging

Service-Bus Queues

Business products and platforms

Dynamics CRMDynamics AX/

NAV/GP/SL

Storage

FilesSQL

ServerNo SQL Big-Data

App/Web server

IIS (Web Server)

AppFabric

Identity & access

Authentication

Federation

Instrumentalization & monitor

System Center

Page 7: Arquitecturas y posicionamientos tecnológicos

Arquitectura y tecnología por necesidades

Small/medium Business-Applications

Large Mission criticalBusiness-Applications

Productividad | Fácil empezar Long-term | Core business.

AproximacionesData-driven development.

Simple approaches

Rapid development (RAD).

AproximacionesDomain-driven design o similar.

Arquitecturas desacopladas.

Long-term, mantenimiento evolutivo.

Page 8: Arquitecturas y posicionamientos tecnológicos

Categorizar aplicaciones o sub-sistemas???

Mission-Critical Application

Small-med size Application

Mission-Critical Core-BusinessSub-system

Subsistema colateral

Subsistema colateral

Subsistema colateral

Large compositeapplication

VS.

Page 9: Arquitecturas y posicionamientos tecnológicos

¿Data Driven?What is a Data-Driven Application?

Basicamente, CRUD application (CREATE, READ, UPDATE, DELETE).

El nivel de lógica de negocio es bajo ISSUES cuando evolucionamos a lógicas más complejas

CREATEREADUPDATEDELETE

Application

Conocimientode

los usuarios

Manual de procedimientosData-DrivenApplications

Page 10: Arquitecturas y posicionamientos tecnológicos

Cliente Desktop para LightSwitch projects• Solamente para data driven LOB applications.• Usa el mismo engine que el usado para LightSwitch HTML5 client.

LightSwitch

WPF (Windows Presentation Foundation)• La preferida para Windows-based desktop con complejidad de UI, customización de

estilos.• Mismas Skills que otros muchos productos conocidos, Store Apps, Silvelight, LakeView...• Capacidades de asincronía simplificadas .NET 4.5 (async/await).

Windows Forms• No necesitamos tantas necesidades de UI• Solución madura• Limita el camino de aprendizaje hacia Store apps, no está en el mismo path• Capacidades de asincronía simplificadas .NET 4.5 (async/await).

UI alternativaspara desktop applications (small/medium size)

WPF

Windows Forms

Page 11: Arquitecturas y posicionamientos tecnológicos

HTML5JavaScript

ASP.NET MVC con soporte HTML 5• Best-of-breed para Web apps. También con Mobile Features.• MVC ofrece un full HTML rendering control, y mucho majorers practices de desarrollo.• Motor de optimizaciones de búsqueda y RESTFul URLs son partes integrals de MVC.ASP.NET

MVC

Services

LightSwitch OData

Services

ASP.NET Web API (REST)

WCF (SOAP and Binary)

Workflow services

HTML5JavaScript

ASP.NET Web Forms y Web Pages con soporte HTML5• Úsalo si ya conoces web forms y quieres ir hacia nuevos caminos de desarrollo• HTML5: Junto a librerías como Modernizr y otras .• Usa CSS3.

ASP.NETWeb FormsWeb Pages

LightSwitch

LightSwitch y cliente HTML 5• Lo más sencillo para crear Web data-driven apps.• Acoplado end-to-end LightSwitch Web app. • Tenemos puntos de extensibilidad, pero es menos flexible que ASP.NETLightSwitch

LightSwitchHTML5 client

HTML5JavaScript

ASP.NET SPA (Single Page Application)• Úsala para la mayoria de las aplicaciones web modernas, altamente interactivas y con un

mínimo de recargas de servidor, generalmente HTML 5, CSS3.• SPA uso de mucho javascript como Angular JS, KnockoutJS y otrosASP.NET

SPA

(*) Best fit for an “easy to get started way” (initial productivity is the priority) in Data-Driven Apps.

(*) Best fit for a lower level approach and more control (future growth is the priority). SPA for the best web UX with no round-trips.

(*) Use Web-Forms if it is already familiar to you. It might also be easier if your experience is based on desktop apps development.

Page 12: Arquitecturas y posicionamientos tecnológicos

Demo

Page 13: Arquitecturas y posicionamientos tecnológicos

BOUNDED CONTEXT C

BOUNDED CONTEXT D

BOUNDED CONTEXT A

BOUNDED CONTEXT B

Unified UI—Visual aggregation

UI

DALDDD

Layered

CQRS Legacysystem

CRUD or data-drivenarchitecture

for simple tasks

DDD Layered architecture

for core-domain

CQRS for core-domain

Oldarchitecture

(legacy)

LARGE APPLICATION

BackgroundServer Tier

Web/app Tier

DatabaseTier

Integration Events Integration Events Integration Events Integration Events

Page 14: Arquitecturas y posicionamientos tecnológicos

S.O.L.I.D. principles.

Patterns of Enterprise Applications Architecture.

Martin Fowler.

Domain-driven design (DDD).

Eric Evans, Jimmy Nilsson, Vaughn Vernon, etc.

CQRS (Command and Query Responsibility Segregation).

Microsoft P&P ‘CQRS Journey,’ Greg Yound, Udi Dahan.

Event driven andEvent sourcing.

Greg Young, Martin Fowler, etc.

Decoupled architectures.

Use of Dependency Injection and IoC containersMicrosoft P&P Unity, MEF, Ninject, Castle Windsor, etc.

Behavior-driven design (BDD) and TDD.

Dan North, Chris Matts, etc.Frameworks: SpecFlow, Nspec, Cuke4Nuke, Nbehave, and MSpec.

• Single Responsibility principle.• Open/close principle.• Liskov substitution principle.• Interface segregation principle.• Dependency Inversion principle.

Page 15: Arquitecturas y posicionamientos tecnológicos

Demo

Page 16: Arquitecturas y posicionamientos tecnológicos

ApplicationModernization

Modern Times!

Page 17: Arquitecturas y posicionamientos tecnológicos

¿Quiénes somos?

Gorka Madariaga Núñez

@Gk_8

[email protected]

Xbox Developer & Ironman & NBA Freak

Adrián Fernández García

@tracker086

[email protected]

Xbox Developer & Full Time Geek & NFL Addict

Page 18: Arquitecturas y posicionamientos tecnológicos

¿Qué es una aplicación?

80’s y 90’s

.exe

2000

.exe

Hoy

Page 19: Arquitecturas y posicionamientos tecnológicos

Evolución

Servicios

Dispositivos

+

+Servidor

Cliente

Page 20: Arquitecturas y posicionamientos tecnológicos

¿Qué es una app moderna?

Page 21: Arquitecturas y posicionamientos tecnológicos

Características

Centradas en el usuarioPresencia y accesibilidad en distintos

dispositivosExperiencia de usuario unificada

SocialesPermitir interacción con compañero de

equipo, amigos, familiares, etc.

Centradas en los datosDatos, momento y formato adecuadosDatos compartidos en todo el ecosistema

Page 22: Arquitecturas y posicionamientos tecnológicos

Modelo de desarrolloDESARROLLO | MEDICIÓN | RETROSPECTIVA

DESARROLLO | MEDICIÓN | RETROSPECTIVA

Planificación Desarrollo FeedbackEntrega

CONTINUO

Page 23: Arquitecturas y posicionamientos tecnológicos

En apps tradicionales…

Page 24: Arquitecturas y posicionamientos tecnológicos

En apps modernas…

PlanificaciónREQUISITOS

BACKLOG

RELEASE

FeedbackDesarrollo

VERSION FUNCIONAL

Desarrollo

FeedbackAgile Portfolio Management

Team Room

Visual StudioTFS, Git, TFS+Git, Github, Bitbucket….NET 4.5, WinRT/WinJS, WinPRT, Windows Azure SDK…

Storyboarding, wireframes, pruebas de concepto…

Builds automatizadas

Colaboración

Scrum, CMMI, Kanban…Sistema de etiquetas (tags)

Entrega

Herramienta de feedback (VS+TFS)

Planes de pruebas, pruebas de carga en la nube como servicio…

Despliegues automatizados

Page 25: Arquitecturas y posicionamientos tecnológicos

Escenarios

Consumo Empresarial

Page 26: Arquitecturas y posicionamientos tecnológicos

Apps modernas empresariales

Cliente

Proveedor de servicios

WindowsAzure

1PLATAFORMACONSISTENTE

Multi-dispositivo

Ciclo de vida rápido

Cualquier tipo de datos y tamaño

Segura

Page 27: Arquitecturas y posicionamientos tecnológicos

Núcleo compartido

NetworkingProximityIn-App PurchaseSensorsLocationFile SystemCore app modelThreading

Page 28: Arquitecturas y posicionamientos tecnológicos

Patrón MVVM

Model

Lógica de negocio

ViewModel

Lógica de presentación

View

XAML

Data Binding

Commands

Notificaciones

Page 29: Arquitecturas y posicionamientos tecnológicos

Patrón MVVM (definición gráfica)MODELVIEWMODELVIEW

Page 30: Arquitecturas y posicionamientos tecnológicos

Portable Class Libraries

Un códigoUn proyectoUna librería

Múltiples plataformas!

Page 31: Arquitecturas y posicionamientos tecnológicos

Estructura básica

Portable Class Library

CoreViewModels

Servicios

Modelos

Windows 8Arranque de la app / Ciclo de

vidaVistas

Converters

ViewModels

Windows PhoneArranque de la app / Ciclo de vida

Vistas

Converters

ViewModels

Page 32: Arquitecturas y posicionamientos tecnológicos

Y si juntamos todo…

Visual Studio TFS

W8 WP

Desktop Web

Clientes

Mobile Services

Cloud Services Storage

Active Directory

DevBiz ITPro

Team

Storyboarding Feedback

Page 33: Arquitecturas y posicionamientos tecnológicos

¿One ASP.NET?

¿Os acordáis?La evolución hasta hoy

en dia¿Diferentes productos?

¿Cual selecciono?Web FormsWeb PagesMVCWeb APISignalR

Page 34: Arquitecturas y posicionamientos tecnológicos

One ASP.NET

¿Porqué elegir?No son imcompatiblesPodemos seleccionar

diversas piezas para un mismo proyecto o solución.

Page 35: Arquitecturas y posicionamientos tecnológicos

Demo

Page 36: Arquitecturas y posicionamientos tecnológicos

OWIN?????

OWIN = Open Web Interface for .NET Interfaz para comunicar servidores con

aplicaciones .netEspecificación en http://owin.org/

¿Qué intenta?Eliminar el acoplamiento actual del stack

web.No solo en codigo de framework y

ASP.NET sino también entre ASP.Net y la infraestructura- IIS.

Similar a Rack, para el mundo Ruby!

Page 37: Arquitecturas y posicionamientos tecnológicos

OWIN – KATANA ?????

¿Qué propone?Eliminar el acoplamiento actual del stack

web.No solo en codigo de framework y

ASP.NET sino también entre ASP.Net y la infraestructura- IIS.

IDictionary<string, object>

Page 38: Arquitecturas y posicionamientos tecnológicos

Owin-Katana

Key Name Value Description

"owin.RequestBody"

A Stream with the request body, if any. Stream.Null MAY be used as a placeholder if there is no request body. See Request Body.

"owin.RequestHeaders"An IDictionary<string, string[]> of request headers. See Headers.

"owin.RequestMethod"A string containing the HTTP request method of the request (e.g., "GET", "POST").

"owin.RequestPath"

A string containing the request path. The path MUST be relative to the "root" of the application delegate; see Paths.

"owin.RequestPathBase"

A string containing the portion of the request path corresponding to the "root" of the application delegate; see Paths.

"owin.RequestProtocol" A string containing the protocol name and version (e.g. "HTTP/1.0" or "HTTP/1.1").

"owin.RequestQueryString"

A string containing the query string component of the HTTP request URI, without the leading “?” (e.g., "foo=bar&baz=quux"). The value may be an empty string.

"owin.RequestScheme" A string containing the URI scheme used for the request (e.g., "http", "https"); see URI Scheme.

Func<IDictionary<string, object>, Task>

Page 39: Arquitecturas y posicionamientos tecnológicos

Katana???

Katana = Implementación de Owinhttp://

katanaproject.codeplex.com/documentation

Modelo OSSSoporte para frameworks como MVC,

SignalR, Web API

Page 40: Arquitecturas y posicionamientos tecnológicos

Demo

Page 41: Arquitecturas y posicionamientos tecnológicos

MADRIDGeneral Rodrigo 6Cuerpo alto, 1ª planta28003(+34) 915 346 836

BILBAONervión 36ª planta48001(+34) 946 008 168

SEATTLE1511 Third AvenueSuite 512WA 98101(+1) 206 708 1285

www.plainconcepts.com

MADRIDGeneral Rodrigo 6Cuerpo alto, 1ª planta28003(+34) 915 346 836

BILBAONervión 36ª planta48001(+34) 946 008 168

SEATTLE1511 Third AvenueSuite 512WA 98101(+1) 206 708 1285

www.plainconcepts.com

Page 42: Arquitecturas y posicionamientos tecnológicos

Q & A