All Commentary
Friday, September 9, 2016

FEE.org: Built to Run in the Cloud

The nuts and bolts of a digital revamp.


From a user point of view, a website is just a website, a delivery system for things you want to know. But for such a system to be great and always progressing in functioning and content, there must be a large machinery that users do not see. It begins with the realization that there is no end state, no final release of some perfect body of code and content. Website management is an ongoing process, as iterative as the market economy itself. 

Here is an overview of how this works at FEE.org. 

Development Process

Here is the process we followed to build a new platform for FEE.org based on the Umbraco CMS:

  1. Interview stakeholders – understand their workflow and goals for the new site.
  2. Perform in-depth site survey – build a sitemap to understand site structure.
  3. Document types/page fields – survey all fields (properties) used on each page, think about how they are related.
  4. Template design – a combination of creating the visual design of the old site and building static HTML for the new one.
  5. Document type design – implement the document types in Umbraco based on the Page Field survey results.
  6. Custom functionality – implement all the custom functionality not provided by the Umbraco CMS – payments, custom widgets, etc.
  7. Content migration – prepare a set of migration tools which would be run at the time of the switch.
  8. Live release – execute the switch, including the final migration of content and media from old site to new.

Tools

  • Slack: Slack is used for most internal communications.
  • JIRA: JIRA is used to manage all development tasks.
  • BitBucket/SourceTree (git): contains source code & database scripts.
  • TeamCity: build server used for continuous integration of the dev servers and production releases.
  • Amazon Web Services:  hosts the application, include website, DB, email, storage, etc.
  • Evernote:  a project notebook contains interview notes and other various technical snippets which I might need to refer to.
  • LastPass: password manager which I use to store all project credentials and share them with the team.

Essential Tools in Detail:

JIRA Release Schedule:

A JIRA project is the first development artifact that I create. It contains the development plan, all the individual dev tasks, time tracking, and links to git commits. A project schedule is important to stakeholders, so I organize a high-level tasks list into pre-launch and post-launch releases:

jira-versions

JIRA Kanban Board

The JIRA Agile Board is how I organize my tasks. If there is a dedicated PM who is familiar with scrum, I will use the scrum board, otherwise I will use the more flexible Kanban board. I configured it into the standard four lanes:

board

JIRA Task Detail:

Pretty standard. I link JIRA to git so the commits for each task are visible, and also to TeamCity, so that the build status for each commit is linked. As I work on stories, I add screenshots and technical notes, for myself as much as the tester/product owner.

story-details

BitBucket/SourceTree

I use a modified git-flow process – each commit is tagged with a build, releases are tagged by date, and released code is merged to master.

sourcetreeappp

TeamCity Continuous Integration

Each source code commit is automatically deployed to the dev site. Live releases are triggered from TeamCity hook. I configure the Publish Web wizard in Visual Studio – this creates an msbuild configuration which I can trigger in the TeamCity build:

TeamCity2

New Relic Monitoring

New Relic is pretty essential to running lots of websites without an ops team. It sends alerts when there is any problem and makes it easy to identity problematic components.

NewRelic

Amazon Elastic Load Balancer  

A load balancer monitors the health of our servers every few seconds and automatically ads additional capacity when it is needed.  Server time is purchased on the Amazon Spot Instance market using a competitive bidding process.

FEE.org Cloud Architecture

Here is the big-picture view of the architecture behind FEE.org:

 


  • David Veksler is the former Director of Technology at the Foundation for Economic Education and CTO of Royalty Exchange.