title: RxJava 2.x: Should I use Flowable or Single/Completable?
body: <p>I'm developing an Android app using Clean Architecture and I'm migrating it to RxJava 2.x. I have to make some network requests to a soap service, so I defined the api interface in the domain module:</p>
  
  <pre><code>public interface SiginterApi {
      Observable&lt;User&gt; login(String user, String password);
      ...
      Observable&lt;List&lt;Campaign&gt;&gt; getCampaigns(List&lt;Long&gt; campaignIds);
  }
  </code></pre>
  
  <p>I've read that a network request should be made with "<code>Flowable</code>", because of the backpressure management since it's a 'cold observable'. On the other hand, I know the result of the request will be success (with the response) or error, so I don't know if I should use <code>Flowable</code> or <code>Single</code> or even <code>Observable</code>.</p>
  
  <p>Furthermore, I have a database accesses like this:</p>
  
  <pre><code>public interface UserRepository extends Repository {
      Observable&lt;Void&gt; saveUser(String username, String hashedPassword, boolean logged, User user);
      ...
      Observable&lt;User&gt; findUser(String username, String hashedPassword);
  }
  </code></pre>
  
  <p>I don't know if I should use <code>Completable</code>/<code>Flowable</code>/<code>Observable</code> in <code>saveUser</code> method and <code>Single</code>/<code>Flowable</code>/<code>Observable</code> in <code>findUser</code> method.</p>