Amazon Web Services - GNU-parran uhka numero 1 !

Perttu Taskinen, ohjelmistoarkkitehti
Perttu Taskinen | 23.01.12 | Kommentit:
Kategoriat: Ohjelmistokehitys
Tagit: Amazon AWS IaaS PaaS

Amazon Web Services (AWS) tarjoaa IaaS-toiminnallisuutta (Infrastructure as a Service) sekä osittain PaaS- toiminnallisuutta (Platform as a Service) suoraan ohjelmistokehittäjän hallittavissa olevassa muodossa. AWS on pala pilveä helposti sulatettavassa paketissa.

AWS-käyttäjän ei tarvitse ymmärtää fyysisestä laitteistosta tai laitteiston virtualisoinnista tuottaakseen sujuvasti verkkopalveluita Internetiin. AWS tekee laitteiston samanlaiseksi kertakäyttöresurssiksi kuin yksittäisen luokan ohjelmakoodissa. Enää ei tarvitse luoda käyttöympäristöjä, jotka kasvavat ajan kanssa pyhiksi, vain GNU-parran (eli Unix-ylläpitäjä tai vastaava) hallittaviksi reliikeiksi.

Kun sovelluksen asennus on hyvin automatisoitu, voi uuden sovellusversion pystyttää täysin uudelle koneelle vanhan tuotantoympäristön rinnalle ja sopivan hetken koittaessa vaihtaa uusi versio vanhan tilalle. Vanhan ympäristön koneineen voi tässä kohtaa tuhota ja unohtaa. Näin toimiessa käyttöympäristö tunnetaan täydellisesti ja sovelluksen kehittäminen yhdessä käyttöympäristönsä kanssa sujuu samalla tavoin kuin sovelluksen muu jatkokehitys.

On huomattava, että vaikka käyttöympäristön säätäminen tulee läpinäkyvämmäksi ja lähemmäksi sovelluskehittäjää, ei GNU-parta jää työttömäksi. Jonkun pitää kuitenkin säätää käyttöjärjestelmää, verkkotopologiaa ja muuta vastaavaa sekä suunnitella koko käyttöympäristö. Ylläpitotyö kuitenkin vähenee fyysisen laitteiston suunnittelun ja ylläpidon hävitessä. GNU-partojen on kuitenkin hyvä olla hereillä näinä aikoina, koska pilvipalveluiden pyörittäminen ei ole enää samanlaista kuin omassa komerossa pyörivien palvelimien.

Miksi AWS?

Miksei AWS? Mihin se ei muka sovi? AWS ei sovi ainakaan seuraaviin tarkoituksiin
• Valtion huoltovarmuuteen liittyvät ratkaisut
• Sisältöihin, joita ei saa viedä maasta
• Tehdassalien 24/7 pyörittämiseen (liian suuret riskit verkkoyhteyksissä)
• Juttuihin, joissa AWS ei vain toimi. Amazonin käytössä voi tulla yllätyksiä, joten on ensin hyvä
kokeilla, että suunnitellun asian voi oikeasti toteuttaa ennen varsinaiseen toteuttamiseen sitoutumista

Kaikkeen muuhun AWS sitten sopiikin. Pilvipalvelujen tarjoajia on kuitenkin paljon muitakin ja aina ei kannata ottaa IaaS-palvelua, jos tarpeelliset toiminnallisuudet löytyvät esimerkiksi jostain PaaS-palvelusta. Jos ei halua säätää infran kanssa ja PaaS-tarjoaja ei rajoita omaa sovellusta, AWS lienee liian matalan tason palvelu.

Vaikka AWS tarjoaa monenlaisia palveluita ja ratkaisuita, voi oman palvelun helposti rakentaa AWS- riippumattomaksi, vaikka sitä ajaakin AWS:ssä. Käytännössä AWS:ssä pyörivän palvelun voi helpohkosti viedä toisellekin alustalle, vaikka esimerkiksi sovelluksien asennusautomaation ja vastaavan infraskriptauksen joutuu varmasti tekemään uusiksi. AWS:n ratkaisut tuntuvat kaiken kaikkiaan varsin yhteensopivilta muun maailman kanssa.

