SlideShare a Scribd company logo
1 of 86
Download to read offline
Skyrocketing Web APIs
By making the right decisions
Daniel Cerecedo
@dcerecedo
Why REST over HTTP?Why REST over HTTP?
@dcerecedoByteflair
Why REST over HTTP?Why REST over HTTP?
@dcerecedoByteflair
The limits of my language mean the limits of my
world.
Everybody speaks HTTP
Developer UXDeveloper UX
@dcerecedoByteflair
HTTP is for browsers
Developer UXDeveloper UX
@dcerecedoByteflair
Developer in mind, not browsers
REST over HTTPREST over HTTP
@dcerecedoByteflair
Components
URIs
Verbs
StatusCode
Body
Headers
REST over HTTPREST over HTTP
@dcerecedoByteflair
Separate resource representation from
contextual data
Representation Body→
Contextualdata Headers→
REST over HTTPREST over HTTP
@dcerecedoByteflair
HTTP status code to inform client about the
result
2xx Ok→
Other Ko→
4xx Clienterror→
5xx Servererror→
REST over HTTPREST over HTTP
@dcerecedoByteflair
Use best matching HTTP Status codes
Add specific application error codes to error
responses
@dcerecedoByteflair
REST over HTTPREST over HTTP
Semantic of an API should be In the URI
...but
Everybody thinks Verbs+URIs fit better on HTTP
@dcerecedoByteflair
REST over HTTPREST over HTTP
HypermediaHypermedia
@dcerecedoByteflair
HypermediaHypermedia
@dcerecedoByteflair
Applications can be modeled as state
machines
@dcerecedoByteflair
HypermediaHypermedia
@dcerecedoByteflair
HypermediaHypermedia
@dcerecedoByteflair
HypermediaHypermedia
Model the problem domain
Identifydomainresources
Identifyresourcestatetransitions
@dcerecedoByteflair
HypermediaHypermedia
Domain resources
Vehicles
Users
Sessions
Resource state transitions
Createresources
Assignownertovehicle
Activatesessionwithdriver&vehicle
Deactivatesession
@dcerecedoByteflair
HypermediaHypermedia
Define resource representation formats
Mime Types
Define roles for each Hypermedia Control
Rel Types
@dcerecedoByteflair
HypermediaHypermedia
GET /
Headers
Link:
<https://api.domain.com/vehicles>; rel=”vehicles”:
<https://api.domain.com/users>; rel=”users”:
<https://api.domain.com/sessions>; rel=”sessions”
Body
...
@dcerecedoByteflair
HypermediaHypermedia
GET /vehicles
Headers
Link:
<https://api.domain.com/vehicles?page=1&size=20>;
rel=”next”
Body
[ {...}, {…}, ...] Control links
@dcerecedoByteflair
HypermediaHypermedia
GET /sessions/1374
Body
{ ….
“vehicle”:”https://api.domain.com/vehicles/1”,
“driver”:”https://api.domain.com/users/1”
}
These are also control links.
Use conventions to get full semantics!!
@dcerecedoByteflair
HypermediaHypermedia
GET /vehicles/1
Body
{ ….
“owner”:”https://api.domain.com/users/1”
}
Relation types specify the role of the link
@dcerecedoByteflair
HypermediaHypermedia
GET /sessions/1374
Body
{ ….
“vehicle”:”https://api.domain.com/vehicles/1”,
“driver”:”https://api.domain.com/persons/1”
}
@dcerecedoByteflair
HypermediaHypermedia
Let the client discover its resource access level
Options
@dcerecedoByteflair
HypermediaHypermedia
Conventions
RelTypes,MediaTypes,Methods,StatusCodes
@dcerecedoByteflair
HypermediaHypermedia
Think as if you had to write a client and
minimize the number of things you
have to know about the API beforehand
@dcerecedoByteflair
HypermediaHypermedia
A client and an API do
not get decopupled
magically
Dynamic viewsDynamic views
@dcerecedoByteflair
Dynamic viewsDynamic views
@dcerecedoByteflair
We need different data access needs
for the same resource depending on
the security context
Dynamic viewsDynamic views
@dcerecedoByteflair
AnyUserresourcecanbefullyviewedbyan
administrator
AloggedinusercanfullyviewhisUserresource
Otheruserscanonlyseehispublicdata
Scenario
Dynamic viewsDynamic views
@dcerecedoByteflair
/users/{id}
/owner/users/{id}
/admin/users/{id}
OneURIperrole
Scenario
Dynamic viewsDynamic views
@dcerecedoByteflair
/users/{id}
/owner/users/{id}
/admin/users/{id}
OneURIperrole
Scenario
Dynamic viewsDynamic views
@dcerecedoByteflair
Partitiontheresource
Givedifferentroleaccesstoeachpartition
Scenario
/users/{id}
/users/{id}/my-private-data
/users/{id}/data-about-me-only-the-admin-knows
Dynamic viewsDynamic views
@dcerecedoByteflair
OneURIperresource
Selectoneviewatruntimedependingonthesecurity
context
Scenario
/users/{id}
Dynamic viewsDynamic views
@dcerecedoByteflair
1.Createamechanismtodefineviews
2.Createamechanismtodefineapplicableviewstoa
resource
3.Createamechanismtodefinewhichviewtoapply
Dynamic viewsDynamic views
@dcerecedoByteflair
1
Dynamic viewsDynamic views
@dcerecedoByteflair
1
Dynamic viewsDynamic views
@dcerecedoByteflair
2
Dynamic viewsDynamic views
@dcerecedoByteflair
3
Updates & ConcurrencyUpdates & Concurrency
@dcerecedoByteflair
@dcerecedoByteflair
Twoclientsattempttoupdatethesameresource
concurrently
Representationisthestateoftheapplication
Iwanttoavoidthesecondrequesttoupdatearesource
fromaninconsistentrepresentation
Updates & ConcurrencyUpdates & Concurrency
Scenario
@dcerecedoByteflair
Compareincomingresourceandexistingresource...
Updates & ConcurrencyUpdates & Concurrency
Scenario
@dcerecedoByteflair
Compareincomingresourceandexistingresource...
Ifunequalreject...
Updates & ConcurrencyUpdates & Concurrency
Scenario
@dcerecedoByteflair
Compareincomingresourceandexistingresource...
Ifunequalreject...
Ifpossibleinformtheuserwhichfieldsviolatedthe
precondition
Updates & Concurrency
Scenario
@dcerecedoByteflair
Ifwehavedynamicviews,thenthesameresourcemay
havedifferentfieldsfordifferentsecuritycontexts
Updates & ConcurrencyUpdates & Concurrency
@dcerecedoByteflair
Whatifwedon'twantallfieldstobeupdatable?
Whatifweneedfinegrainedaccesscontroltofields?
Updates & ConcurrencyUpdates & Concurrency
Scenario
@dcerecedoByteflair
1.Weneedamechanismtoassociatesecurity
expresionstofields
2.Weneedamechanismtoevaluatesecurity
expresionsbeforechangingthevalueofafield
Updates & ConcurrencyUpdates & Concurrency
@dcerecedoByteflair
Updates & ConcurrencyUpdates & Concurrency
1
@dcerecedoByteflair
Updates & ConcurrencyUpdates & Concurrency
2
Async RequestsAsync Requests
@dcerecedoByteflair
Async RequestsAsync Requests
@dcerecedoByteflair
Howdowedealwithtransitionsthatareintrinsically
asynchronous?
Async RequestsAsync Requests
@dcerecedoByteflair
Howdoweidentifyintrinsicallyasynctransitions?
Therearestatetransitionsbeyondyourcontrol
Itdoesnotmakesensetoreturnaresourcebecausewe
don'tknowthestateoftheresourceafterinvokingthe
transition
Async RequestsAsync Requests
@dcerecedoByteflair
Trucksareregularlyreviewedandmarkedforrepairing
Scenario
Ok
Needs
Repair
Repaired
Awaiting
Async RequestsAsync Requests
@dcerecedoByteflair
Trucksareregularlyreviewedandmarkedforrepairing
Scenario
Ok
Needs
Repair
Repaired
Within my organizations control
Awaiting
Async RequestsAsync Requests
@dcerecedoByteflair
Trucksareregularlyreviewedandmarkedforrepairing
Scenario
Ok
Needs
Repair
Repaired
Within my organizations control
Awaiting
PUT/trucks/6/repair
202Accepted
Async RequestsAsync Requests
@dcerecedoByteflair
Trucksareregularlyreviewedandmarkedforrepairing
Scenario
Ok
Needs
Repair
Repaired
Within my organizations control
Awaiting
PUT/trucks/6/repair
202Accepted
Async RequestsAsync Requests
@dcerecedoByteflair
Howdowedealwithtaskintensivestatetransitions?
Async RequestsAsync Requests
@dcerecedoByteflair
Howdowedealwithtaskintensivestatetransitions?
Wemakethemasync
@dcerecedoByteflair
Flexibility & DecouplingFlexibility & Decoupling
@dcerecedoByteflair
Flexibility & DecouplingFlexibility & Decoupling
MediationRouter+MessageBroker
@dcerecedoByteflair
Flexibility & DecouplingFlexibility & Decoupling
Mail Template
From
To
Subject
Template name
Amazon
Mailchimp
Elastic Mail
Scenario
@dcerecedoByteflair
Flexibility & DecouplingFlexibility & Decoupling
Scenario
@dcerecedoByteflair
Flexibility & DecouplingFlexibility & Decoupling
Scenario
@dcerecedoByteflair
Speakinginsilver
i18ni18n
@dcerecedoByteflair
Speakinginsilver
i18ni18n
GET /i18n/es_ES
Body
{
“country” : “ES”,
“lang”: “es”,
“data” : { “key”: “localized message”, ….}
}
SinglePageApp
@dcerecedoByteflair
API SpecificationAPI Specification
@dcerecedoByteflair
Byteflair
SwaggerSwagger
APIAPI SpecificationSpecification
Swagger editor:
http://editor.swagger.io/
En local:
https://github.com/Byteflair/docker-swagger-editor
docker pull byteflair/swagger-editor
docker run -d -p <port>:9000 byteflair/swagger-editor
Byteflair
RAMLRAML
APIAPI SpecificationSpecification
API Designer:
http://api-portal.anypoint.mulesoft.com/raml/api-designer
Imagen Docker:
https://github.com/Byteflair/docker-raml-editor
docker pull byteflair/raml-editor
docker run -d -p <port>:9013 byteflair/raml-editor
@dcerecedoByteflair
Oauth 2 CheatsheetOauth 2 Cheatsheet
@dcerecedoByteflair
Oauth 2 CheatsheetOauth 2 Cheatsheet
Client&User
User
Client
Trusted Untrusted
@dcerecedoByteflair
Oauth 2 CheatsheetOauth 2 Cheatsheet
Client&User
User
Client
Resource Owner
Credentials
Trusted UntrustedMy trusted native app
@dcerecedoByteflair
Oauth 2 CheatsheetOauth 2 Cheatsheet
Client&User
User
Client Client Credentials
Resource Owner
Credentials
Trusted Untrusted
A server app or CLI
@dcerecedoByteflair
Oauth 2 CheatsheetOauth 2 Cheatsheet
Client&User
User
Client
Authorization Code
Client Credentials
Resource Owner
Credentials
Trusted Untrusted
Third party apps
@dcerecedoByteflair
Oauth 2 CheatsheetOauth 2 Cheatsheet
Client&User
User
Client
Authorization Code
Implicit
Client Credentials
Resource Owner
Credentials
Trusted Untrusted
My single page app
@dcerecedoByteflair
Packaging & MonetizingPackaging & Monetizing
@dcerecedoByteflair
HowtoofferdifferentproductsontopofthesameAPI?
PackagingPackaging
@dcerecedoByteflair
HowtoofferdifferentproductsontopofthesameAPI?
BUNDLING subsetsoffunctionality
PackagingPackaging
@dcerecedoByteflair
HowtoofferdifferentproductsontopofthesameAPI?
BUNDLING subsetsoffunctionality
THROTTLING request
PackagingPackaging
@dcerecedoByteflair
HowtoofferdifferentproductsontopofthesameAPI?
BUNDLING subsetsoffunctionality
THROTTLING request
PackagingPackaging
Needs a proxy and means of updating policies
@dcerecedoByteflair
MonetizingMonetizing
@dcerecedoByteflair
ToolsTools
ToolsTools
@dcerecedoByteflair
@dcerecedoByteflair
“Weapons should be adapted to
your personal qualities and be
one you can handle” Miyamoto Mushashi
@dcerecedoByteflair
Don'tbecomean
extremist
?Daniel Cerecedo
@dcerecedo
Thanks Gracias

