title: When to use Actors vs Futures?
body: <p>I am currently working on a Play! project that has the following architecture:</p>
  
  <p>Controllers -> Services (actors) -> Models (Regular case classes)</p>
  
  <p>For each request that comes in, we will issue a call to the service layers like so:</p>
  
  <pre><code>Service ? DoSomething(request, context)
  </code></pre>
  
  <p>We have a set number of these service actors behind an akka router that are created during app initialization, and is expandable on demand.</p>
  
  <p>And in the service we mostly do modest data manipulation or database calls:</p>
  
  <pre><code>receive = {
      case DoSomething(x, y) =&gt; {
             ...
             Model.doSometing(...)
             sender ! result
      }
  }
  </code></pre>
  
  <p>I am having second thoughts on whether we should be using actors for our services or just use Futures only. </p>
  
  <ol>
  <li><p>We do not have any internal state that needs to be modified in the service actors, whatever message comes in goes to a function and spits out the result. Isn't this the big strength of the actor model?</p></li>
  <li><p>We are doing a lot of tasks which seem to take a lot away from the actor model</p></li>
  <li><p>We aren't doing heavy computation and remoting doesn't make sense because most of the work is for the database and roundtriping to a remote actor to make some db call is unnecessary </p></li>
  <li><p>We do use reactivemongo, so every db call is non blocking. We can make a lot of these calls</p></li>
  </ol>
  
  <p>It seems to me that removing akka and just use Futures makes our life a lot easier, and we don't really lose anything.</p>