SlideShare una empresa de Scribd logo
1 de 65
Descargar para leer sin conexión
Where do I put my
Business Logic?
Antonio de la Torre
@adelatorrefoss
March 28th 2014
Grails is not my Domain Model
Antonio de la Torre
@adelatorrefoss
Engineer & Agile Coach @ Kaleidos
Madrid, Spain
Me
A lot of questions
&
one Proposal
1st. step
All code inside Controller
Scaffolding helps
Common methods
MVC
&
Skinny Controller
Fat Model
2nd. step
Move to Domain Model
Extra large User
God Object
&
Services layer
3rd. step
Move to Services
And now XXL Services
Anemic Model
&
Transaction Script
Problems
Service with too much
responsibility
1.- in Creation
complex objects, constraints and invariants
2.- too much invocations
a lot of injected services, no separation
3.- how to save()?
addTo, hstore, GORM, mongo, ...
Persistence is a
Hardware problem
No OOP
We implement
behaviour in Agile
Where is our
Business Logic?
but …
here it is ...
How looks like our unit tests?
mocks & stored data
Actions
Actions
Single Responsibility Principle (SRP)
SOLID
Tell, don’t ask
“Object Calisthenics. 9 steps to better SW design” , Jeff
Bay
GRASP
… are all smells
OOP?
What about FP?
Functional Programming
- Inmutability
- Transaction scripts
- Stateless services
- Stateless API
- Rare workflows …
- Objects with state… but we don’t usually use them
“Why OO in web, when usually is
DB -> Object -> Process -> Object -> DB”
Functional Programming for the Object-Oriented
Programmer
Brian Marick
So better if we use
Agnostic Patterns
Domain Driven Design
by Eric Evans
DDD
“The goal of domain-
driven design is to create
better software by
focusing on a model of the
domain rather than the
technology”
Tackling complexity
DDD is a way of dealing with complexity.
Complex is easy. Simple is a lot harder.
Ubiquitous Language
“A language structured around the domain
model and used by all team members to
connect all the activities of the team with the
software”
DDD leads to
Model Driven Design
Test your model
Behaviour centric
Layered Arquitecture
Diagram
Entities
“When an object is distinguished by its identity,
rather than its attributes, make this primary to
its definition in the model”
Value Objects
“When you care only about the attributes of
an element of the model, classify it as a
VALUE OBJECT.
Don’t give it any identity…”
Services
“When a significant process or transformation
in the domain is not a natural responsibility of
an ENTITY or VALUE OBJECT, add an
operation to the model as a standalone
interface declared as a SERVICE.
Make the SERVICE stateless.”
Modules
“Choose MODULES that tell the story of the
system and contain a cohesive set of
concepts.”
Aggregates
“Cluster the ENTITIES and VALUE OBJECTS
into AGGREGATES and define boundaries
around each.
Choose one ENTITY to be the root of each
AGGREGATE, and control all access to the
objects inside the boundary through the root.
Allow external objects to hold references to the
root only.”
Factories
“Shift the responsibility for creating
instances of complex objects and
AGGREGATES to a separate object, which
may itself have no responsibility in the domain
model but is still part of the domain design.”
Repositories
“For each type of object that needs global
access, create an object that can provide the
illusion of an in-memory collection of all
objects of that type.”
Implementing
Implementing Entities
These are Domain Classes in Grails. They come with
persistence already resolved through GORM.
hasOne vs. belongsTo property can be used to
define the lifecycle of entities and their relationships.
Implementing Value Objects
In Grails, you can use “embedded” property in
GORM field to manage a value object.
And deal with them with POGO
or Command Objects
Implementing Services
With our Services in Grails
● Dependency Injection
● Transaction support
Implementing Modules
Grails plug-in mechanism.
Implementing Aggregates
Aggregates are implemented in the hasMany -
belongsTo relationship.
Can control the root access within a Service.
Implementing Factories
Implement Factories classes to create new
instances with an abstract interface…
It could be configurable with properties.
Implementing Repositories
Grails Service can be used to implement a
dedicated Repository object that simply
delegates its operation to Grails GORM.
All together
All together …
In a more complex Aggregation, create a service to
manage, this service acts as a Repository. Control
invariants.
To access a simple Entity use GORM.
In a Domain Model with hasOne and belongsTo can act as
an Aggregate Root, and use GORM directly.
And we reserve Factories to instantiate external providers,
like email service, S3 access, push mobile notifications,
and so on …
In code ...
Model your domain, create your business logic,
and separate it from your infrastructure.
Resources
Domain Driven Design
Eric Evans
http://www.slideshare.net/thinkddd/domain-driven-design-dddsydney-2011
- (Intro) Complex vs Simple
http://pragprog.com/articles/tell-dont-ask
- Tell, don't ask
http://juan-garcia-carmona.blogspot.com.es/2012/11/solid-y-grasp-buenas-practicas-hacia-el.html
- SOLID
- Spanish
http://www.martinfowler.com/bliki/AnemicDomainModel.html
- Anemic Model
Resources
http://www.slideshare.net/sergiopolo/introduccin-a-ddd
(Spanish)
- Building Blocks
http://www.slideshare.net/harshjegadeesan/domain-driven-design-presentation
STARRED
- Intro
- Building Blocks
http://www.slideshare.net/GlenWilson/domain-driven-design-pattern-summaries-presentation
- Extense document with Pattern Summaries
http://www.slideshare.net/ziobrando/taming-complex-domains-with-domain-driven-design-presentation
STARRED!!
- Building Blocks
- Large Scale DDD
Resources
http://www.slideshare.net/DimkaG/domain-driven-design-and-model-driven-development
- ideas to implement the building blocks.
http://blog.refactoringin.net/2011/08/17/grails-as-a-ddd-platform/
- Unique reference directly with Grails
- Repository??? with GORM…
Brian Marick - Functional Programming for the Object-Oriented Programmer
https://leanpub.com/fp-oo
http://www.mabishu.com/blog/2012/12/14/object-calisthenics-write-better-object-oriented-code/
Object Calisthenics Write Better OO Code
Javier Acero - Mi dominio es mio y no lo comparto
http://vimeo.com/69157481
(Spanish)