More Related Content

What's hot

Stateless authentication with OAuth 2 and JWT - JavaZone 2015
Stateless authentication with OAuth 2 and JWT - JavaZone 2015Stateless authentication with OAuth 2 and JWT - JavaZone 2015
Stateless authentication with OAuth 2 and JWT - JavaZone 2015
Alvaro Sanchez-Mariscal
 

What's hot (20)

CIS14: Authorization: It's What's for Dessert
CIS14: Authorization: It's What's for DessertCIS14: Authorization: It's What's for Dessert
CIS14: Authorization: It's What's for Dessert
 
Mit 2014 introduction to open id connect and o-auth 2
Mit 2014   introduction to open id connect and o-auth 2Mit 2014   introduction to open id connect and o-auth 2
Mit 2014 introduction to open id connect and o-auth 2
 
Bh europe-01-grossman
Bh europe-01-grossmanBh europe-01-grossman
Bh europe-01-grossman
 
Stateless authentication with OAuth 2 and JWT - JavaZone 2015
Stateless authentication with OAuth 2 and JWT - JavaZone 2015Stateless authentication with OAuth 2 and JWT - JavaZone 2015
Stateless authentication with OAuth 2 and JWT - JavaZone 2015
 
OpenID Connect Explained
OpenID Connect ExplainedOpenID Connect Explained
OpenID Connect Explained
 
