SlideShare ist ein Scribd-Unternehmen logo
1 von 81
Application Architecture
2014
Lars-Erik Kindblad
Senior Consultant
& Head Of Microsoft
Community Of Practice
Feature Delivery For Most Software Projects
Project Progress
• Complex and messy code
• Code and logic is duplicated
• No common coding standard
• No strict architecture
• ++
Ideal Feature Delivery
Project Progress
Agenda
Testable code
 Inversion of Control
Maintainable code with less duplication
 Single Responsibility Principle
 Extract Method Principle
 Execute Around Method Pattern
Well structured code
 Onion Architecture & N-Layered Architecture
 Ways to group and structure code
Reduce bugs
 Event Sourcing & replaying events
Inversion Of Control
Make code loosely coupled
Make unit testing possible
Traditional Code
Inversion Of Control
Traditional code
Main class UserCreator
CreateUser
DbCommand
1. Creates
2. Creates
Inversion of control code
Main class
UserCreator
CreateUser
DbCommand
Dependency
1. Creates
2. Creates with
object from 1.
Dependency
Dependency Injection - Constructor Injection
Dependency Injection - Interface Injection
Dependency Injection - Setter Injection
Static Service Locator
Injected Service Locator
Which Patterns To Use
Traditional Code
Dependency Injection - Constructor Injection
Dependency Injection - Interface Injection
Dependency Injection - Setter Injection
Static Service Locator
Injected Service Locator
When To Use Which
Patterns
Always Use Dependency Injection – Constructor Injection
...except
Facade Classes
Dependency Injection
Service Locator
Loops
Dependency Injection
Service Locator
Base Classes
Dependency Injection
Service Locator
Unknown Types At Compile Time
Service Locator
Summary
Constructor Injection Injected Service Locator
Facade classes
(WCF Services,
MVC Controllers)
X
Loops X X
Base classes X
Unknown types at
compile time
X
All other scenarios X
Inversion Of Control (IOC) Container
A framework that can automatically create an instance of a given type with
all the required dependencies
Popular frameworks
 Unity, Castle Windsor, Ninject, StructureMap etc.
Manual approach
Using an IOC container
Configuration
Must register what types the container can resolve
Types are registered with a life time manager
 PerContainer – Container.Resolve<UserCreator> returns the same UserCreator instance
every time (Singleton)
 Transient – Container.Resolve<UserCreator> returns a new UserCreator instance every
time
 PerRequest – Container.Resolve<UserCreator> returns the same UserCreator instance
within a web request
Configuration can be done through
 XML – Read from the .config file. Bad practice, too limiting
 Code – Register all types through code
• Auto registration – Automatically register types based on conventions e.g. all types in assembly x
Where To Plugin
An IOC container should be created and initialized in the presentation
layer or or above (DependencyResolution layer)
Any other layer should NOT have a reference to the IOC container
Presentation
Domain
Database, Web Service,
Queue, SMTP server etc.
Infrastructure
Don’t reference
container here
Don’t reference
container here
Should reference
and use container
Unity Example 1/3
Unity Example 2/3
Unity Example 3/3
Summary
Use an IOC Container to create type instances when using inversion of
control
Only the presentation layer should know about the IOC Container
Configuration: Prefer code over xml
Use auto registration to reduce configuration code
Single Responsibility Principle
Single Responsibility Principle = SRP
1 of the 5 SOLID principles
”A class or module should have one, and only one, reason to change”
 A class should do one thing
 A class should have only one responsibility
Max 100-200 lines of code per class?
The benefits
 Easier to give the class a good name
 Easier to read
 Easier to maintain & extend
 Easier to test
The God Object
A God object is an object that knows too much or does too much
The opposite of the SRP
Single Responsibility Objects
Current responsibilities:
• Facade class
• Input validation
• Talks to a database
• Sends e-mail
Refactored To SRP
UserManager
CreateUser
GetUser
DeleteUser
Refactored UserManager
Responsibility
• Facade class
Refactor GetUser & DeleteUser
Responsibility
• Return the user from the
database
Responsibility
• Delete the user from the
database
Refactored to CreateUser
Responsibility
• Input validation
• Create the user in the
database
• Send confirmation e-mail
Future Refactoring
Split into multiple classes when the code increases in size
CreateUser
CreateUserDbCommand
SendEmailConfirmation
Summary
A class following the single responsibility principle is a class that does only
one thing and has only one reason to change
The opposite of SRP is a God-object
Benefits
 Easy to give the class a good name
 Less code per class means