Amazonissa on kuitenkin heikkoutena se, että palvelu ei ole vielä kypsä joka suhteessa. Amazonin käytössä törmää välillä ongelmiin ja ominaisuuksiin, joita Amazon lupaa kyllä korjailla, mutta korjauksien aikatauluja ei tunnuta kerrottavan etukäteen. Hienoa on kuitenkin se, että Amazonin tukifoorumilla ongelmia ei juuri peitellä ja niihin esitetään kiertoteitä, jos sellaisia on.

Fyysinen ulottuvuus

Concepts Regions Zones
Kuvan lähde: http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/using-regions-...

Alue (region)
Amazon tarjoaa palveluitaan eri alueilla. Jokainen alue on täydellisesti erossa muista alueista ja toimii itsenäisesti. Alueet jakautuvat saatavuusalueisiin (availability zone). Käytettävän alueen valintaan vaikuttavat ainakin fyysinen etäisyys palvelun käyttäjistä ja lakitekniset rajoitteet (saako tietoa esimerkiksi kuljettaa tai käsitellä jonkun alueen ulkopuolella).

Kaikkia palveluita ei ole saatavissa kaikilla alueille. Alla lueteltuna kaikki alueet, joilla peruspalvelu EC2 toimii. Kaikki aluetiedot näkee täältä: http://docs.amazonwebservices.com/general/latest/gr/rande.html

• US East (Northern Virginia)
• US West (Northern California) 1
• US West (Oregon) 2
• EU (Ireland) eli eu-west-1
• Asia Pacific (Singapore) South East
• Asia Pacific (Tokyo) North East
• South America (Sao Paulo)
• GovCloud (US), vain Yhdysvaltain hallinnolle

Saatavuusalue (availability zone)
Eri alueiden saatavuusalueet jakautuvat eri tavalla. Euroopalle tärkein alue eli eu-west-1 jakautuu kolmeen saatavuusalueeseen: a, b ja c. Nämä eivät poikkea keskenään toisistaan mitenkään, mutta ne ovat toisistaan fyysisesti erotettuja siten, että yhden täydellinen tuhoutuminen ei vaikuta toiseen saatavuusalueeseen 
mitenkään (harvinaisissa vikatilanteissa on kyllä huomattu, etteivät saatavuusalueet ehkä ihan riippumattomia olekaan). Eri saatavuusalueet ovat toisissaan kiinni nopealla tietoverkolla.

Käytännössä Amazonin käyttäminen korkean saatavuuden palveluihin (Amazonin saatavuuslupausten rajoissa) vaatii sovelluksen tekemistä niin, että se on hajautettu vähintään kahdelle saatavuusalueelle. Vaikka tämä onkin sinänsä helppoa AWS:n puolesta, ei kaikkia sovelluksia ole välttämättä helppoa rakentaa hajautetuiksi (mm. tietovarastojen hajautus usein hankalaa). Lisäksi hajauttaminen kahdelle saatavuusalueelle helposti tuplaa kulut. Välimallina hajautuksesta voisi pitää sellaista ratkaisua, että palvelu on tarvittaessa helppo siirtää toimimaan toiselle saatavuusalueelle, vaikka palvelu normaalisti toimisikin vain yhdellä saatavuusalueella. AWS:n vikatilanteessa tosin siirto voi olla hankalaa tehdä, koska hallintapalvelut saattavat myös olla alhaalla.

Amazonin palveluista on syytä huomata, että niitä on saatavuusalueen suhteen kahta tyyppiä: saatavuusaluesidonnaisia ja saatavuusalueesta riippumattomia. Esimerkiksi laskentakapasiteettia tarjoava EC2 toimii kulloinkin vain yhdellä saatavuusalueella. Toisaalta taas tietojen säilyttämiseen ja jakamiseen tarkoitettu S3 on aina saatavuusalueriippumaton palvelu. Saatavuusaluesidonnaisten palveluiden käyttäminen omassa sovelluksessa on käytännössä pakollista ja tämä tekee korkean saatavuuden (high availability, HA) sovelluksen tekemisestä melkein yhtä hankalaa kuin oikeiden fyysisten koneiden kanssa.

