title: What are the Benefits of Spring Cloud Dataflow?
body: <p>Based on what I've seen, creating a stream in Spring Cloud Dataflow (SCDF) will deploy the underlying applications, bind the communication service (like RabbitMQ), set the Spring Cloud Stream environment variables, and start the applications.  This could all be done manually easily using a cf push command.</p>
  
  <p>Meanwhile, I've been running into some drawbacks with Spring Cloud Dataflow:</p>
  
  <ul>
  <li>SCDF Server is a memory hog on PCF (I have a stream with only 6 applications, and yet I'm needing about 10GB for the server)</li>
  <li>No flexibility on application naming, memory, instances, etc.  (All the things that you would typically set in the manifest.yml)</li>
  <li>Integration with build tools (like Bamboo) are going to require extra work because we have to use the SCDF CLI rather than just the PCF CLI</li>
  <li>Existing streams cannot be modified.  To do a blue-green deployment, you have to deploy the application manually (binding the services and setting the environment variables manually).  And then once a blue-green deployment is done, SCDF shows the stream as Failed, because it doesn't know that one of the underlying applications has changed.</li>
  <li>Various errors I've run into, like MySQL Primary Key Constraint errors when trying to redeploy a failed stream</li>
  </ul>
  
  <p>So what am I missing?  Why would using Spring Cloud Dataflow be beneficial to just manually deploying the applications?</p>