Vaadin 8 with Spring Framework
Vaadin 8 with Spring FrameworkVaadin 8 with Spring Framework
Vaadin 8 with Spring Framework
 
Smart Lock for Password @ Game DevFest Bangkok 2015
Smart Lock for Password @ Game DevFest Bangkok 2015Smart Lock for Password @ Game DevFest Bangkok 2015
Smart Lock for Password @ Game DevFest Bangkok 2015
 
Stateless authentication for microservices - GR8Conf 2015
Stateless authentication for microservices - GR8Conf 2015Stateless authentication for microservices - GR8Conf 2015
Stateless authentication for microservices - GR8Conf 2015
 
Techlunch - Dependency Injection with Vaadin
Techlunch - Dependency Injection with VaadinTechlunch - Dependency Injection with Vaadin
Techlunch - Dependency Injection with Vaadin
 
CIS14: Working with OAuth and OpenID Connect
CIS14: Working with OAuth and OpenID ConnectCIS14: Working with OAuth and OpenID Connect
CIS14: Working with OAuth and OpenID Connect
 
CIS14: OAuth and OpenID Connect in Action
CIS14: OAuth and OpenID Connect in ActionCIS14: OAuth and OpenID Connect in Action
CIS14: OAuth and OpenID Connect in Action
 