Resurssien maantieteellinen läheisyys (CloudFront)
Koska Amazonilla on rajattu määrä alueita ja monen loppukäyttäjän näkökulmasta katsoen ne ovat kovin kaukana, Amazon tarjoaa käyttäjiä lähemmäksi sijoitettuja välimuistipalveluita. Välimuisti kopioi automaattisesti sille konfiguroidut resurssit itselleen ja tarjoilee niitä lähempänä varsinaista käyttäjää.
Reunapaikat (edge locations) Euroopassa
• Amsterdam
• Dublin
• Frankfurt
• Lontoo
• Pariisi
• Tukholma

AWS:n käskyttäminen

AWS tarjoaa monipuoliset komentorivityökalut eri palveluiden konfiguroimiseen ja käyttämiseen. Tarjolla on myös selainpohjainen AWS Management Console, jolla voi hoitaa melkein kaiken hiirtä heilutellen.

Jokaiseen AWS-tiliin voi luoda useampia käyttäjiä erilaisilla käyttöoikeuksilla. Käyttöoikeuksien avulla voi määrittää hyvin yksityiskohtaisella tasolla mitä kukin käyttäjä pystyy AWS:ssä tekemään.

Halpaa kuin saippua

Vain käyttäminen maksaa

Amazon veloittaa vain palveluiden varsinaisesta käytöstä. Näin ollen pieni yritys tai epävarmalla pohjalla oleva projekti voi ostaa resursseja sitä mukaa lisää kuin tarvitsee. Laitteistoa ei enää tarvitse mitoittaa epävarmojen arvausten pohjalle. Jos palvelu lentää, Amazon tarjoaa skaalautuvuuden raudan puolesta.

Joitain kustannuksia (hinnat EU-alueelta)

1 ECU = 1 EC2 Compute Unit = equivalent CPU capacity of a 1.0 - 1.2Ghz 2007 Opteron or Xeon processor EC2 Small
• 1.7 GB of memory
• 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit)
• 160 GB of local instance storage
• 32-bit platform

EC2 Quadruple Extra Large
• 68.4 GB of memory
• 26 EC2 Compute Units (8 virtual cores with 3.25 EC2 Compute Units each)
• 1690 GB of local instance storage
• 64-bit platform

RDS Small
• 1.7 GB memory
• 1 ECU (1 virtual core with 1 ECU)
• 64-bit platform
• Moderate I/O Capacity

RDS Quadruple Extra Large
• 68 GB of memory
• 26 ECUs (8 virtual cores with 3.25 ECUs each)
• 64-bit platform
• High I/O Capacity

Palveluon-demand Halvin Kallein
EC2 Small: $0,095/h Quadruple Extra Large: $2,28/h
RDS Small: $0,12/h Quadruple Extra Large: $5,92/h (Multi-AZ kaksi kertaa kalliimpi)


Palvelu Datansäilytys Kyselyt Datansiirto
S3 $0,055 - $0,140 / TB $0.01 / 1000 HTTP-kyselyä $0 - $0,05 / GB

Lopullisten kustannusten arviointi on vaikeata

Amazonin kanssa ei ole niin helppoa arvioida lopullisia kustannuksia. Erilaisia laskutettavia palveluita ja tapoja on lukemattomia: siirtokaistan käyttäminen, pyyntöjen määrät, tilan käyttö palveluissa, laskentakapasiteetti, IP-osoitteet, valvonta, kuormantasaus... Hyvänä puolena laskutuksessa on se, että vain käyttö maksaa eikä koneisiin tarvitse sitoa minkäänlaista pääomaa kiinni.

Ilmainen kokeileminen

AWS tarjoaa peruspalveluiden kokeilemisen ihan ilmaiseksi. Tarkemmat tiedot täällä:
http://aws.amazon.com/free/

Perttu Taskinen

Perttu on pragmaattinen ohjelmistotyöläinen, joka näkee ohjelmistokehityksen ketjun kokonaisuutena, joka on enemmän kuin osiensa summa. Hän on osallistunut muutaman hengen projekteista satoja henkiä työllistäviin kokonaisuuksiin ja havainnut laadukkaan tuotteen vaativan kurinalaista työtä jokaisella osa-alueella. Erityisen tärkeänä laadunparannuskeinona Perttu näkee kehitys- ja tuotantoprosessien automaation ja kattavan dokumentoinnin. Tällä hetkellä Perttu toimii ohjelmistoarkkitehtina Goforella.