Large Factories Lifetime Story: To Production and Beyond

Preview:

DESCRIPTION

Instructions for controlling your IT architecture when it starts to grow in size

Citation preview

Large factories LifeTime story

To production and beyond

Francisco Menezes Lúcio Ferrão

http://bit.ly/largefactories

www.outsystems.com

Life is perfect when you are small!

But with OutSystems you grow very fast

What happens when

your factory reaches…

10 Teams ≈ 50 Developers

500 eSpaces

1000 DB Tables

Don’t loose control …

… good parenting is a must!

Avoid long deployments …

… that don’t fit in any opportunity window!

Deploying one app …

… should not mess with other apps!

Prevent unforeseen impacts …

… to reduce costs and ease deployment prep!

1. Keep a sound architecture

Don’t loosen up…

layer applications without cyclic dependencies

Application 1 Application 2

X Core Service 1

Application 1 Application 2

Core Service 2

Infrastructure modules

Core Service 3

Don’t loosen up… 1. Keep a sound architecture

2. Promote ownership ???

Team B App B

Team A App A

Core App

Anyone changes… • Unexpected

impacts; • Uncontrolled

deployments of Applications.

Team B App B

Team A App A

Core App

Don’t loosen up… 1. Keep a sound architecture

2. Promote ownership Team Core A owner adds:

• Accountability; • Change control; • Code stability.

Don’t loosen up… 1. Keep a sound architecture 2. Promote ownership

3. Coordinate deployments by ≠ teams

Teams with different paces making Quality look like Development.

Dev Teams

Development Quality Production

Operations

Execute without control on impacts

Don’t loosen up… 1. Keep a sound architecture 2. Promote ownership

3. Coordinate deployments by ≠ teams

Development Quality Production

Dev Teams Operations

Don’t loosen up… 1. Keep a sound architecture 2. Promote ownership

3. Coordinate deployments by ≠ teams

Dev Teams

Development Quality Production

Release Manager Role

• Reduce risk • Faster and fewer deployments

Validate Deploy Consolidate Plan Consistency

Operations

Let the tools help you!

Development

Quality

Production

LifeTime Discovery tool

Configure your Infrastructure

Promote control and ownership

Release Manager

Operations

Release Manager

Operations

Promote control and ownership

Operations Users

Tag a version Got new version ready to QA. Can you deploy it?

Got it!

Impact analysis

What will happen if I deploy the requested version?

CRM Services version in QA will be incompatible!!!

Customer Portal Owner

What will happen if I deploy Customer Portal?

Now What???

CRM Services Team

Go ahead!

Scenario 1

Can I also push CRM Services 1.1 to QA?

Scenario 2

CRM Services Team

Not ready!

Great! I’ll deploy it along with Customer Portal

Customer Portal Team

Make it compatible with CRM Services 1.0

No problem!

Monitor environments consistency

We can’t have this !!!

1st Stage prepare work in advance

LifeTime 2-step deployment Deploy in a short deployment window

• Compile code • Generate SQL Script • Upload binaries to destination

• Update database

• Switch running versions

2nd Stage

short deployment window

How to compose LifeTime applications?

That will:

• Minimize impacts between applications

• Simplify deployments

• Cope with different paces

5 Steps for composing LifeTime applications

Recall Executive Store Manager Supplier Supplier Auditor Store Auditor

Product Services

Store Services Supplier Services

Look&Feel UI Patterns Goodies ERP

Connector

Backoffice Intranet Supplier portal

Recall Store Audit Supplier

Audit

No side dependencies

No upward dependencies

No cyclic dependencies

Step #1 Layer modules

Application composition Layered module architecture

Step #2 Layer applications w/o cycles

Application 1

Composite

App 1

Core

service A

Infrastruct.

service A

Core

service B

Infrastruct.

service B

Application 2

Composite

App 2

Core

service C

Infrastruct.

service C

Core

service D

Infrastruct.

service D

Composite

App 1

Core

service A

Core

service B

Infrastruct.

service A

Infrastruct.

service B

1st project

Composite

App 2

Core

service C

Infrastruct.

service C

Core

service D

Infrastruct.

service D

2nd project

3rd project

Application composition

Layered module architecture

Step #2 Layer applications w/o cycles

Composite

App 1

Core

service A

Core

service B

Infrastruct.

service A

Infrastruct.

service B

Composite

App 2

Core

service C

Infrastruct.

service C

Core

service D

Infrastruct.

service D

Application 1

Composite

App 1

Core

service A

Infrastruct.

service A

Common app

Core

service B

Infrastruct.

service B

Core

service C

Infrastruct.

service C

Application 2

Composite

App 2

Core

service D

Infrastruct.

service D

Unecessary impacts

Core components

Stable

module 2

New

module

Stable

module 1

App 1 App 2 App n … App 3

Young module with high change frequency

Step #3 Don’t mix change paces

New Service

New

molule

Core components

Stable

module 2

Stable

module 1

No longer affected

Split

App 1 App 2 App n … App 3

Step #3 Don’t mix change paces

Common application

Module 3 Module 1 Module 2

Owner 2 Owner 1

Who is responsible?

Step #4 Don’t mix owners

Owner 1

Application 1

New

molule

Owner 2

Application 2

Stable

module 2

Stable

module 1

Promote ownership

Split

Step #4 Don’t mix owners

Simulators Simulation

Portal

Engines Policies

… Auto

… Life

… Property

Different project dates

Step #5 Don’t mix business sponsors

Auto Business

Life Business

Property Business

Step #5 Don’t mix sponsors

Simulators Simulation

Portal

Core

Engines Policies

Property Suite

… Property

Life Suite

… Life

Auto Suite

… Auto

Each LOB can be deployed independently

Auto Business

Life Business

Property Business

#1 Validate layered architecture

#2 Find cycles

#3 Analyze application composition

Discovery tool can help!

Thank you!

Q?

A! &

http://bit.ly/largefactories www.outsystems.com