Sanjibukai

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..

Showing Posts 1 to 2

outlog

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

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.

— All posts loaded —

Where Next? Top

Trending in Questions Top

stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New
water
I’m aware of 2 such projects, are there others? git: GitHub - team-alembic/realworld: A fullstack Phoenix LiveView application with back...
New
peck
Hi everyone. My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
leoschweizer
Hi, we run different LLM models across a cluster, with each node loading a configurable subset. Model-specific queues let nodes consume ...
New
csmr
Hi all, I’m new here and would like to hear peoples views on my Elixir/Phoenix based game-engine! :smiley: Mutonex gamedesign was finish...
New
perzanko
Do we have maintainer of absinthe-graphql/dataloader here? We have a PR that we’d like to merge to the library. Relatively small additive...
New
Stef-Verniers
Hello I’ve been coding in Elixir for almost two years now because of my current job where we implemented Elixir in our application. But ...
New

Other Trending Topics Top

dominicletz
Hey there, I haven’t seen a list of useful Elixir specific skills for the popular AI tools yet so I’m starting one here with my first. ...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews