SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
‘Cloud Ready’ Design through
Application Software Infrastructure
Florin Coros
About me
Co-Founder
@florincoros
Partner & Co-Founder
blog.iquarc.com/florin
Outdated Enterprise Software
3
Enterprise Software
Old Technologies
Costly to maintain
and update
Re-Implement on a Modern Architecture
Legacy System
• High costs to update
• Shetty UX
• Outdated functionalities
• Not scalable, not reliable
Modern System
• Accessible everywhere
• Actual technologies
• Good maintainability
4
On-Premise or Cloud or Both?
5
Build and Operate for On-Premises
Deployable in Azure
Enable a gradual migration into the Cloud
Cloud migration does not require a
rewrite or reengineering
First phase use IaaS
Second phase use PaaS
Quality
Isolation
Separation
Build, Test and
Deploy for
On-Premises
only
Large and
Complex
System
Deployable on
Azure
Use PaaS
6
Source code dependencies can only
point inwards
• Nothing in an inner circle can know anything
at all about something in an outer circle
• Abstractions and application concepts are
independent of frameworks
• frameworks are used as tools, not to cram the
system into their limiting constraints
7
http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
Separate the core of the app from
the frameworks and the mechanisms
What did we already do?
8
Design
Envision
solutions
Setup rules
and practices
Managing
Complexity
Quality
Change
Separations
Abstraction &
Encapsulation
Explain &
Validate
Diagrams Prototypes
Importance of Managing Complexity
when projects do fail for reasons that are primarily
technical, the reason is often
uncontrolled complexity
9
Importance of Managing Complexity
Scalability
Availability
Multitenancy
Security
Authorization
App Infrastructure Enforces the Architecture
Application Infrastructure
The Application Foundation
Wrongly Built House
Different Solutions to the Same Problem
Which one is the ONE?
App Infrastructure – Primary TOOL to
Control Complexity and Size
How to do it?
Invest in Design and App. Infrastructure
Enforce consistency
Enforce structure
Focus on Modularity, Abstraction, Encapsulation
Independent
Modules
Hide the
frameworks
Manage Dependencies
Dependency
Injection
Discoverability
18
Good Design vs Bad Design
http://martinfowler.com/bliki/DesignStaminaHypothesis.html
iQuarc AppBoot Library
Lightweight library that handles the startup of an application
Implements
Separation of Construction
and Configuration from Use
Modularity
Defines and abstracts a
modular application
Makes the application
independent of the host
process
Dependencies Management
Dependency Injection
Enforces consistency in
declaring dependencies
Encourages good practices
Encourages separation
between data and behavior
20
iQuarc AppBoot: Modularity
<<Interface>>
IModule
+ Initialize()
Application
+ Initialize()
*
+ Modules[]
AppModule1
+ Initialize()
AppModule2
+ Initialize()
• Modular Application Support
• Application modules do not depend on
Frameworks
• Application can be hosted in any .NET process
iQuarcAppBoot
Application Hosted in Any .NET Process
• The application is not aware of the process it is
hosted in
• The application is isolated from framework specifics
• The host process is not aware of what modules it
hosts
• The host process is isolated from application logic
• Benefits:
• Flexible deployments
o same host can load different modules depending on
configuration
o Flexibility in development and testing
• Framework setup is separated from application setup
22
<<Attribute>>
ServiceAttribute
+ ServiceAttribute()
+ServiceAttribute(Type contract)
+ ServiceAttribute(Type t, Lifetime lifetime)
Bootstrapper
+Bootstrapper(Assembly[] assemblies)
+Run()
Application
+ Initialize()
iQuarcAppBoot
App Boot: Dependency Injection
<<Attribute>>
ServiceAttribute
+ ServiceAttribute()
+ServiceAttribute(Type contract)
+ ServiceAttribute(Type t, Lifetime lifetime)
Bootstrapper
+Bootstrapper(Assembly[] assemblies)
+Run()
• Makes Programming Against Interfaces the de
facto programming model
• Abstracts and hides the Dependency
Container
• Provides a maintainable mechanism for
declaring services implementation
• Dictates how Dependency Injection is used
iQuarcAppBoot
public IEnumerable<Policy> GetPolicyFromMutation(Mutation mut)
{
var policies = repository.GetEntities<PolicyImage>()
.Where(image => image.MutationId==mut.Id)
.Select(image => new Policy
{
Id = image.PolicyId,
ValidAt = image.Mutation.Date
//..
}).ToList();
// do other calculations / grouping on data
return policies;
}
public void CalculateChanges(ChangeEvent change)
{
using (var uof = repository.CreateUnitOfWork())
{
var policies = uof.GetEntities<PolicyImage>()
.Where(i => i.Status == ImageStatus.Calculating &&
. i.EvendId == change.Id);
foreach (PolicyImage image in policies)
{
image.Ammunt = GetAmmountFor(image, change);
}
uof.SaveChanges();
}
}
Encapsulate Data Access Concerns
<<Interface>>
IRepository
+GetEntities<T>() : IQueriable<T>
<<Interface>>
IUnitOfWork
+SaveChanges()
Database
Repository UnitOfWork
<<Stereotype>>
<<DTO>>
Plan
<<DTO>>
Contract
+CreateUnitOfWork() +GetEntities<T>():IQueriable<T>
iQuarcDataAccess
Isolate from external libraries
<<static class>>
Log
+LogError()
+LogWarining()
Exception Wrappers Decorators
<<Interface>>
API Interfaces
25
Application Infrastructure – Shaping to Context
.NET Framework
WF
WCF
WEB API
ASP.NET
Entity
Framework
. . . Unity
NServiceBus Log4Net
. . .
Application Infrastructure
Application Functionalities
When to do it?
cumulativefunctionality
time
completion
construction
ready
design payoff
When to do it?cumulativefunctionality
time
completion
construction
ready
design payoff
time
Arc
Arc
Infra
FunctionalityInfra
FunctionalityInfra
Functionality
Functionality
Functionality
Functionality
RepositoryImpl
+ GetEntities<T>() : IQueriable()
IRepository IUnitOfWork
+ SaveChanges()
IModule
<<Attribute>>
ServiceAttribute
iQuarc
Functionality
Thank You!
Florin Coros
Partner and Co-founder, iQuarc
florin.coros@iquarc.com
blog.iquarc.com/florin
@florincoros

