Upload
outsystems
View
662
Download
0
Embed Size (px)
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