EC2 is daar op zich niet voor gebouwd. Je moet er altijd vanuit gaan dat een EC2 instance op elk moment kan falen, en dan ben je alles kwijt. Zoals gezegd hoeft dit geen probleem te zijn als je architectuur daarop is afgestemd.
http://docs.amazonwebserv...esilient-apps.html?r=3049
Je kan wel een vorm van persitency introduceren door gebruik te maken van EBS. Dit zorgt ervoor dat je disk wel persitent is, zodat je bij het falen van de instance een nieuwe instance kan opstarten op basis van het EBS volume.
Maar dit moet je zelf opvangen; Je zal dus moeten detecteren dat een instance niet langer beschikbaar is en zelf een nieuwe opstarten op basis van het EBS volume. Daarnaast is EBS ook storage op het netwerk, en dus niet lokaal aan je instance.
Op de Rackspace Cloud is je instance wel gewoon persitent. Bij een crash (of uit eigen ervaring, bij een nakend hardware falen) wordt je volledige instance automatisch overgezet naar een nieuwe fysieke machine. Je hebt hier zelf geen omkijken naar.
/Edit: Ik merk dat dit een erg lang antwoord is geworden, waarvoor mijn excuses :-)
Bovendien maakt Rackspace gebruik van lokale storage in RAID10 en backups naar netwerk storage.
De keerzijde is wel (tov EBS) dat (1) mocht een fysieke machine onverwacht crashen dan zal een engineer moeten tussenkomen om de data te restoren en (2) wanneer de RAID faalt, ben je de recente data kwijt bent en zal de instance opnieuw opstarten vanaf een backup.
Elk heeft dus z'n voor- en nadelen.
Cloud providers als Rackspace bieden relatief veel flexibiliteit voor weinig investering wanneer je met een klassieke setup werkt (bv. legacy applications, shared hosting, of een middelgrote website).
Amazon gaat uiteraard veel verder - maar daar staat tegenover dat je zelf alles moet regelen en dat je bijna zeker je applicatie en/of setup zal moeten aanpassen.
Windows Azure zit er ergens tussenin. Behalve de VM en Sites opties die (op papier, geen ervaring mee) ongeveer werken zoals die van Rackspace, is Azure een PAAS oplossing. Je applicatie *moet* dus werken met de API's van Azure. Maar daardoor wordt de infrastructuur abstracted waardoor Azure ervoor kan zorgen dat je applicatie 'altijd' online is, zonder dat je zelf iets moet doen (bv. door het automatisch herstarten van gecrashte instances, transparant regelen van OS updates, ..).
[Reactie gewijzigd door UniCatcher op 26 juli 2024 01:46]