title: AWS Scalable Architecture Design
body: <p>I am currently implementing my first web app utilizing AWS infrastructure and learning the basics.  I've run into a design issue so came up with the following scenario to illustrate my problem:</p>
  
  <p>Suppose I were making a web app that saves / prints a website as pdf and stores it on S3.  The front end has a single form.  A user would type in a url for the site they want to save to pdf and click submit.  The app should print the page at the given url to pdf and present the file to the user.</p>
  
  <p>To make the app scalable I imagined clicking submit will send an SQS message to a queue with the url to process.  A fleet of workers could then consume from this queue, create the pdfs &amp; store them in S3, then store the S3 key / path to SimpleDB.  The trouble I am having is how does a worker then notify the web app that processing is complete?</p>
  
  <p>Example Design:
  <img src="https://i.stack.imgur.com/0Pc3J.png" alt="Example Design"></p>
  
  <p>I imagine the Web App could continually poll SimpleDB until an entry for the S3 key appears however this solution seems a bit clumsy.  I feel this is a pattern / problem must commonly be encountered.  Could anyone provide a common way to address this?  </p>
  
  <p>Additionally any recommended resources for common design patterns in the cloud would be greatly beneficial.</p>