Más contenido relacionado

Similar a Where i put my business logic - Greach 2014, Madrid, Spain

Evolving your api architecture with the strangler pattern
Evolving your api architecture with the strangler patternEvolving your api architecture with the strangler pattern
Evolving your api architecture with the strangler patterndwcarter74
 
Software design principles - jinal desai
Software design principles - jinal desaiSoftware design principles - jinal desai
Software design principles - jinal desaijinaldesailive
 
Multi-tenancy with Rails
Multi-tenancy with RailsMulti-tenancy with Rails
Multi-tenancy with RailsPaul Gallagher
 
Introduction to Machine Learning - WeCloudData
Introduction to Machine Learning - WeCloudDataIntroduction to Machine Learning - WeCloudData
Introduction to Machine Learning - WeCloudDataWeCloudData
 
Introduction to Machine Learning - WeCloudData
Introduction to Machine Learning - WeCloudDataIntroduction to Machine Learning - WeCloudData
Introduction to Machine Learning - WeCloudDataWeCloudData
 
Nina Grantcharova - Approach to Separation of Concerns via Design Patterns
Nina Grantcharova - Approach to Separation of Concerns via Design PatternsNina Grantcharova - Approach to Separation of Concerns via Design Patterns
Nina Grantcharova - Approach to Separation of Concerns via Design Patternsiasaglobal
 
ExperiaSphere: Open-Source Management and Orchestration--Introduction
ExperiaSphere: Open-Source Management and Orchestration--IntroductionExperiaSphere: Open-Source Management and Orchestration--Introduction
ExperiaSphere: Open-Source Management and Orchestration--Introductiontnolle
 