Configuring kerberos based sso in weblogic
Configuring kerberos based sso in weblogicConfiguring kerberos based sso in weblogic
Configuring kerberos based sso in weblogic
 
Implementing MITREid - CIS 2014 Presentation
Implementing MITREid - CIS 2014 PresentationImplementing MITREid - CIS 2014 Presentation
Implementing MITREid - CIS 2014 Presentation
 
Protecting web APIs with OAuth 2.0
Protecting web APIs with OAuth 2.0Protecting web APIs with OAuth 2.0
Protecting web APIs with OAuth 2.0
 
Stateless authentication for microservices - Spring I/O 2015
Stateless authentication for microservices  - Spring I/O 2015Stateless authentication for microservices  - Spring I/O 2015
Stateless authentication for microservices - Spring I/O 2015
 
OAuth 2.0 and OpenId Connect
OAuth 2.0 and OpenId ConnectOAuth 2.0 and OpenId Connect
OAuth 2.0 and OpenId Connect
 
Securing your APIs with OAuth, OpenID, and OpenID Connect
Securing your APIs with OAuth, OpenID, and OpenID ConnectSecuring your APIs with OAuth, OpenID, and OpenID Connect
Securing your APIs with OAuth, OpenID, and OpenID Connect
 
Codemash-2017
Codemash-2017Codemash-2017
Codemash-2017
 
Stateless authentication for microservices - Greach 2015
Stateless authentication for microservices - Greach 2015Stateless authentication for microservices - Greach 2015
Stateless authentication for microservices - Greach 2015
 
Introduction to Vaadin
Introduction to VaadinIntroduction to Vaadin
Introduction to Vaadin
 

Viewers also liked

NAK 453_Livsvitenskapbygget
NAK 453_LivsvitenskapbyggetNAK 453_Livsvitenskapbygget
NAK 453_Livsvitenskapbygget
Rita Willassen
 
Garland Modified Brochure 2013
Garland Modified Brochure 2013Garland Modified Brochure 2013
Garland Modified Brochure 2013
Thomas McIntosh
 
Guias de profundizacion iii periodo nohora berrera
Guias de profundizacion iii periodo nohora berreraGuias de profundizacion iii periodo nohora berrera
Guias de profundizacion iii periodo nohora berrera
cole2013
 
