Cloud Deployment und (Auto)Scaling  am Beispiel von Angrybird
Upcoming SlideShare
Loading in...5
×
 

Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird

on

  • 3,089 views

Continuous Delivery und Autoscaling von Enterprise Web-Applicationen in der Amazon Cloud ...

Continuous Delivery und Autoscaling von Enterprise Web-Applicationen in der Amazon Cloud

In diesem Vortrag zeigen wir am Beispiel des neuen Angrybird-Onlineshops, der zu Spitzenzeiten bis zu 10 Bestellungen pro Sekunde aufnehmen kann und dabei hochverfügbar ist, wie eine automatisch skalierende Cloud Infrastruktur sowie die nötigen Konzepte aussehen können.
Wir beschreiben die Herausforderungen und unsere Lösungen, um den Shop für ein Multi-Server-Setup vorzubereiten und zu betreiben. Spezielle Anforderungen an eine solche Architektur sowie die Integration von Reverse Proxies (Varnish), die Nutzung eines CDNs, verschiedene Cache-Strategien und weitere Optimierung sind ebenfalls Bestandteil dieses Vortrags. Außerdem stellen wir unsere automatisierte Cloud-Deployment-Strategien vor, angefangen von den Entwicklungsumgebungen, über den continuous Integration Server und unser Testing Framework bis hin zum A/B-Deployment in der Cloud.

Statistics

Views

Total Views
3,089
Views on SlideShare
3,087
Embed Views
2

Actions

Likes
6
Downloads
15
Comments
0

2 Embeds 2

http://phptalks.localhost 1
http://php-talks.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Cloud Deployment und (Auto)Scaling  am Beispiel von Angrybird Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird Presentation Transcript

    • Developer Conference Hamburg 2012:Cloud Deployment und(Auto)Scalingam Beispiel vonAngrybird Presented by Daniel Pötzinger
    • CIOAOE media „Agilist“ Open Source Devel oper
    • 100 6 PEOPLE COUNTRIES 13 YEARS 2700% GROWTHCLIENTS Open Source COMMUNITY
    • Und Sie? • Wer betreibt einen Magento Shop? • Wer hat Erfahrung mit cloud hosting/ AWS? • Wer betreibt eine Seite mit mehr als 100 Seitenaufrufen / Sekunde? •mehr als 1000 Seiten/Sekunde?
    • Performance Bausteine Applikations Cluster & Cloud HTTP & Co Architektur Infrastructure HTTP Protocol Cache Strategy Provisionierung Proxy Caches Algorithmen Autoscaling Site Optimisation Services geteilte ResourcenBesser werden und Bottlenecks finden... User Monitoring & Profiling Monitoring Performance Analytics (xdebug, newrelic) (munin, collectd) TestsStabil und schnell ausliefern mit.... Continuous Delivery
    • Irregular Traffic Behaviour
    • Das Angry Birds Magento Universum DRM Server Storefronts Reporting Products + Ordermgmt Mail Service Warehouse Giftcards Manage Warehouse Fullfillment Braintree
    • Das Angry Birds Magento Universum Sh ipw ire eltw eite DRM Server Reporting lt rwa et w Storefronts Ve äus er + Products + War enh Ordermgmt Warehouse Mail Service Bes tand sb este des t da Fin Giftcards out ing“ „Pa ketr Manage Warehouse Fullfillment Braintree
    • Why Amazon Cloud ?
    • ✓ Scales quickly on demand✓ Pay only what you need
    • Powerfull AWS Services EC2 S3 RDS Cloud Elastic ELB R53 Front Cache Amazon Webservices & Amazon Console Rightscale Services
    • Powerfull AWS Servicesq e Re u irem ents chite ctur r and Ar le Failove bar (M ultip H ochv erfüg balan cing) eiten Load acken darb EC2 S3 RDS d nten und B Cloud Elastic ELB F ro trenn en Frontgrund asks tCache von H inter Man agen nittstellen ig vo n Sch nab häng Amazon UWebservices & Amazon Console & Sca lable Fast Fast Fast Down time keine Rightscale Services
    • Cloud Architecture
    • Cloud Front S3 R53 Cloud Front CDN for Assets Assets Storage DNS CDN for Skin ELB„Deployment Definition“+ Autoscaling API Monitoring EC2 EC2 Varnish Array EC2 EC2 EC2 EC2 EC2 Frontend Array Backend Array EC2 Worker Array Elastic Cache S3 Cache Backend Deployment RDS RDS
    • Um zu Skalieren muss man den Flaschenhals finden und eliminieren
    • typische Flaschenhälse Offloading, Optimisation, CPU Caching, add more CPU (scale)... Offloading, Optimisation, Traffic Storage (DB) Scale Storage UP (H/V), Replace Storage... Offloading (CDN, Proxy) Bandbreite Optimize Size of the Site Scale Network IS...
    • HTTP Caching CDN Browser (Magento) Frontend Traffic Traffic Purging Varnish (Reverse Proxy) Traffic Offload expensive requests
    • HTTP Caching 1. Seiten cachebar machen • HTTP Cache Header verstehen und Browser Cache nutzen •Reverse Proxy Cache nutzen 2. Dynamic zum Client verschieben 3. Ajax oder ESI für dynamische / personalisierte Teile verwenden 4. JS und CSS packen und minifizieren + Timestamp 5. CDN für statische Assets verwenden 6.Website performance Optimierungen (YSlow und Co)
    • 10.000+ MÖGLICHE Seiten / Sekunde aus ELB + Varnish
    • Application Tuning istgaaanz Individuell!
    • Application Tuning braucht Profiling 1. Isoliertes Profiling •XDebug + kcachegrind •XHProf 2. Profiling unter Last •jMeter •IS Monitoring •XDebug... 3.Profiling unter Echtlast • Newrelic
    • Application Tuning - Beispiele • Loglevel reduzieren und Logging deaktivieren • Viele Datenbank Abfragen optimiert • Cleanup Cronjobs (Order, Logs, Sessions, Baskets...) • Session Storage durch Memcache ersetzen • Datenbank Locks und Deadlocks vermeiden: • Read Slaves für Reportgenerierung • Queueing: Syncrone zu Asyncronen Prozessen machen • Replace Search by SOLR / Searchperience •Richtiger Umgang mit Caches
    • wichtige Cachingregeln 1. Ziel ist eine hohe Hitrate 2. Caches dürfen nicht geflutet werden 3. Cache Backend müssen „weise“ ausgewählt werden 4. Aufpassen den Cache nicht auf einmal zu verlieren. 5. Cachen ist einfach. Aber wichtig ist die caches gut aufzuräumen 6. Einzelne Cacheeinträge mussen „on-demand“ aktualisiert oder gelöscht werden
    • Andere Tipps 1. System und Versionsabhängigen Cacheprefix einführen 2. Cache Warmup Script haben und im Deployment nutzen 3. E-Mail Service für das (Massen) versenden von Mails verwenden 4. „Design for the Cloud“ • Immer im Kopf haben das man einen Cluster hat • Sinnvolles Handling von gemeinsamen Resourcen (Assets, Cachebackend) • Plan for Failover...
    • 10.000MÖGLICHE Bestellungen pro Stunde
    • Autoscaling •Gruppen mit Policys Frontend Array • min, max • Votingrules for scale up/ down Traffic •fehlerhafte Instanzen ersetzen EC2 EC2 • Provisionierungszeit und EC2 EC2 EC2 Policies abstimmen EC2 • „Calm time“
    • (AWS) Lessons learned 1. 404s können sehr teuer sein • Lasttest mit accesslog •Cachen oder Weiterleiten 2. Cloudfront mit S3 backend kann kein GZIP 3.Festes ELB timeout von 60sec :-( 4.Man kann nicht alles vorhersehen! => Aber man kann vorbereitet sein Probleme schnell zu fixen => continuous deployment
    • ContinuousDeployment
    • Don‘t be scared ofreleasing toproduction
    • late night bugfixing?
    • So muss ein Deploymentaussehen
    • Und Sie? • Wer macht Continuous Integration? • Wer Scrum, Kanban oder XP? • Wer automatisiert Akzeptanztest? • Bei wem sind diese grün? • Wer macht Continuous Deployment? • Continuos Delivery? • DevOps?
    • Definition Continuous Deployment We want on-demand deployment of tested features and fixes in a quick and reliable way
    • Wir erreichen das durchAlles zu automatisieren Build Testing Deployment
    • flic kr tim dep es loy ad s3 ay....und .das alles häufig ausführen
    • The DeploymentPipeline
    • Angry Birds Deployment Pipeline Backup SVN Storage Commit Install on Selenium Performance Unit Tests and Build „latest“ Acceptance Tests Tests Build Downstream and Test Strategy Feedback to Developers
    • Magento Installation Package ‣ htdocs [Magento Source] ‣ media maintenance mode ‣ Filesystem 1.set ‣ .modman [Custom Packages] 2.Delta Package prepare ‣ Database ‣ changelog.txt 3.apply Database ‣ Install Binaries 4.sync files 5.run modman deploy-all ‣ settings.php 6.adjust Settings 7.Post install: fix p. / cache clean / ...
    • Angry Birds Deployment Pipeline Install on Cloud Integration Cloud Deployment Copy to S3 Deployment Tests deployment System Staging AOE + Rovio production
    • Cloud Deployment R53Deployment „Version 88“ DNS Deployment „Version 89“ Varnish Array Start new Varnish Array by release ELB V V V ELB V V V ✓ cloning old deployment ✓ adjusting release number Autoscaling Backend Worker Autoscaling Backend Worker Frontend Array Array Array Frontend Array Array Array FE FE FE BE BE BE W FE FE FE BE BE BE W RDS mySQL S3
    • 0Sekunden Downtime
    • Don‘t be scared of Es geht nicht nur um den Quellcode!releasing toproduction
    • Configuration DataEnvironment Deployment Source Code
    • DevOps?„the cultural aspect of concentrating on business results rather thantechnical details. Devops incorporates a lot of lean principles, focusing onimproving the collaboration between developers and operations folks.“ http://www.agileweboperations.com/lean-agile-devops-related „Cloud Sprint“ [ Dev + Ops and the Cloud ] Infrastructure as a Code [Provisioning with Chef]
    • Beispiel: Provisionierung einer Varnish Instanz 1. EC2 Instanz von „nackter“ AIM starten 2.Infrastruktur Installieren: 1. RS Logging und Monitoring (syslog-ng, collectd) 2.Tags bekommen 3.Varnish installieren 4. Monitoring (Collectd) Installieren 3. Infrastruktur konfigurieren: 1. aktuelle Varnish Konfiguration aus Deployment einrichten 2. Cronjob für die Aktualisierung der Backends und ACLs installieren (Script fragt regelmäßig die Right-Scale API nach aktiven EC2 Instancen im aktuellem Deployment mit dem richtigem Tag ) 3. Instanz beim richtigem ELB registrieren
    • The real life
    • Day 1 - Release 1
    • Day 2 - Release 2 - „get ready for Space“
    • Day 3 - „People want it so badly“ USA wakes up Space game launched Array scales up New release deployed
    • Day 4 - Release 3 „Performance Improvement“40% averageCPU usage.1-2 FE Serversare enough
    • 5000(echte) Besucher gleichzeitig
    • Danke fürs zuhören!Fragen? Follow us on Twitter: AOE: @aoemedia Daniel P: @danpoetz