• Reduced complexity = less errors
• Easier to maintain & extend
• Easier to test
Can use the Facade pattern if a special API is required
Code Duplication – Example #1
Duplicated code
Extract Method Principle - Refactored
Code Duplication – Example #2
Duplicated code
Execute Around Method Pattern - Refactored
Execute Around Method - Example #2
Domain
Model
Domain Services
Presentation
Application Services
Infrastructure
Frameworks and external
endpoint integrations
Onion Architecture
 A layer can only depend on
inner layers
 Frameworks and
infrastructure concerns are
pushed to the outer layer
 A change of framework will
not affect the application
core
Application business rules
= use cases
Enterprise business rules
Database, Web Service,
Queue, SMTP server etc.
Application Core
Onion Architecture Flattened
Presentation
Application Services
Domain Services
Database, Web Service,
Queue, SMTP server etc.
Domain
Model
Infrastructure
The Use Case – Open New Account
Create new account in database
and return account number
Is personal number empty?
Is the customer credit worthy?
Return error
No
Yes
Yes
No
Dependency Resolution
Domain
Model
Domain Services
Presentation
Application Services
Infrastructure
AccountController
Database
Onion Architecture – Open New Account Use Case
• OpenNewAccountUseCase
• ICreateAccountCommand
CreateAccount-
DbCommand
• CreditCheckService
• IGetTotalDebtForCustomerQuery
Web service
GetTotalDebtForCustomer-
ServiceAgent
ExecuteUseCase
Process Flow
AccountController
OpenNewAccountUseCase
CreateAccountDbCommand
CreditCheckService
GetTotalDebtForCustomer-
ServiceAgent
ExecuteUseCase
DependencyResolver Unity IOC Container
Database
Web service
• Transaction management
• Exception handling
• Logging
Insert/Update/Delete = *Command
Read = *Query
Alternatives – 3-Layered Architecture
Where are the use cases?
Presentation
Domain Services
Domain
Model
Database, Web Service,
Queue, SMTP server etc.
Infrastructure
Alternatives – 4-Layered Architecture
Must always go through domain
layer – domain layer will get
non-domain code
All return types from Domain
Services or Infrastructure must
be declared in the Domain
Model
Presentation
Application Services
Domain Services
Domain
Model
Database, Web Service,
Queue, SMTP server etc.
Infrastructure
Alternatives – 4-Layered Architecture – Non-Strict
The application- and domain
logic is tightly coupled to the
infrastructure
 Domain Centric vs Data Centric
architecture
Presentation
Application Services
Domain Services
Domain
Model
Database, Web Service,
Queue, SMTP server etc.
Infrastructure
The Use Cases
Open new account
View accounts
Latest transactions
Single payment
Multiple payments
International payment
View Executed payments
View policies
Change address
Change payment limit
Group Into Components
Account
• Open new
account
• View
accounts
• Latest
transactions
Payments
• Single
payment
• Multiple
payments
• International
payment
• View
Executed
payments
Insurance
• View
policies
Settings
• Change
address
• Change
payment
limit
Package By Layer
Application Services
• Account
• Open new account
• OpenNewAccountUseCase
• ICreateAccountCommand
Domain Services
• Account
• Open new account
• CreditCheckService
• IGetTotalDebtForCustomerQuery
...
Package By Component
Account
• Application Services
• Open new account
• OpenNewAccountUseCase
• ICreateAccountCommand
• Domain Services
• Open new account
• CreditCheckService
• IGetTotalDebtForCustomerQuery
• ...
Payments
• Application Services
• ...
Package By Feature
Account
• Open new account
• OpenNewAccountUseCase
• ICreateAccountDbCommand
• CreditCheckService
• IGetTotalDebtForCustomerQuery
• ...
Payments
• ...
Change Request Comparison
Package by layer
 Must change code in multiple projects
Package by component
 Must change code in 1 project but multiple folders
Package by feature
 Must change code in 1 project, one folder