Contenu connexe

Similaire à Cloud Ready Design through Application Software Infrastructure

We've Got Docker & Cloud, Now What?
We've Got Docker & Cloud, Now What? We've Got Docker & Cloud, Now What?
We've Got Docker & Cloud, Now What? XebiaLabs
 
Migrating to Microservices Patterns and Technologies (edition 2023)
 Migrating to Microservices Patterns and Technologies (edition 2023) Migrating to Microservices Patterns and Technologies (edition 2023)
Migrating to Microservices Patterns and Technologies (edition 2023)Ahmed Misbah
 
Cloud Foundry Technical Overview at IBM Interconnect 2016
Cloud Foundry Technical Overview at IBM Interconnect 2016Cloud Foundry Technical Overview at IBM Interconnect 2016
Cloud Foundry Technical Overview at IBM Interconnect 2016Stormy Peters
 
Cloud = Application Enablement and Innovation ≠ IaaS (Cloud Foundry Summit 2014)
Cloud = Application Enablement and Innovation ≠ IaaS (Cloud Foundry Summit 2014)Cloud = Application Enablement and Innovation ≠ IaaS (Cloud Foundry Summit 2014)
Cloud = Application Enablement and Innovation ≠ IaaS (Cloud Foundry Summit 2014)VMware Tanzu
 