Builiding Modular monoliths that can scale to microservices. JBCNConf 2021
Builiding Modular monoliths that can scale to microservices. JBCNConf 2021Builiding Modular monoliths that can scale to microservices. JBCNConf 2021
Builiding Modular monoliths that can scale to microservices. JBCNConf 2021David Gómez García
 
Design Patterns
Design PatternsDesign Patterns
Design Patternsimedo.de
 
How I ended up contributing to Magento core
How I ended up contributing to Magento coreHow I ended up contributing to Magento core
How I ended up contributing to Magento coreAlessandro Ronchi
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignMuhammad Ali
 
Gof design pattern
Gof design patternGof design pattern
Gof design patternnaveen kumar
 
Marionette - TorontoJS
Marionette - TorontoJSMarionette - TorontoJS
Marionette - TorontoJSmatt-briggs
 
The Clean Architecture
The Clean ArchitectureThe Clean Architecture
The Clean ArchitectureDmytro Turskyi
 
SOLID Principles and The Clean Architecture
SOLID Principles and The Clean ArchitectureSOLID Principles and The Clean Architecture
SOLID Principles and The Clean ArchitectureMohamed Galal
 
Beyond rails new
Beyond rails newBeyond rails new
Beyond rails newPaul Oguda
 

Similar a Where i put my business logic - Greach 2014, Madrid, Spain (20)

Evolving your api architecture with the strangler pattern
Evolving your api architecture with the strangler patternEvolving your api architecture with the strangler pattern
Evolving your api architecture with the strangler pattern
 
Software design principles - jinal desai
Software design principles - jinal desaiSoftware design principles - jinal desai
Software design principles - jinal desai
 
Multi-tenancy with Rails
Multi-tenancy with RailsMulti-tenancy with Rails
Multi-tenancy with Rails
 
Introduction to Machine Learning - WeCloudData
Introduction to Machine Learning - WeCloudDataIntroduction to Machine Learning - WeCloudData
Introduction to Machine Learning - WeCloudData
 
Introduction to Machine Learning - WeCloudData
Introduction to Machine Learning - WeCloudDataIntroduction to Machine Learning - WeCloudData
Introduction to Machine Learning - WeCloudData
 
Nina Grantcharova - Approach to Separation of Concerns via Design Patterns
Nina Grantcharova - Approach to Separation of Concerns via Design PatternsNina Grantcharova - Approach to Separation of Concerns via Design Patterns
Nina Grantcharova - Approach to Separation of Concerns via Design Patterns
 
ExperiaSphere: Open-Source Management and Orchestration--Introduction
ExperiaSphere: Open-Source Management and Orchestration--IntroductionExperiaSphere: Open-Source Management and Orchestration--Introduction
ExperiaSphere: Open-Source Management and Orchestration--Introduction
 
Builiding Modular monoliths that can scale to microservices. JBCNConf 2021
Builiding Modular monoliths that can scale to microservices. JBCNConf 2021Builiding Modular monoliths that can scale to microservices. JBCNConf 2021
Builiding Modular monoliths that can scale to microservices. JBCNConf 2021
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
How I ended up contributing to Magento core
How I ended up contributing to Magento coreHow I ended up contributing to Magento core
How I ended up contributing to Magento core
 
Introduction to AngularJs
Introduction to AngularJsIntroduction to AngularJs
Introduction to AngularJs
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Let's talk about... Microservices
Let's talk about... MicroservicesLet's talk about... Microservices
Let's talk about... Microservices
 
17612235.ppt
17612235.ppt17612235.ppt
17612235.ppt
 
Gof design pattern
Gof design patternGof design pattern
Gof design pattern
 
Marionette - TorontoJS
Marionette - TorontoJSMarionette - TorontoJS
Marionette - TorontoJS
 