Eat right. Eat fruit
Eat right. Eat fruitEat right. Eat fruit
Eat right. Eat fruit
Explorandom
 

Viewers also liked (20)

Revista Percepciones No. 1
Revista Percepciones No. 1Revista Percepciones No. 1
Revista Percepciones No. 1
 
Classement des web radios - OJD - octobre 2014
Classement des web radios - OJD - octobre 2014Classement des web radios - OJD - octobre 2014
Classement des web radios - OJD - octobre 2014
 
Excursión cerro del potosí
Excursión cerro del potosíExcursión cerro del potosí
Excursión cerro del potosí
 
NAK 453_Livsvitenskapbygget
NAK 453_LivsvitenskapbyggetNAK 453_Livsvitenskapbygget
NAK 453_Livsvitenskapbygget
 
Email virtual world
Email virtual worldEmail virtual world
Email virtual world
 
Russland TV & Online Marketing von Berger & Severyuk
Russland TV & Online Marketing von Berger & SeveryukRussland TV & Online Marketing von Berger & Severyuk
Russland TV & Online Marketing von Berger & Severyuk
 
Crear blog UM - Colegio de Médicos Prov. de Bs. As.
Crear blog   UM - Colegio de Médicos Prov. de Bs. As.Crear blog   UM - Colegio de Médicos Prov. de Bs. As.
Crear blog UM - Colegio de Médicos Prov. de Bs. As.
 
ICLOUD
ICLOUDICLOUD
ICLOUD
 
Kevin batista manejo y almacenamiento 5 de agosto
Kevin batista manejo y almacenamiento 5 de agostoKevin batista manejo y almacenamiento 5 de agosto
Kevin batista manejo y almacenamiento 5 de agosto
 
MINI KITS: HAZ ALGO CONMIGO
MINI KITS: HAZ ALGO CONMIGOMINI KITS: HAZ ALGO CONMIGO
MINI KITS: HAZ ALGO CONMIGO
 
Nuevas tendencias de tanga
Nuevas tendencias de tangaNuevas tendencias de tanga
Nuevas tendencias de tanga
 
Fotoactiva empresas
Fotoactiva empresasFotoactiva empresas
Fotoactiva empresas
 
Ahmed Zaky cv
Ahmed Zaky cvAhmed Zaky cv
Ahmed Zaky cv
 
The Death of Content Marketing - 2015
The Death of Content Marketing - 2015The Death of Content Marketing - 2015
The Death of Content Marketing - 2015
 
Garland Modified Brochure 2013
Garland Modified Brochure 2013Garland Modified Brochure 2013
Garland Modified Brochure 2013
 
What's Your Plan?
What's Your Plan?What's Your Plan?
What's Your Plan?
 
Gestor de proyectos subrgrupo A.. Grupo 4: Reciclar es Ganar.
Gestor de proyectos subrgrupo A.. Grupo 4: Reciclar es Ganar.Gestor de proyectos subrgrupo A.. Grupo 4: Reciclar es Ganar.
Gestor de proyectos subrgrupo A.. Grupo 4: Reciclar es Ganar.
 
Guias de profundizacion iii periodo nohora berrera
Guias de profundizacion iii periodo nohora berreraGuias de profundizacion iii periodo nohora berrera
Guias de profundizacion iii periodo nohora berrera
 
Treball final de carrera. pujol, xavi. estudi d'accessibilitat al parc natura...
Treball final de carrera. pujol, xavi. estudi d'accessibilitat al parc natura...Treball final de carrera. pujol, xavi. estudi d'accessibilitat al parc natura...
Treball final de carrera. pujol, xavi. estudi d'accessibilitat al parc natura...
 
Eat right. Eat fruit
Eat right. Eat fruitEat right. Eat fruit
Eat right. Eat fruit
 

Similar to Skyrocketing Web APIs

Benefit of CodeIgniter php framework
Benefit of CodeIgniter php frameworkBenefit of CodeIgniter php framework
Benefit of CodeIgniter php framework
Bo-Yi Wu
 
Hacking Client Side Insecurities
Hacking Client Side InsecuritiesHacking Client Side Insecurities
Hacking Client Side Insecurities
amiable_indian
 
SQL Server 2008 Security Overview
SQL Server 2008 Security OverviewSQL Server 2008 Security Overview
SQL Server 2008 Security Overview
ukdpe
 
Sp 29 two_factor_auth_guide
Sp 29 two_factor_auth_guideSp 29 two_factor_auth_guide
Sp 29 two_factor_auth_guide
Hai Nguyen
 