Event Sourcing
ExecuteUseCase: _log.UseCase(useCaseInput) generates a stream of
executed use cases/events
A use case should either be a command or a query
Serialized data Execution date Status
OpenNewAccountInput 3. march Successful
ChangeAddressInput 4. march Successful
OpenNewAccountInput 7. march Successful
ChangePaymentLimitInput 10. march Failed
ChangePaymentLimitInput 11. march Successful
Replay Use Cases/Events
Stream of use cases/events can be replayed
 Test the system for errors
 Restore from failure
How to replay? Make an application that
1. Delete all the data in the database
2. Read first event in log
3. Resolve use case class from use case input
4. Execute use case
5. Read next event and goto 23.
Summary
Use Inversion of Control to write testable and loosely coupled code
Use Single Responsibility Principle to write small, easy to maintain classes
Use Extract Method Principle & Execute Around Method pattern to reduce
code duplication
Use the Onion Architecture or N-Layer to get a fixed architecture
Package by Layer-, Component- or Feature to get well organized code
Log executed use cases and replay them before a new release to check
for bugs
The information contained in this presentation is proprietary.
© 2014 Capgemini. All rights reserved.
www.capgemini.com

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Application Security
Application SecurityApplication Security
Application Security
 
Threat Modeling Everything
Threat Modeling EverythingThreat Modeling Everything
Threat Modeling Everything
 
Introduction to AWS Storage Services
Introduction to AWS Storage ServicesIntroduction to AWS Storage Services
Introduction to AWS Storage Services
 
DDD Tactical Design with Clean Architecture - Ivan Paulovich
DDD Tactical Design with Clean Architecture - Ivan PaulovichDDD Tactical Design with Clean Architecture - Ivan Paulovich
DDD Tactical Design with Clean Architecture - Ivan Paulovich
 
NOSQL- Presentation on NoSQL
NOSQL- Presentation on NoSQLNOSQL- Presentation on NoSQL
NOSQL- Presentation on NoSQL
 
Introduction to Amazon DynamoDB
Introduction to Amazon DynamoDBIntroduction to Amazon DynamoDB
Introduction to Amazon DynamoDB
 
AWS Simple Storage Service (s3)
AWS Simple Storage Service (s3) AWS Simple Storage Service (s3)
AWS Simple Storage Service (s3)
 
Security testing
Security testingSecurity testing
Security testing
 
Php
PhpPhp
Php
 
White paper on testing in cloud
White paper on testing in cloudWhite paper on testing in cloud
White paper on testing in cloud
 
Threat Modelling
Threat ModellingThreat Modelling
Threat Modelling
 
NoSql
NoSqlNoSql
NoSql
 
Java Secure Coding Practices
Java Secure Coding PracticesJava Secure Coding Practices
Java Secure Coding Practices
 
Introduction to Amazon S3
Introduction to Amazon S3Introduction to Amazon S3
Introduction to Amazon S3
 
Aws ppt
Aws pptAws ppt
Aws ppt
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Asp.net.
Asp.net.Asp.net.
Asp.net.
 
Virtualization security
Virtualization securityVirtualization security
Virtualization security
 
The CAP Theorem
The CAP Theorem The CAP Theorem
The CAP Theorem
 
Dynamodb Presentation
Dynamodb PresentationDynamodb Presentation
Dynamodb Presentation
 

Andere mochten auch

Windows Azure Active Directory: Identity Management in the Cloud
Windows Azure Active Directory: Identity Management in the CloudWindows Azure Active Directory: Identity Management in the Cloud
Windows Azure Active Directory: Identity Management in the Cloud
Chris Dufour
 

Andere mochten auch (20)

AAD with MVC App
AAD with MVC AppAAD with MVC App
AAD with MVC App
 
Publish & Subscribe to events using an Event Aggregator
Publish & Subscribe to events using an Event AggregatorPublish & Subscribe to events using an Event Aggregator
Publish & Subscribe to events using an Event Aggregator
 
Getting started with Azure Active Directory
Getting started with Azure Active DirectoryGetting started with Azure Active Directory
Getting started with Azure Active Directory
 
Azure AD Connect
Azure AD ConnectAzure AD Connect
Azure AD Connect
 
SPOF - Single "Person" of Failure
SPOF - Single "Person" of FailureSPOF - Single "Person" of Failure
SPOF - Single "Person" of Failure
 