The Clean Architecture
The Clean ArchitectureThe Clean Architecture
The Clean Architecture
 
Designingapplswithnet
DesigningapplswithnetDesigningapplswithnet
Designingapplswithnet
 
SOLID Principles and The Clean Architecture
SOLID Principles and The Clean ArchitectureSOLID Principles and The Clean Architecture
SOLID Principles and The Clean Architecture
 
Beyond rails new
Beyond rails newBeyond rails new
Beyond rails new
 

Más de Antonio de la Torre Fernández

20191116 DevFest 2019 The Legacy Code came to stay (El legacy vino para queda...
20191116 DevFest 2019 The Legacy Code came to stay (El legacy vino para queda...20191116 DevFest 2019 The Legacy Code came to stay (El legacy vino para queda...
20191116 DevFest 2019 The Legacy Code came to stay (El legacy vino para queda...Antonio de la Torre Fernández
 
ITSmf Astur18 La agilidad como motor de cambio en las organizaciones
ITSmf Astur18 La agilidad como motor de cambio en las organizacionesITSmf Astur18 La agilidad como motor de cambio en las organizaciones
ITSmf Astur18 La agilidad como motor de cambio en las organizacionesAntonio de la Torre Fernández
 
Taller Agile para emprendedores InnovAstur y Oviedo Emprende
Taller Agile para emprendedores InnovAstur y Oviedo EmprendeTaller Agile para emprendedores InnovAstur y Oviedo Emprende
Taller Agile para emprendedores InnovAstur y Oviedo EmprendeAntonio de la Torre Fernández
 
Discusiones y decisiones: herramientas para la efectividad
Discusiones y decisiones: herramientas para la efectividadDiscusiones y decisiones: herramientas para la efectividad
Discusiones y decisiones: herramientas para la efectividadAntonio de la Torre Fernández
 
CAS2016 Community of Need & Community of Solutions (December 1st 2016)
CAS2016 Community of Need & Community of Solutions (December 1st 2016)CAS2016 Community of Need & Community of Solutions (December 1st 2016)
CAS2016 Community of Need & Community of Solutions (December 1st 2016)Antonio de la Torre Fernández
 
CAS2014 - Integrando UX & Diseño en el Desarrollo Agil - La historia dos años...
CAS2014 - Integrando UX & Diseño en el Desarrollo Agil - La historia dos años...CAS2014 - Integrando UX & Diseño en el Desarrollo Agil - La historia dos años...
CAS2014 - Integrando UX & Diseño en el Desarrollo Agil - La historia dos años...Antonio de la Torre Fernández
 
ALE14 - Involving UX and Design in Agile Development #sketchnoting
ALE14 - Involving UX and Design in Agile Development #sketchnotingALE14 - Involving UX and Design in Agile Development #sketchnoting
ALE14 - Involving UX and Design in Agile Development #sketchnotingAntonio de la Torre Fernández
 
CAS 2012. Agile en equipos mixtos: Diseño y Desarrollo. Amainando tempestades
CAS 2012. Agile en equipos mixtos: Diseño y Desarrollo. Amainando tempestadesCAS 2012. Agile en equipos mixtos: Diseño y Desarrollo. Amainando tempestades
CAS 2012. Agile en equipos mixtos: Diseño y Desarrollo. Amainando tempestadesAntonio de la Torre Fernández
 
Nuevos negocios y empleos basados en el Software y el Conocimiento Libre
Nuevos negocios y empleos basados en el Software y el Conocimiento LibreNuevos negocios y empleos basados en el Software y el Conocimiento Libre
Nuevos negocios y empleos basados en el Software y el Conocimiento LibreAntonio de la Torre Fernández
 

Más de Antonio de la Torre Fernández (16)

20191116 DevFest 2019 The Legacy Code came to stay (El legacy vino para queda...
20191116 DevFest 2019 The Legacy Code came to stay (El legacy vino para queda...20191116 DevFest 2019 The Legacy Code came to stay (El legacy vino para queda...
20191116 DevFest 2019 The Legacy Code came to stay (El legacy vino para queda...
 
ITSmf Astur18 La agilidad como motor de cambio en las organizaciones
ITSmf Astur18 La agilidad como motor de cambio en las organizacionesITSmf Astur18 La agilidad como motor de cambio en las organizaciones
ITSmf Astur18 La agilidad como motor de cambio en las organizaciones
 
Taller Agile para emprendedores InnovAstur y Oviedo Emprende
Taller Agile para emprendedores InnovAstur y Oviedo EmprendeTaller Agile para emprendedores InnovAstur y Oviedo Emprende
Taller Agile para emprendedores InnovAstur y Oviedo Emprende
 
Discusiones y decisiones: herramientas para la efectividad
Discusiones y decisiones: herramientas para la efectividadDiscusiones y decisiones: herramientas para la efectividad
Discusiones y decisiones: herramientas para la efectividad
 
CAS2016 Community of Need & Community of Solutions (December 1st 2016)
CAS2016 Community of Need & Community of Solutions (December 1st 2016)CAS2016 Community of Need & Community of Solutions (December 1st 2016)
CAS2016 Community of Need & Community of Solutions (December 1st 2016)
 
El viaje de Angular1 a Angular2
El viaje de Angular1 a Angular2El viaje de Angular1 a Angular2
El viaje de Angular1 a Angular2
 
UX Agilista - UXSpain 2015
UX Agilista - UXSpain 2015UX Agilista - UXSpain 2015
UX Agilista - UXSpain 2015
 
CAS2014 - Integrando UX & Diseño en el Desarrollo Agil - La historia dos años...
CAS2014 - Integrando UX & Diseño en el Desarrollo Agil - La historia dos años...CAS2014 - Integrando UX & Diseño en el Desarrollo Agil - La historia dos años...
CAS2014 - Integrando UX & Diseño en el Desarrollo Agil - La historia dos años...
 
¿Se puede implementar una Cultura Ágil?
¿Se puede implementar una Cultura Ágil?¿Se puede implementar una Cultura Ágil?
¿Se puede implementar una Cultura Ágil?
 
ALE - Why it's worth going?
ALE - Why it's worth going?ALE - Why it's worth going?
ALE - Why it's worth going?
 
ALE14 - Involving UX and Design in Agile Development #sketchnoting
ALE14 - Involving UX and Design in Agile Development #sketchnotingALE14 - Involving UX and Design in Agile Development #sketchnoting
ALE14 - Involving UX and Design in Agile Development #sketchnoting
 
A User Story - some ideas
A User Story - some ideasA User Story - some ideas
A User Story - some ideas
 
Mejoras CAS 2011
Mejoras CAS 2011Mejoras CAS 2011
Mejoras CAS 2011
 
CAS 2012. Agile en equipos mixtos: Diseño y Desarrollo. Amainando tempestades
CAS 2012. Agile en equipos mixtos: Diseño y Desarrollo. Amainando tempestadesCAS 2012. Agile en equipos mixtos: Diseño y Desarrollo. Amainando tempestades
CAS 2012. Agile en equipos mixtos: Diseño y Desarrollo. Amainando tempestades
 
Arquitectura en Alfresco
Arquitectura en AlfrescoArquitectura en Alfresco
Arquitectura en Alfresco
 
Nuevos negocios y empleos basados en el Software y el Conocimiento Libre
Nuevos negocios y empleos basados en el Software y el Conocimiento LibreNuevos negocios y empleos basados en el Software y el Conocimiento Libre
Nuevos negocios y empleos basados en el Software y el Conocimiento Libre
 

Último

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
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
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
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
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
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
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
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
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
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
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
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
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 

Último (20)

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
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...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
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
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
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
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.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...
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
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
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
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...
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 

Where i put my business logic - Greach 2014, Madrid, Spain