Sanjibukai
Hello everybody,
Tl;Dr: How to decouple the “web interface” from the “business logic” when a database is involved.
I watched the following talk from 2016 given by Lance Halvorsen https://www.youtube.com/watch?v=lDKCSheBc-8 about “Phoenix is not your application”.
I don’t know if this is something rather accepted in Elixir/Phoenix communities or if it’s only the thought of the speaker.. But I couldn’t agree more with this statement.
Particularly coming from Rails where Rails is considered your application (to quote DHH).. Which I never really agree with that.
I even heard about not using at all Ecto within Phoenix apps (applying --no-ecto) and letting a regular Elixir app taking care of the business logic. An example I heard is from the course Elixir for Programmers by Dave Thomas. But it seems (I didn’t took the course yet) that in this case the business logic doesn’t use a database.
And I somehow understand how the Phoenix web app will communicate with the Elixir “domain” app using OTP.
But, I wonder if this approach is still applicable to application that have a business logic that actually uses a database.
And so, if Ecto is intended to be used solely with Elixir? I mean without Phoenix..
Or put it in another way I want to know if Phoenix is doing a lot under the hood in using Ecto.
But I also took a look at the following talk from 2017 given by Chris McCord https://www.youtube.com/watch?v=tMO28ar0lW8 where he explains how Phoenix from 1.3 is distinguishing the web part (the web interface) from the logic/domain part.
So I wanted to ask you, Elixir/Phoenix folks, what’s the best approach you’ve experienced?
I’m asking this question in the context of an application that could become relatively large and complex regarding the logic/domain..
I’ve already had a bad experience with Rails working with large applications (very probably also because of a bad design too) and I really love the approach of having applications completely decoupled regarding the web interface and the business logic.
I hope this makes sense and I’m sorry if it’s rather confusing and also for the bad English..
Trending in Questions
Other Trending Topics
Latest Phoenix Threads
Latest on Elixir Forum
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #blog-post
- #ai
- #elixirconf-us
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 2- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
outlog
No, we just tend to mix them all up - call the DB directly in controllers/channels etc. - have business logic in controllers/channels etc. etc.
It makes good sense to keep them seperate - say in MyApp(ecto and business logic) and MyAppWeb(phoenix that calls MyApp for data and data processing)
this is a great talk on DDD - but also look into various materials on using “Contexts” search this forum etc.
ps: in a large app you might even see multiple Phoenix apps..
ityonemo
I have deployed elixir with no Phoenix or ecto, elixir with ecto and plug and no Phoenix. I’m currently deploying elixir with a phoenix admin panel, and a json API in plug (no ecto)… It all depends on what you need.