Leverage the Power of SAP HANA with Microsoft Azure Cloud Migration
Leverage the Power of SAP HANA with Microsoft Azure Cloud MigrationLeverage the Power of SAP HANA with Microsoft Azure Cloud Migration
Leverage the Power of SAP HANA with Microsoft Azure Cloud Migration
 
Microsoft Cloud Computing - Windows Azure Platform
Microsoft Cloud Computing - Windows Azure PlatformMicrosoft Cloud Computing - Windows Azure Platform
Microsoft Cloud Computing - Windows Azure Platform
 
Windows Azure Active Directory: Identity Management in the Cloud
Windows Azure Active Directory: Identity Management in the CloudWindows Azure Active Directory: Identity Management in the Cloud
Windows Azure Active Directory: Identity Management in the Cloud
 
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azureCloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
 
Azure Active Directory, Practical Guide
Azure Active Directory, Practical GuideAzure Active Directory, Practical Guide
Azure Active Directory, Practical Guide
 
Azure AD with Office 365 and Beyond!
Azure AD with Office 365 and Beyond!Azure AD with Office 365 and Beyond!
Azure AD with Office 365 and Beyond!
 
Single point of failure
Single point of failureSingle point of failure
Single point of failure
 
Transforming Enterprises through Next-generation Cloud Applications
Transforming Enterprises through Next-generation Cloud ApplicationsTransforming Enterprises through Next-generation Cloud Applications
Transforming Enterprises through Next-generation Cloud Applications
 
Balancing Creativity with Discipline – Innovation management at TCS
Balancing Creativity with Discipline – Innovation management at TCSBalancing Creativity with Discipline – Innovation management at TCS
Balancing Creativity with Discipline – Innovation management at TCS
 
Digital Blurring Business Boundaries
Digital Blurring Business BoundariesDigital Blurring Business Boundaries
Digital Blurring Business Boundaries
 
PSEG TCS SAP Collections Management
PSEG TCS SAP Collections ManagementPSEG TCS SAP Collections Management
PSEG TCS SAP Collections Management
 
TCS Point of View Session - Analyze by Dr. Gautam Shroff, VP and Chief Scient...
TCS Point of View Session - Analyze by Dr. Gautam Shroff, VP and Chief Scient...TCS Point of View Session - Analyze by Dr. Gautam Shroff, VP and Chief Scient...
TCS Point of View Session - Analyze by Dr. Gautam Shroff, VP and Chief Scient...
 
Digital Insurance Enterprise: The Nest Case Study
Digital Insurance Enterprise: The Nest Case StudyDigital Insurance Enterprise: The Nest Case Study
Digital Insurance Enterprise: The Nest Case Study
 
TCS PoV on Digitize
TCS PoV on DigitizeTCS PoV on Digitize
TCS PoV on Digitize
 
Innovation Leadership in the Digital Age by K. Ananth Krishnan, VP and CTO, TCS
Innovation Leadership in the Digital Age by K. Ananth Krishnan, VP and CTO, TCSInnovation Leadership in the Digital Age by K. Ananth Krishnan, VP and CTO, TCS
Innovation Leadership in the Digital Age by K. Ananth Krishnan, VP and CTO, TCS
 

Ähnlich wie Application Architecture

Ähnlich wie Application Architecture (20)

Application Architecture April 2014
Application Architecture April 2014Application Architecture April 2014
Application Architecture April 2014
 
AWS re:Invent 2016: Getting Started with Serverless Architectures (CMP211)
AWS re:Invent 2016: Getting Started with Serverless Architectures (CMP211)AWS re:Invent 2016: Getting Started with Serverless Architectures (CMP211)
AWS re:Invent 2016: Getting Started with Serverless Architectures (CMP211)
 
Improving the Quality of Existing Software - DevIntersection April 2016
Improving the Quality of Existing Software - DevIntersection April 2016Improving the Quality of Existing Software - DevIntersection April 2016
Improving the Quality of Existing Software - DevIntersection April 2016
 
Improving the Quality of Existing Software
Improving the Quality of Existing SoftwareImproving the Quality of Existing Software
Improving the Quality of Existing Software
 
How to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJSHow to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJS
 
