Finishing up Sprint #2: A Basic But Horizontally Scalable Thing

As a quick refresher. Project Butterfly is designing a massively horizontally scalable convention management site.  So far I've:

  • Picked technology for the front and back (Javascript/Node.JS/Maria DB for MySQL)
  • Put together a basic architecture
  • Called out the need for an Administration app up front
  • Established a basic ERD with all of the one-to-one and one-to-many relationships
  • Broke the architecture into front end and service parts
  • Established a REST contract.

At this point we'd have to write code!  But because this is a thought experiment -- and mostly due to extreme time limitations -- I won't be actually writing the code.  In the imaginary universe where code is written, at the end of this sprint I would be delivering components to VMs.  By hand.  Likely in error prone tarballs.  Painful.  Time to add that to the backlog...

Even in simply talking through the first sprint the architecture has gone through a radical set of changes.

Here is what it looks like after fast iterations:

Converting a Fat App into a Scalable Architecture with Microservices

Converting a Fat App into a Scalable Architecture with Microservices

Reviewing what we have and what we know about the system, we add to our current running backlog.  New interesting pieces of the system have appeared!  This needs prioritization from the product owner to put these dots into a usable list for the next sprint.  A business PO would likely prioritize reporting and new flows for the front end website to drive feature development but! Screw usability! 

Instead, this will be about making this system huge and picking off the first interesting technological challenge -- interfacing with a third party system.

The bolded dots are the dots prioritized for the next sprint.  Everything else goes into the backlog.  I'm looking at you, automated deployment.

Things for the backlog

  • Creating a nice flow for the website.
  • Adding prices to options.
  • Creating reports.
  • Creating accounts
  • Session Management.
  • Automated configuration
  • Automated deployment
  • Load Balancing
  • Reporting database
  • Interfacing with local lodging options.
  • Add Caching
  • Doing Interesting Things with Logs