The Session
For Roskilde Festival we needed a great CMS, but with rapid horizontal scaling. To solve this problem we chose Umbraco for the backoffice and a slim, stateless Node.js API server. This is our story.
http://www.codegarden15.com/sessions/marrying-umbraco-and-nodejs/
2. WHO AM I
EMIL BAY
2
22 year old ”Full Stack Developer” at
Umwelt.
Primarily:
• Node.js
• DevOps
• Frontend “engineering”
Education:
• Self-taught
• DTU Dropout (Mathematics)
Previous experience:
• Freelancing since 13
• DTU HPC
3. ROSKILDE FESTIVAL
Established
1971
Donations 1971-2013
€ 26.4 million
3
2015 marks the
45th festival
Largest music festival in Northern
Europe.
Volunteers
21.000+
Performing bands
180
Artists
3.000
Festivalgoers
130.000
Media people
5.000
4. MUSIKKEN
4
Vi vil ikke være en musikfestival for
alle.
Vi vil kun være for dem, der vil
udfordres, der vil flyttes, og som vil
inspireres.
Dem som vil noget nyt.
Kommer man her for at se noget,
man kender i forvejen, så er man
gået forkert.
5. INTRODUCTION
OLD SYSTEM
• Typo3 based system
• Slow, crashing on a regular basis
• Hard to maintain, but publishing-wise and technically
• Didn’t scale well under RF’s high, burst load
REQUIREMENTS
• Highly elastic scaling
• Easy content editing
• Stability
• Integrated media experience
• Media management
• SEO Friendly
TECHNICAL INSIGHTS
• High read load (100 - 1000’s of reads a minute)
• Low write load (few times a day/week)
• Stateless
• Lots of relational, structured data
5
6. PROS
• Single technology
• Proven
• Experience
• SEO Friendly
CONS
• Hard to auto-scale
• “Deep fried” ≈ “Slow”
6
NOTES
Could probably have worked with heavy caching in front,
but we didn’t have experience deploying this at scale
TIMELINE OF ARCITECHTURAL CONSIDERATIONS @ UMWELT
Pure umbraco Umbraco + node Umbraco + node + mongo
7. PROS
• Easy to auto-scale
• Proven
• Experience
CONS
• “Deep fried” ≈ “Slow”
• Duplication of effort -
Implement Umbraco data
models in Javascript
7
NOTES
Known as a “Two-tier CMS” where publishing and delivery
are separate given their differing performance
requirements
TIMELINE OF ARCITECHTURAL CONSIDERATIONS @ UMWELT
Pure umbraco Umbraco + node Umbraco + node + mongo
8. PROS
• Easy to auto-scale
• Extremely fast
• “Baked” content
CONS
• Still no SEO
8
TIMELINE OF ARCITECHTURAL CONSIDERATIONS @ UMWELT
Pure umbraco Umbraco + node Umbraco + node + mongo
9. PROS
• Easy to auto-scale
• Extremely fast
• No 3rd party codebase
to maintain (“Native”)
CONS
• Still no scaling of uncacheable
computations
9
TIMELINE OF ARCITECHTURAL CONSIDERATIONS @ UMWELT
Pure umbraco Umbraco + node Umbraco + Heavy Caching
10. FINAL TECHNOLOGY STACK
Technologies Integrations Providers
2-way sync with 3rd party app Fully integrated music player
(fallback)
Livestreaming @ frontpage
Sharing lineups on SoMeRecommendation engine for artists
Fully integrated music player
Easily maintain all historical lineups,
artists and content
Fully scalable API to support website
and 3rd party apps
Richmedia single-page app
11. SOLUTION
ROSKILDE FESTIVAL
News, schedules, bandlists, fully
integrated musikplayer.
Close integration with 3rd party app
for use during the festival.
Single-page app with fully
customisable content from CMS.
12. ARCHITECTURE
12
Umbraco v7.0
Maintain sitestructure & content.
Artists, stages, lineup for current
and all previous festivals.
MongoDB
All CMS content persisted. Artists &
lineups stored seperately.
HTML snapshots stored seperately.
NodeJS
API
Service bus
AngularJS
Rendering
SPOTIFY
SOUNDCLOUD
FACEBOOK