Similar to Skyrocketing Web APIs (20)

Replay Solutions CFD
Replay Solutions CFDReplay Solutions CFD
Replay Solutions CFD
 
Benefit of CodeIgniter php framework
Benefit of CodeIgniter php frameworkBenefit of CodeIgniter php framework
Benefit of CodeIgniter php framework
 
Bh Win 03 Rileybollefer
Bh Win 03 RileybolleferBh Win 03 Rileybollefer
Bh Win 03 Rileybollefer
 
Hacking Client Side Insecurities
Hacking Client Side InsecuritiesHacking Client Side Insecurities
Hacking Client Side Insecurities
 
HPE Data Protector Administrator's Guide
HPE Data Protector Administrator's GuideHPE Data Protector Administrator's Guide
HPE Data Protector Administrator's Guide
 
MongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDBMongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDB
 
Microservices security - jpmc tech fest 2018
Microservices security - jpmc tech fest 2018Microservices security - jpmc tech fest 2018
Microservices security - jpmc tech fest 2018
 
Techdays Helsinki - Creating the distributed apps of the future using dapr - ...
Techdays Helsinki - Creating the distributed apps of the future using dapr - ...Techdays Helsinki - Creating the distributed apps of the future using dapr - ...
Techdays Helsinki - Creating the distributed apps of the future using dapr - ...
 
Best practices in using Salesforce Metadata API
Best practices in using Salesforce Metadata APIBest practices in using Salesforce Metadata API
Best practices in using Salesforce Metadata API
 
Best practices in using Salesforce Metadata API
Best practices in using Salesforce Metadata APIBest practices in using Salesforce Metadata API
Best practices in using Salesforce Metadata API
 
Big security for big data
Big security for big dataBig security for big data
Big security for big data
 
PeopleSoft: HACK THE Planet^W university
PeopleSoft: HACK THE  Planet^W universityPeopleSoft: HACK THE  Planet^W university
PeopleSoft: HACK THE Planet^W university
 
SQL Server 2008 Security Overview
SQL Server 2008 Security OverviewSQL Server 2008 Security Overview
SQL Server 2008 Security Overview
 
ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013
 
AGADOS function & feature Chapter-02 biz logic define
AGADOS function & feature Chapter-02 biz logic defineAGADOS function & feature Chapter-02 biz logic define
AGADOS function & feature Chapter-02 biz logic define
 
Sp 29 two_factor_auth_guide
Sp 29 two_factor_auth_guideSp 29 two_factor_auth_guide
Sp 29 two_factor_auth_guide
 
Asp.Net MVC Framework Design Pattern
Asp.Net MVC Framework Design PatternAsp.Net MVC Framework Design Pattern
Asp.Net MVC Framework Design Pattern
 
Decomposing the Monolith using modern-day .NET and a touch of microservices
Decomposing the Monolith using modern-day .NET and a touch of microservicesDecomposing the Monolith using modern-day .NET and a touch of microservices
Decomposing the Monolith using modern-day .NET and a touch of microservices
 
Developing applications with a microservice architecture (svcc)
Developing applications with a microservice architecture (svcc)Developing applications with a microservice architecture (svcc)
Developing applications with a microservice architecture (svcc)
 
Modelibra Software Family
Modelibra Software FamilyModelibra Software Family
Modelibra Software Family
 

More from Daniel Cerecedo

More from Daniel Cerecedo (8)

From Legacy to the Cloud and Beyond
From Legacy to the Cloud and BeyondFrom Legacy to the Cloud and Beyond
From Legacy to the Cloud and Beyond
 
Drone Continuous Integration
Drone Continuous IntegrationDrone Continuous Integration
Drone Continuous Integration
 
Introducción a Story Mapping & más
Introducción a Story Mapping & másIntroducción a Story Mapping & más
Introducción a Story Mapping & más
 
API Centric Patterns
API Centric PatternsAPI Centric Patterns
API Centric Patterns
 
Todo sobre mis APIs
Todo sobre mis APIsTodo sobre mis APIs
Todo sobre mis APIs
 
IT para Product Managers
IT para Product ManagersIT para Product Managers
IT para Product Managers
 
Battelfield REST, API Development from the trenches
Battelfield REST, API Development from the trenchesBattelfield REST, API Development from the trenches
Battelfield REST, API Development from the trenches
 
API Centric
API CentricAPI Centric
API Centric
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
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
 
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
 
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
 
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
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
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
 
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...
 

Skyrocketing Web APIs