Submit Search
Upload
Pratical eff-scalaitaly-2017
•
Download as PPTX, PDF
•
3 likes
•
1,096 views
Eric Torreborre
Follow
How do we use DI and the eff monad at zalando to structure a microservice.
Read less
Read more
Technology
Slideshow view
Report
Share
Slideshow view
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 Pratical eff-scalaitaly-2017
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 Pratical eff-scalaitaly-2017
(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
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Michael W. Hawkins
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
RTylerCroy
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Katpro Technologies
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Miguel Araújo
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Malak Abu Hammad
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Delhi Call girls
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
The Digital Insurer
Slack Application Development 101 Slides
Slack Application Development 101 Slides
praypatel2
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Khem
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Neo4j
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Gabriella Davis
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
wesley chun
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
The Digital Insurer
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
debabhi2
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Puma Security, LLC
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Igalia
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
Principled Technologies
Recently uploaded
(20)
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Slack Application Development 101 Slides
Slack Application Development 101 Slides
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
Pratical eff-scalaitaly-2017
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