Submit Search
Upload
Practical Eff monad
•
Download as PPTX, PDF
•
3 likes
•
1,096 views
AI-enhanced title
Eric Torreborre
Follow
How do we use DI and the eff monad at zalando to structure a microservice.
Read less
Read more
Technology
Report
Share
Report
Share
1 of 117
Download now
Recommended
Pratical eff monad at Scaladays Chicago
Pratical eff monad at Scaladays Chicago
Eric Torreborre
Pratical eff
Pratical eff
Eric Torreborre
Hacking Real time Messaging with Firebase
Hacking Real time Messaging with Firebase
Artur Daschevici
Colin Bowern - The Not So Scary Side Of Asp.Net – Model View Controller In Th...
Colin Bowern - The Not So Scary Side Of Asp.Net – Model View Controller In Th...
Refresh Events
AWS MeetUp - Serverless Brewing IPAs
AWS MeetUp - Serverless Brewing IPAs
JorisConijn
Domain Driven Rails
Domain Driven Rails
Yan Pritzker
Exactly once delivery is a harsh mistress - DevOps Days TLV
Exactly once delivery is a harsh mistress - DevOps Days TLV
Natan Silnitsky
From ActiveRecord to EventSourcing
From ActiveRecord to EventSourcing
Emanuele DelBono
Recommended
Pratical eff monad at Scaladays Chicago
Pratical eff monad at Scaladays Chicago
Eric Torreborre
Pratical eff
Pratical eff
Eric Torreborre
Hacking Real time Messaging with Firebase
Hacking Real time Messaging with Firebase
Artur Daschevici
Colin Bowern - The Not So Scary Side Of Asp.Net – Model View Controller In Th...
Colin Bowern - The Not So Scary Side Of Asp.Net – Model View Controller In Th...
Refresh Events
AWS MeetUp - Serverless Brewing IPAs
AWS MeetUp - Serverless Brewing IPAs
JorisConijn
Domain Driven Rails
Domain Driven Rails
Yan Pritzker
Exactly once delivery is a harsh mistress - DevOps Days TLV
Exactly once delivery is a harsh mistress - DevOps Days TLV
Natan Silnitsky
From ActiveRecord to EventSourcing
From ActiveRecord to EventSourcing
Emanuele DelBono
Beyond The Rails Way
Beyond The Rails Way
Andrzej Krzywda
Compute @ edge
Compute @ edge
Mustafa Kırımlı
Wire once, rewire twice! (Haskell exchange-2018)
Wire once, rewire twice! (Haskell exchange-2018)
Eric Torreborre
The CQRS diet
The CQRS diet
Luismi Cavallé
THE SCIENCE AND ART OF BACKWARDS COMPATIBILITY
THE SCIENCE AND ART OF BACKWARDS COMPATIBILITY
Informatics Summit
Ruby loves DDD
Ruby loves DDD
Emanuele DelBono
Five Ways to Scale your API Without Touching Your Code
Five Ways to Scale your API Without Touching Your Code
3scale
Serverless in-action
Serverless in-action
Assaf Gannon
Converting LotusScript Agents to Java Agents
Converting LotusScript Agents to Java Agents
dominion
Extending the New Relic Platform
Extending the New Relic Platform
New Relic
Ruby on rails integration testing with minitest and capybara
Ruby on rails integration testing with minitest and capybara
Andolasoft Inc
Securing Kafka with SPIFFE @ TransferWise
Securing Kafka with SPIFFE @ TransferWise
👨💻 Levani Kokhreidze
5 Anti-Patterns in API Design - DDD East Anglia 2015
5 Anti-Patterns in API Design - DDD East Anglia 2015
Ali Kheyrollahi
Marrying angular rails
Marrying angular rails
Volker Tietz
[DevDay 2017] Serverless Architecture - Speaker: Trung Huynh - Software Engin...
[DevDay 2017] Serverless Architecture - Speaker: Trung Huynh - Software Engin...
DevDay.org
[DevDay 2017] ReactJS Hands on - Speaker: Binh Phan - Developer at mgm techno...
[DevDay 2017] ReactJS Hands on - Speaker: Binh Phan - Developer at mgm techno...
DevDay.org
Writing SPA in 2017
Writing SPA in 2017
Arek Flinik
No Graph Theory Required: Ember and GraphQL in Practice
No Graph Theory Required: Ember and GraphQL in Practice
Rocky Neurock
Synch calling asynchadd
Synch calling asynchadd
prathap kumar
Pratical eff-functional-conf
Pratical eff-functional-conf
Eric Torreborre
Twig internals - Maksym MoskvychevTwig internals maksym moskvychev
Twig internals - Maksym MoskvychevTwig internals maksym moskvychev
DrupalCampDN
Systems Monitoring with Prometheus (Devops Ireland April 2015)
Systems Monitoring with Prometheus (Devops Ireland April 2015)
Brian Brazil
More Related Content
What's hot
Beyond The Rails Way
Beyond The Rails Way
Andrzej Krzywda
Compute @ edge
Compute @ edge
Mustafa Kırımlı
Wire once, rewire twice! (Haskell exchange-2018)
Wire once, rewire twice! (Haskell exchange-2018)
Eric Torreborre
The CQRS diet
The CQRS diet
Luismi Cavallé
THE SCIENCE AND ART OF BACKWARDS COMPATIBILITY
THE SCIENCE AND ART OF BACKWARDS COMPATIBILITY
Informatics Summit
Ruby loves DDD
Ruby loves DDD
Emanuele DelBono
Five Ways to Scale your API Without Touching Your Code
Five Ways to Scale your API Without Touching Your Code
3scale
Serverless in-action
Serverless in-action
Assaf Gannon
Converting LotusScript Agents to Java Agents
Converting LotusScript Agents to Java Agents
dominion
Extending the New Relic Platform
Extending the New Relic Platform
New Relic
Ruby on rails integration testing with minitest and capybara
Ruby on rails integration testing with minitest and capybara
Andolasoft Inc
Securing Kafka with SPIFFE @ TransferWise
Securing Kafka with SPIFFE @ TransferWise
👨💻 Levani Kokhreidze
5 Anti-Patterns in API Design - DDD East Anglia 2015
5 Anti-Patterns in API Design - DDD East Anglia 2015
Ali Kheyrollahi
Marrying angular rails
Marrying angular rails
Volker Tietz
[DevDay 2017] Serverless Architecture - Speaker: Trung Huynh - Software Engin...
[DevDay 2017] Serverless Architecture - Speaker: Trung Huynh - Software Engin...
DevDay.org
[DevDay 2017] ReactJS Hands on - Speaker: Binh Phan - Developer at mgm techno...
[DevDay 2017] ReactJS Hands on - Speaker: Binh Phan - Developer at mgm techno...
DevDay.org
Writing SPA in 2017
Writing SPA in 2017
Arek Flinik
No Graph Theory Required: Ember and GraphQL in Practice
No Graph Theory Required: Ember and GraphQL in Practice
Rocky Neurock
Synch calling asynchadd
Synch calling asynchadd
prathap kumar
What's hot
(19)
Beyond The Rails Way
Beyond The Rails Way
Compute @ edge
Compute @ edge
Wire once, rewire twice! (Haskell exchange-2018)
Wire once, rewire twice! (Haskell exchange-2018)
The CQRS diet
The CQRS diet
THE SCIENCE AND ART OF BACKWARDS COMPATIBILITY
THE SCIENCE AND ART OF BACKWARDS COMPATIBILITY
Ruby loves DDD
Ruby loves DDD
Five Ways to Scale your API Without Touching Your Code
Five Ways to Scale your API Without Touching Your Code
Serverless in-action
Serverless in-action
Converting LotusScript Agents to Java Agents
Converting LotusScript Agents to Java Agents
Extending the New Relic Platform
Extending the New Relic Platform
Ruby on rails integration testing with minitest and capybara
Ruby on rails integration testing with minitest and capybara
Securing Kafka with SPIFFE @ TransferWise
Securing Kafka with SPIFFE @ TransferWise
5 Anti-Patterns in API Design - DDD East Anglia 2015
5 Anti-Patterns in API Design - DDD East Anglia 2015
Marrying angular rails
Marrying angular rails
[DevDay 2017] Serverless Architecture - Speaker: Trung Huynh - Software Engin...
[DevDay 2017] Serverless Architecture - Speaker: Trung Huynh - Software Engin...
[DevDay 2017] ReactJS Hands on - Speaker: Binh Phan - Developer at mgm techno...
[DevDay 2017] ReactJS Hands on - Speaker: Binh Phan - Developer at mgm techno...
Writing SPA in 2017
Writing SPA in 2017
No Graph Theory Required: Ember and GraphQL in Practice
No Graph Theory Required: Ember and GraphQL in Practice
Synch calling asynchadd
Synch calling asynchadd
Similar to Practical Eff monad
Pratical eff-functional-conf
Pratical eff-functional-conf
Eric Torreborre
Twig internals - Maksym MoskvychevTwig internals maksym moskvychev
Twig internals - Maksym MoskvychevTwig internals maksym moskvychev
DrupalCampDN
Systems Monitoring with Prometheus (Devops Ireland April 2015)
Systems Monitoring with Prometheus (Devops Ireland April 2015)
Brian Brazil
Scaling Machine Learning Systems up to Billions of Predictions per Day
Scaling Machine Learning Systems up to Billions of Predictions per Day
Carmine Paolino
Highly concurrent yet natural programming
Highly concurrent yet natural programming
Infinit
10 Principals for Effective Event-Driven Microservices with Apache Kafka
10 Principals for Effective Event-Driven Microservices with Apache Kafka
Ben Stopford
Monitoring your Python with Prometheus (Python Ireland April 2015)
Monitoring your Python with Prometheus (Python Ireland April 2015)
Brian Brazil
Cfalfresco
Cfalfresco
Yves Prignon
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Maarten Balliauw
Microservices in the Apache Kafka Ecosystem
Microservices in the Apache Kafka Ecosystem
confluent
Magento performancenbs
Magento performancenbs
varien
Magento's Imagine eCommerce Conference: Do You Queue?
Magento's Imagine eCommerce Conference: Do You Queue?
varien
10 Principals for Effective Event Driven Microservices
10 Principals for Effective Event Driven Microservices
Ben Stopford
Shift-left SRE: Self-healing on OpenShift with Ansible
Shift-left SRE: Self-healing on OpenShift with Ansible
Jürgen Etzlstorfer
ISI work
ISI work
dgarijo
Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...
IndicThreads
soa
soa
thiyagu0484
Documenting Your API
Documenting Your API
Mailjet
Smart Enterprise Application Integration with Apache Camel
Smart Enterprise Application Integration with Apache Camel
Kai Wähner
How to Build Complex Calls to APIs (Without Writing Any Code)
How to Build Complex Calls to APIs (Without Writing Any Code)
Safe Software
Similar to Practical Eff monad
(20)
Pratical eff-functional-conf
Pratical eff-functional-conf
Twig internals - Maksym MoskvychevTwig internals maksym moskvychev
Twig internals - Maksym MoskvychevTwig internals maksym moskvychev
Systems Monitoring with Prometheus (Devops Ireland April 2015)
Systems Monitoring with Prometheus (Devops Ireland April 2015)
Scaling Machine Learning Systems up to Billions of Predictions per Day
Scaling Machine Learning Systems up to Billions of Predictions per Day
Highly concurrent yet natural programming
Highly concurrent yet natural programming
10 Principals for Effective Event-Driven Microservices with Apache Kafka
10 Principals for Effective Event-Driven Microservices with Apache Kafka
Monitoring your Python with Prometheus (Python Ireland April 2015)
Monitoring your Python with Prometheus (Python Ireland April 2015)
Cfalfresco
Cfalfresco
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices in the Apache Kafka Ecosystem
Microservices in the Apache Kafka Ecosystem
Magento performancenbs
Magento performancenbs
Magento's Imagine eCommerce Conference: Do You Queue?
Magento's Imagine eCommerce Conference: Do You Queue?
10 Principals for Effective Event Driven Microservices
10 Principals for Effective Event Driven Microservices
Shift-left SRE: Self-healing on OpenShift with Ansible
Shift-left SRE: Self-healing on OpenShift with Ansible
ISI work
ISI work
Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...
soa
soa
Documenting Your API
Documenting Your API
Smart Enterprise Application Integration with Apache Camel
Smart Enterprise Application Integration with Apache Camel
How to Build Complex Calls to APIs (Without Writing Any Code)
How to Build Complex Calls to APIs (Without Writing Any Code)
More from Eric Torreborre
wire-all-the-things-lambda-days-2023.pdf
wire-all-the-things-lambda-days-2023.pdf
Eric Torreborre
The many faces of modularity
The many faces of modularity
Eric Torreborre
What haskell taught us when we were not looking
What haskell taught us when we were not looking
Eric Torreborre
Specs2, from starters to dessert and... a look in the kitchen
Specs2, from starters to dessert and... a look in the kitchen
Eric Torreborre
Streaming, effects and beautiful folds: a winning trilogy
Streaming, effects and beautiful folds: a winning trilogy
Eric Torreborre
The Eff monad, one monad to rule them all
The Eff monad, one monad to rule them all
Eric Torreborre
Easy di-slideshare
Easy di-slideshare
Eric Torreborre
Data generation, the hard parts
Data generation, the hard parts
Eric Torreborre
Origami, a monadic fold library for Scala
Origami, a monadic fold library for Scala
Eric Torreborre
Datatypes for the real world
Datatypes for the real world
Eric Torreborre
Specs2 3.4
Specs2 3.4
Eric Torreborre
DSLs with fold algebras
DSLs with fold algebras
Eric Torreborre
Specs2 whirlwind tour at Scaladays 2014
Specs2 whirlwind tour at Scaladays 2014
Eric Torreborre
Epic success \/ failure, refactoring to *real* FP
Epic success \/ failure, refactoring to *real* FP
Eric Torreborre
Vampire methods
Vampire methods
Eric Torreborre
Specs2 whirlwind-tour
Specs2 whirlwind-tour
Eric Torreborre
Scala days2013 proxyfactorybeandelegate
Scala days2013 proxyfactorybeandelegate
Eric Torreborre
Strong functional programming
Strong functional programming
Eric Torreborre
The Essence of the Iterator Pattern (pdf)
The Essence of the Iterator Pattern (pdf)
Eric Torreborre
The Essence of the Iterator Pattern
The Essence of the Iterator Pattern
Eric Torreborre
More from Eric Torreborre
(20)
wire-all-the-things-lambda-days-2023.pdf
wire-all-the-things-lambda-days-2023.pdf
The many faces of modularity
The many faces of modularity
What haskell taught us when we were not looking
What haskell taught us when we were not looking
Specs2, from starters to dessert and... a look in the kitchen
Specs2, from starters to dessert and... a look in the kitchen
Streaming, effects and beautiful folds: a winning trilogy
Streaming, effects and beautiful folds: a winning trilogy
The Eff monad, one monad to rule them all
The Eff monad, one monad to rule them all
Easy di-slideshare
Easy di-slideshare
Data generation, the hard parts
Data generation, the hard parts
Origami, a monadic fold library for Scala
Origami, a monadic fold library for Scala
Datatypes for the real world
Datatypes for the real world
Specs2 3.4
Specs2 3.4
DSLs with fold algebras
DSLs with fold algebras
Specs2 whirlwind tour at Scaladays 2014
Specs2 whirlwind tour at Scaladays 2014
Epic success \/ failure, refactoring to *real* FP
Epic success \/ failure, refactoring to *real* FP
Vampire methods
Vampire methods
Specs2 whirlwind-tour
Specs2 whirlwind-tour
Scala days2013 proxyfactorybeandelegate
Scala days2013 proxyfactorybeandelegate
Strong functional programming
Strong functional programming
The Essence of the Iterator Pattern (pdf)
The Essence of the Iterator Pattern (pdf)
The Essence of the Iterator Pattern
The Essence of the Iterator Pattern
Recently uploaded
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
Mattias Andersson
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
Dubai Multi Commodity Centre
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
LoriGlavin3
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
Stephanie Beckett
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
Lonnie McRorey
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
Alan Dix
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
Dilum Bandara
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
Rizwan Syed
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
Addepto
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
mohitsingh558521
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
UiPathCommunity
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
Fwdays
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
Commit University
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
LoriGlavin3
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
Curtis Poe
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
Fwdays
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
BkGupta21
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Precisely
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
LoriGlavin3
Recently uploaded
(20)
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Practical Eff monad
1.
Eric Torreborre Practical Eff monad Doing
it for real
2.
3.
4.
About Zalando
5.
Brand solutions
6.
Article service
7.
Articleservice Zeos products business-partners stocks 59.95 € 10 items
8.
How to deal?
9.
Components!
10.
11.
DI?
12.
Cake?
13.
Guice?
14.
Spring?
15.
Radical
16.
Constructor injection!
17.
18.
19.
20.
Grafter
21.
22.
23.
24.
25.
HttpServer Routes Services Clients
26.
27.
PriceHttpService PriceHttp4sService
28.
29.
Always one default
30.
In a library?
31.
32.
reader all the way down!
33.
Unit testing?
34.
Integration testing?
35.
HttpServer Routes Services Clients
36.
HttpServer Routes Services Clients
37.
Tree rewriting!
38.
Kiama
39.
40.
41.
Singleton?
42.
HttpServer Routes Services Clients
43.
HttpServer Routes Services Clients
44.
45.
46.
47.
48.
Stay lazy!
49.
50.
Start order?
51.
52.
53.
lazy reader rewrite start
54.
Eff please!
55.
56.
57.
What the Eff?
58.
59.
60.
61.
Out of the
box
62.
63.
64.
65.
Article service
66.
FlowId
67.
HttpServer Routes Services Clients flowId flowId flowId flowId
68.
69.
Logged
70.
71.
72.
73.
74.
Applicative
75.
Concurrent execution
76.
MasterData PriceService Inventory
77.
78.
79.
Async
80.
81.
TimedFutureEffect TaskEffect TaskEffect TaskEffect TwitterFutureEffect
82.
FlowId Logged Task Eval
83.
No Reader[Config, ?]
84.
Mitsaeks we made
85.
Stack definition
86.
87.
At the latest
moment!
88.
Errors
89.
3 possibilities
90.
1 error style
per layer Translation between layers
91.
Use one error
type
92.
Use local effects!
93.
94.
95.
96.
Everything is a (Free)
DSL?
97.
98.
Make price request request [PriceRequest] [PriceRequest] response Interpret
request [PriceRequest, Async] [Async]
99.
100.
Get price price [Async] [Async]
101.
102.
Time: effect or component?
103.
Get status status [Eval] now? [Eval] now
104.
Get status status [Eval] now? [Eval] now FreezedTime
105.
Get status status [Eval, Timed] runFreezedTime(status) [Eval]
106.
Recap
107.
108.
109.
110.
More Applicative Goodies!
111.
Batching
112.
Translation client Inventory
113.
Translation client Inventory
Editor's Notes
You learn new concepts....
Now where to start?
How do we use Eff at Zalando?
Brand solutions - shop in shop (with CMS / analytics) - onboarding new merchants - small store - big brand
Article service - onboarding new merchants - find an article id from the EAN - set stock, set price -> ready to sell!
- evolving front-end APIs - evolving back-end services - evolving libraries
What’s the proven technique for dealing with these constraints?
Interface + implementation
Encapsulate technical alternatives, not processes
Cake Pattern? Guice? Spring?
Cake Pattern? Guice? Spring?
Cake Pattern? Guice? Spring?
Cake Pattern? Guice? Spring?
Radical idea: constructor injection
Radical idea: constructor injection
Radical idea: constructor injection
Radical idea: constructor injection
Radical idea: constructor injection
Radical idea: constructor injection
Radical idea: constructor injection
Interfaces
Radical idea: constructor injection
Radical idea: constructor injection
Radical idea: constructor injection
Radical idea: constructor injection
Radical idea: constructor injection
Laziness is essential, nothing should start!
Laziness is essential, nothing should start!
Lazyness is essential, nothing should start!
Start services from the bottom-up and collect results
What has Eff to do with all of this?
Which effects we want to use? Future, Reader, Writer?
What has Eff to do with all of this?
Either as request
Either as request, interpreted with runEither
Article service - onboarding new merchants - find an article id from the EAN - set stock, set price -> ready to sell!
Radical idea: constructor injection
Concurrent execution Batching
Concurrent execution Batching
Concurrent execution Batching
Concurrent execution Batching
What’s the problem with Future again?
What’s the problem with Future again?
This means that we don’t have to expose all effects at the component level!
How do we deal with errors?
How do we deal with errors?
How do we deal with errors? - low level - domain level
How do we deal with errors?
How do we deal with errors?
This means that we don’t have to expose all effects at the component level!
This means that we don’t have to expose all effects at the component level!
In general components are not interpreters except to
Make price request gives you back a *program*
Make price request gives you back a *program*
Make price request gives you back a *computation*
Recap on a service signature
Recap on a service signature
That's all folks!
How do we deal with errors? - low level - domain level
Concurrent execution Batching
Concurrent execution Batching
Batching
Concurrent execution Batching
Concurrent execution Batching
Concurrent execution Batching
Concurrent execution Batching
Download now