Upgrade to Pro — share decks privately, control downloads, hide ads and more …

FC Basel on Azure by Jürgen Gutsch

FC Basel on Azure by Jürgen Gutsch

Three years ago we released a completely new version of the digital presentation (website, mobile apps, live ticker, image database, videos, shop and extranet) of one of the most successful soccer clubs In Switzerland. All of the services of that digital presentation are designed to run on Azure. Since then we are continuously working on it, adding new features, integrating new services and improving performance, security and so on.

This talk is about how the digital presentation was built, how it works and how we continuously deploy new feature and improvements to Azure.

Azure Zurich User Group

August 29, 2017
Tweet

More Decks by Azure Zurich User Group

Other Decks in Technology

Transcript

  1. ://about.me • .NET addicted web developer • Microsoft MVP for

    Visual Studio & Development Technologies • Blogger on http://asp.net-hacker.rocks/ • Author of several Articles in .NET Magazines • Leader of the .NET User Group Basel • Leader of the INETA Germany and its Speakers Bureau • Father of three (wannabe) huge boys & husband of a lovely wife • Developer, Consultant and Trainer at the YooApplications AG (http://yooapps.com) in Basel
  2. ://about.yooapps • YooApplications AG • http://yooapps.com • The Full Service

    Agency in Basel • Concepts (UX) => Design (UI) => Implementation • UX/UI, Web, Mobile, Enterprise, Consulting & Training
  3. Agenda for tonight • What is FCBs digital presentation? •

    Components of the digital presentation • Azure Services used for the digital presentation • Deployment to azure • Some Lessons learned
  4. What is the digital presentation? • The responsive web site:

    • News • Match Plan • Team • Images • Live Ticker • Sports Module • The mobile apps • Android • iOS • External Services • Video • Shop • Auth/SSO
  5. Components • CMS for the website • custom Sports-Module •

    Module contains teams, players, seasons, leagues, turnaments, matches, results • custom Image Module • YooApps Image Service • tagging, editing images • Live-Ticker web app • custom backend web app to manage the match setup and add ticker messages • Three API web apps • CMS Contents • News • Sports Module • Tournaments • Teams • Games • Ticker • Image Server • Images • Metadata
  6. Azure Services used • Azure Web Apps • CMS •

    Live Ticker • Sport API Service • CMS API Service • YooApps Image Server • SQL Azure • Sports Database • CMS Database • Blob Storage • Images • Redis Cache • Notification Hub • App Notifications • Web Jobs
  7. Git Repositories and Azure Environments • Multiple main Git repositories

    • One per app • Separate repositories for shared libraries • Shared as sub modules to the main repositories • Three branch strategie in the main repositories • Two branch strategie in the shared repositories • Three environments on Azure • Development • Staging • Production + Deployment Slot • Each branch deploys to the related environment
  8. Deployment to Azure • Using GitFlow • Working on Features

    Branches • PR to the Development Branch • Automatically deploy to the Develop Environment • RC to the Staging Branch • Automatically deploy to the Staging Environment • Release to the Master Branch • Manually trigger the auto deploy to the Deployment slots in the production Environment • Warmup the deployment slot via the sitemap and script • Swap to production manually
  9. Lessons learned: Caching • Lots of data access • Lots

    of data base access • Huge amount of data on the front page • Data via DB connection & Web API • We need to cache everything!!! • Kentico Cache • CMS • CMS API • Content based cache dependencies • Output cache • Redis Cache for • Sport API • App API
  10. Lessons learned: DDoS – Problems • First and critical DDoS

    a few hours after a successfull mach against a Ucraine team • Permanent Attacks via highjacked WordPress and Joomla CMS from all over the world • Unpached systems • Website not available • CMS backend pretty slow • Services available • CPU 100% • Traffic pretty high
  11. Lessons learned: DDoS – Solutions 1. Block all IPs, except

    the own IP range 2. Analyse IIS Access logs 3. Block WordPress and Joomla headers 4. Activate Dynamic IP Security 1. Block max 10 concurrent requests 2. Block max 100 requests per 7 seconds • Now: • Azure blocks DDoS attacks by default
  12. Lessons learned: Scalling • Scalling without loss doesn‘t really work

    on Azure • There is always a loss • Because the app pool get‘s always restarted on scalling • This needs to reload the application • Permanently on • 2 instances • S3 • 4 core 7GB RAM
  13. Lessons learned: Deployment • Direct deployment • works like charm

    • Is fast • Easy to set-up • Easy to maintain • It builds • But there are missing features • No notification on error • Hard to customize • No unit-tests executed • Not a build server
  14. Kontakt & Links • [email protected] • Twitter: @sharpcms • FB:

    juergen.gutsch • Skype: juergen.gutsch • http://asp.net-hacker.rocks • https://github.com/juergengutsch • https://about.me