Integration strategies best practices- Mulesoft meetup April 2018
Integration strategies   best practices- Mulesoft meetup April 2018Integration strategies   best practices- Mulesoft meetup April 2018
Integration strategies best practices- Mulesoft meetup April 2018
 
Design for Testability in Practice
Design for Testability in PracticeDesign for Testability in Practice
Design for Testability in Practice
 
Improving the Quality of Existing Software
Improving the Quality of Existing SoftwareImproving the Quality of Existing Software
Improving the Quality of Existing Software
 
10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuable
 
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless Architectures
 
Migrating from a monolith to microservices – is it worth it?
Migrating from a monolith to microservices – is it worth it?Migrating from a monolith to microservices – is it worth it?
Migrating from a monolith to microservices – is it worth it?
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 
Improving The Quality of Existing Software
Improving The Quality of Existing SoftwareImproving The Quality of Existing Software
Improving The Quality of Existing Software
 
Real-world Entity Framework
Real-world Entity FrameworkReal-world Entity Framework
Real-world Entity Framework
 
Component based development | what, why and how
Component based development | what, why and howComponent based development | what, why and how
Component based development | what, why and how
 
Salesforce Multitenant Architecture: How We Do the Magic We Do
Salesforce Multitenant Architecture: How We Do the Magic We DoSalesforce Multitenant Architecture: How We Do the Magic We Do
Salesforce Multitenant Architecture: How We Do the Magic We Do
 
Breaking the Monolith Road to Containers
Breaking the Monolith Road to ContainersBreaking the Monolith Road to Containers
Breaking the Monolith Road to Containers
 
Fed London - January 2015
Fed London - January 2015Fed London - January 2015
Fed London - January 2015
 

Mehr von Lars-Erik Kindblad

Application Architecture by Lars-Erik Kindblad, Capgemini
Application Architecture by Lars-Erik Kindblad, CapgeminiApplication Architecture by Lars-Erik Kindblad, Capgemini
Application Architecture by Lars-Erik Kindblad, Capgemini
Lars-Erik Kindblad
 

Mehr von Lars-Erik Kindblad (12)

How to build more reliable, robust and scalable distributed systems
How to build more reliable, robust and scalable distributed systemsHow to build more reliable, robust and scalable distributed systems
How to build more reliable, robust and scalable distributed systems
 
Message Oriented Architecture using NServiceBus
Message Oriented Architecture using NServiceBusMessage Oriented Architecture using NServiceBus
Message Oriented Architecture using NServiceBus
 
Unit Tests are Overrated (NDCOslo 2013)
Unit Tests are Overrated (NDCOslo 2013)Unit Tests are Overrated (NDCOslo 2013)
Unit Tests are Overrated (NDCOslo 2013)
 
The Single Responsibility Principle
The Single Responsibility PrincipleThe Single Responsibility Principle
The Single Responsibility Principle
 
Avoid code duplication! Principles & Patterns
Avoid code duplication! Principles & PatternsAvoid code duplication! Principles & Patterns
Avoid code duplication! Principles & Patterns
 
Application Architecture by Lars-Erik Kindblad, Capgemini
Application Architecture by Lars-Erik Kindblad, CapgeminiApplication Architecture by Lars-Erik Kindblad, Capgemini
Application Architecture by Lars-Erik Kindblad, Capgemini
 
The Fluent Interface Pattern
The Fluent Interface PatternThe Fluent Interface Pattern
The Fluent Interface Pattern
 
Inversion of Control - Introduction and Best Practice
Inversion of Control - Introduction and Best PracticeInversion of Control - Introduction and Best Practice
Inversion of Control - Introduction and Best Practice
 
Layered Software Architecture
Layered Software ArchitectureLayered Software Architecture
Layered Software Architecture
 
Introduction to FluentData - The Micro ORM
Introduction to FluentData - The Micro ORMIntroduction to FluentData - The Micro ORM
Introduction to FluentData - The Micro ORM
 
Dependency Injection vs Service Locator - Best Practice
Dependency Injection vs Service Locator - Best PracticeDependency Injection vs Service Locator - Best Practice
Dependency Injection vs Service Locator - Best Practice
 
Data Access - Best Practice
Data Access - Best PracticeData Access - Best Practice
Data Access - Best Practice
 

Kürzlich hochgeladen

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Kürzlich hochgeladen (20)

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 

Application Architecture