Application Darwinism - Why Most Enterprise Apps Will Evolve to the Cloud
Application Darwinism - Why Most Enterprise Apps Will Evolve to the CloudApplication Darwinism - Why Most Enterprise Apps Will Evolve to the Cloud
Application Darwinism - Why Most Enterprise Apps Will Evolve to the CloudSkytap Cloud
 
Wellington MuleSoft Meetup 2021-02-18
Wellington MuleSoft Meetup 2021-02-18Wellington MuleSoft Meetup 2021-02-18
Wellington MuleSoft Meetup 2021-02-18Mary Joy Sabal
 
What serverless means for enterprise apps
What serverless means for enterprise appsWhat serverless means for enterprise apps
What serverless means for enterprise appsSumit Sarkar
 
Application Darwinism: Why Most Enterprise Apps Will Move to the Cloud (SVC20...
Application Darwinism: Why Most Enterprise Apps Will Move to the Cloud (SVC20...Application Darwinism: Why Most Enterprise Apps Will Move to the Cloud (SVC20...
Application Darwinism: Why Most Enterprise Apps Will Move to the Cloud (SVC20...Amazon Web Services
 
15-factor-apps.pdf
15-factor-apps.pdf15-factor-apps.pdf
15-factor-apps.pdfNilesh Gule
 
Where and When to Docker
Where and When to DockerWhere and When to Docker
Where and When to Dockerdantheelder
 
VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...
VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...
VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...VMworld
 
Create Microservice with Spring Boot and Docker
Create Microservice with Spring Boot and DockerCreate Microservice with Spring Boot and Docker
Create Microservice with Spring Boot and DockerSivaprakash
 
How to Expand Anypoint Platform's Capabilities by Developing Custom Connectors
How to Expand Anypoint Platform's Capabilities by Developing Custom ConnectorsHow to Expand Anypoint Platform's Capabilities by Developing Custom Connectors
How to Expand Anypoint Platform's Capabilities by Developing Custom ConnectorsAaronLieberman5
 
Custom Connector development using Mule SDK
Custom Connector development using Mule SDKCustom Connector development using Mule SDK
Custom Connector development using Mule SDKNavin Kare
 
Serverless microservices
Serverless microservicesServerless microservices
Serverless microservicesLalit Kale
 
Baltimore jan2019 mule4
Baltimore jan2019 mule4Baltimore jan2019 mule4
Baltimore jan2019 mule4ManjuKumara GH
 

Similaire à Cloud Ready Design through Application Software Infrastructure (20)

We've Got Docker & Cloud, Now What?
We've Got Docker & Cloud, Now What? We've Got Docker & Cloud, Now What?
We've Got Docker & Cloud, Now What?
 
Migrating to Microservices Patterns and Technologies (edition 2023)
 Migrating to Microservices Patterns and Technologies (edition 2023) Migrating to Microservices Patterns and Technologies (edition 2023)
Migrating to Microservices Patterns and Technologies (edition 2023)
 
MDM - airwatch
MDM - airwatchMDM - airwatch
MDM - airwatch
 
Cloud Foundry Technical Overview at IBM Interconnect 2016
Cloud Foundry Technical Overview at IBM Interconnect 2016Cloud Foundry Technical Overview at IBM Interconnect 2016
Cloud Foundry Technical Overview at IBM Interconnect 2016
 
Cloud = Application Enablement and Innovation ≠ IaaS (Cloud Foundry Summit 2014)
Cloud = Application Enablement and Innovation ≠ IaaS (Cloud Foundry Summit 2014)Cloud = Application Enablement and Innovation ≠ IaaS (Cloud Foundry Summit 2014)
Cloud = Application Enablement and Innovation ≠ IaaS (Cloud Foundry Summit 2014)
 
TechTalk: Get to Know Perfecto
TechTalk: Get to Know Perfecto TechTalk: Get to Know Perfecto
TechTalk: Get to Know Perfecto
 
Application Darwinism - Why Most Enterprise Apps Will Evolve to the Cloud
Application Darwinism - Why Most Enterprise Apps Will Evolve to the CloudApplication Darwinism - Why Most Enterprise Apps Will Evolve to the Cloud
Application Darwinism - Why Most Enterprise Apps Will Evolve to the Cloud
 
Journey to the center of DevOps - v6
Journey to the center of DevOps - v6Journey to the center of DevOps - v6
Journey to the center of DevOps - v6
 
Wellington MuleSoft Meetup 2021-02-18
Wellington MuleSoft Meetup 2021-02-18Wellington MuleSoft Meetup 2021-02-18
Wellington MuleSoft Meetup 2021-02-18
 
What serverless means for enterprise apps
What serverless means for enterprise appsWhat serverless means for enterprise apps
What serverless means for enterprise apps
 
Application Darwinism: Why Most Enterprise Apps Will Move to the Cloud (SVC20...
Application Darwinism: Why Most Enterprise Apps Will Move to the Cloud (SVC20...Application Darwinism: Why Most Enterprise Apps Will Move to the Cloud (SVC20...
Application Darwinism: Why Most Enterprise Apps Will Move to the Cloud (SVC20...
 
15-factor-apps.pdf
15-factor-apps.pdf15-factor-apps.pdf
15-factor-apps.pdf
 
Azure Pilot Test
Azure Pilot TestAzure Pilot Test
Azure Pilot Test
 
Where and When to Docker
Where and When to DockerWhere and When to Docker
Where and When to Docker
 
VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...
VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...
VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...
 
Create Microservice with Spring Boot and Docker
Create Microservice with Spring Boot and DockerCreate Microservice with Spring Boot and Docker
Create Microservice with Spring Boot and Docker
 
How to Expand Anypoint Platform's Capabilities by Developing Custom Connectors
How to Expand Anypoint Platform's Capabilities by Developing Custom ConnectorsHow to Expand Anypoint Platform's Capabilities by Developing Custom Connectors
How to Expand Anypoint Platform's Capabilities by Developing Custom Connectors
 
Custom Connector development using Mule SDK
Custom Connector development using Mule SDKCustom Connector development using Mule SDK
Custom Connector development using Mule SDK
 
Serverless microservices
Serverless microservicesServerless microservices
Serverless microservices
 
Baltimore jan2019 mule4
Baltimore jan2019 mule4Baltimore jan2019 mule4
Baltimore jan2019 mule4
 

Plus de Florin Coros

Implementing Clean Architecture
Implementing Clean ArchitectureImplementing Clean Architecture
Implementing Clean ArchitectureFlorin Coros
 
Implementing Clean Architecture
Implementing Clean ArchitectureImplementing Clean Architecture
Implementing Clean ArchitectureFlorin Coros
 
Enforce Consistentcy with Clean Architecture
Enforce Consistentcy with Clean ArchitectureEnforce Consistentcy with Clean Architecture
Enforce Consistentcy with Clean ArchitectureFlorin Coros
 
‘Cloud Ready’ Design through Application Software Infrastructure
‘Cloud Ready’ Design through Application Software Infrastructure‘Cloud Ready’ Design through Application Software Infrastructure
‘Cloud Ready’ Design through Application Software InfrastructureFlorin Coros
 
Enforce Consistency through Application Infrastructure
Enforce Consistency through Application InfrastructureEnforce Consistency through Application Infrastructure
Enforce Consistency through Application InfrastructureFlorin Coros
 
Enforce Consistency through Application Infrastructure
Enforce Consistency through Application InfrastructureEnforce Consistency through Application Infrastructure
Enforce Consistency through Application InfrastructureFlorin Coros
 
Enforce Consistency through Application Infrastructure
Enforce Consistency through Application InfrastructureEnforce Consistency through Application Infrastructure
Enforce Consistency through Application InfrastructureFlorin Coros
 
Good Unit Tests Ask For Quality Code
Good Unit Tests Ask For Quality CodeGood Unit Tests Ask For Quality Code
Good Unit Tests Ask For Quality CodeFlorin Coros
 

Plus de Florin Coros (8)

Implementing Clean Architecture
Implementing Clean ArchitectureImplementing Clean Architecture
Implementing Clean Architecture
 
Implementing Clean Architecture
Implementing Clean ArchitectureImplementing Clean Architecture
Implementing Clean Architecture
 
Enforce Consistentcy with Clean Architecture
Enforce Consistentcy with Clean ArchitectureEnforce Consistentcy with Clean Architecture
Enforce Consistentcy with Clean Architecture
 
‘Cloud Ready’ Design through Application Software Infrastructure
‘Cloud Ready’ Design through Application Software Infrastructure‘Cloud Ready’ Design through Application Software Infrastructure
‘Cloud Ready’ Design through Application Software Infrastructure
 
Enforce Consistency through Application Infrastructure
Enforce Consistency through Application InfrastructureEnforce Consistency through Application Infrastructure
Enforce Consistency through Application Infrastructure
 
Enforce Consistency through Application Infrastructure
Enforce Consistency through Application InfrastructureEnforce Consistency through Application Infrastructure
Enforce Consistency through Application Infrastructure
 
Enforce Consistency through Application Infrastructure
Enforce Consistency through Application InfrastructureEnforce Consistency through Application Infrastructure
Enforce Consistency through Application Infrastructure
 
Good Unit Tests Ask For Quality Code
Good Unit Tests Ask For Quality CodeGood Unit Tests Ask For Quality Code
Good Unit Tests Ask For Quality Code
 

Dernier

GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 

Dernier (20)

GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 

Cloud Ready Design through Application Software Infrastructure

  • 1. ‘Cloud Ready’ Design through Application Software Infrastructure Florin Coros
  • 2. About me Co-Founder @florincoros Partner & Co-Founder blog.iquarc.com/florin
  • 3. Outdated Enterprise Software 3 Enterprise Software Old Technologies Costly to maintain and update
  • 4. Re-Implement on a Modern Architecture Legacy System • High costs to update • Shetty UX • Outdated functionalities • Not scalable, not reliable Modern System • Accessible everywhere • Actual technologies • Good maintainability 4
  • 5. On-Premise or Cloud or Both? 5
  • 6. Build and Operate for On-Premises Deployable in Azure Enable a gradual migration into the Cloud Cloud migration does not require a rewrite or reengineering First phase use IaaS Second phase use PaaS Quality Isolation Separation Build, Test and Deploy for On-Premises only Large and Complex System Deployable on Azure Use PaaS 6
  • 7. Source code dependencies can only point inwards • Nothing in an inner circle can know anything at all about something in an outer circle • Abstractions and application concepts are independent of frameworks • frameworks are used as tools, not to cram the system into their limiting constraints 7 http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html Separate the core of the app from the frameworks and the mechanisms
  • 8. What did we already do? 8 Design Envision solutions Setup rules and practices Managing Complexity Quality Change Separations Abstraction & Encapsulation Explain & Validate Diagrams Prototypes
  • 9. Importance of Managing Complexity when projects do fail for reasons that are primarily technical, the reason is often uncontrolled complexity 9
  • 10. Importance of Managing Complexity Scalability Availability Multitenancy Security Authorization
  • 11. App Infrastructure Enforces the Architecture
  • 15. Different Solutions to the Same Problem
  • 16. Which one is the ONE?
  • 17. App Infrastructure – Primary TOOL to Control Complexity and Size
  • 18. How to do it? Invest in Design and App. Infrastructure Enforce consistency Enforce structure Focus on Modularity, Abstraction, Encapsulation Independent Modules Hide the frameworks Manage Dependencies Dependency Injection Discoverability 18
  • 19. Good Design vs Bad Design http://martinfowler.com/bliki/DesignStaminaHypothesis.html
  • 20. iQuarc AppBoot Library Lightweight library that handles the startup of an application Implements Separation of Construction and Configuration from Use Modularity Defines and abstracts a modular application Makes the application independent of the host process Dependencies Management Dependency Injection Enforces consistency in declaring dependencies Encourages good practices Encourages separation between data and behavior 20
  • 21. iQuarc AppBoot: Modularity <<Interface>> IModule + Initialize() Application + Initialize() * + Modules[] AppModule1 + Initialize() AppModule2 + Initialize() • Modular Application Support • Application modules do not depend on Frameworks • Application can be hosted in any .NET process iQuarcAppBoot
  • 22. Application Hosted in Any .NET Process • The application is not aware of the process it is hosted in • The application is isolated from framework specifics • The host process is not aware of what modules it hosts • The host process is isolated from application logic • Benefits: • Flexible deployments o same host can load different modules depending on configuration o Flexibility in development and testing • Framework setup is separated from application setup 22 <<Attribute>> ServiceAttribute + ServiceAttribute() +ServiceAttribute(Type contract) + ServiceAttribute(Type t, Lifetime lifetime) Bootstrapper +Bootstrapper(Assembly[] assemblies) +Run() Application + Initialize() iQuarcAppBoot
  • 23. App Boot: Dependency Injection <<Attribute>> ServiceAttribute + ServiceAttribute() +ServiceAttribute(Type contract) + ServiceAttribute(Type t, Lifetime lifetime) Bootstrapper +Bootstrapper(Assembly[] assemblies) +Run() • Makes Programming Against Interfaces the de facto programming model • Abstracts and hides the Dependency Container • Provides a maintainable mechanism for declaring services implementation • Dictates how Dependency Injection is used iQuarcAppBoot
  • 24. public IEnumerable<Policy> GetPolicyFromMutation(Mutation mut) { var policies = repository.GetEntities<PolicyImage>() .Where(image => image.MutationId==mut.Id) .Select(image => new Policy { Id = image.PolicyId, ValidAt = image.Mutation.Date //.. }).ToList(); // do other calculations / grouping on data return policies; } public void CalculateChanges(ChangeEvent change) { using (var uof = repository.CreateUnitOfWork()) { var policies = uof.GetEntities<PolicyImage>() .Where(i => i.Status == ImageStatus.Calculating && . i.EvendId == change.Id); foreach (PolicyImage image in policies) { image.Ammunt = GetAmmountFor(image, change); } uof.SaveChanges(); } } Encapsulate Data Access Concerns <<Interface>> IRepository +GetEntities<T>() : IQueriable<T> <<Interface>> IUnitOfWork +SaveChanges() Database Repository UnitOfWork <<Stereotype>> <<DTO>> Plan <<DTO>> Contract +CreateUnitOfWork() +GetEntities<T>():IQueriable<T> iQuarcDataAccess
  • 25. Isolate from external libraries <<static class>> Log +LogError() +LogWarining() Exception Wrappers Decorators <<Interface>> API Interfaces 25
  • 26. Application Infrastructure – Shaping to Context .NET Framework WF WCF WEB API ASP.NET Entity Framework . . . Unity NServiceBus Log4Net . . . Application Infrastructure Application Functionalities
  • 27. When to do it? cumulativefunctionality time completion construction ready design payoff
  • 28. When to do it?cumulativefunctionality time completion construction ready design payoff time Arc Arc Infra FunctionalityInfra FunctionalityInfra Functionality Functionality Functionality Functionality RepositoryImpl + GetEntities<T>() : IQueriable() IRepository IUnitOfWork + SaveChanges() IModule <<Attribute>> ServiceAttribute iQuarc Functionality
  • 29. Thank You! Florin Coros Partner and Co-founder, iQuarc florin.coros@iquarc.com blog.iquarc.com/florin @florincoros