- Amazon S3 je servis za hosting datoteka. Osim samog držanja na serveru - korisnik ništa drugo ne može s njim raditi).
- Google AppEngine je punokrvni hosting aplikacija, ali samo pisanih u Pythonu i Javi, s određenim ograničenjima (npr. baza podataka nije prava relacijska)
Međutim, za one koji od Amazonovih servisa koriste samo S3 - AppEngine može biti sasvim pristojna alternativa. Spremanje datoteka u bazu (kao blobovi binarnih podataka) je trivijalan posao. Na primjer, klasa koja je ujedno i model tablice može izgledati ovako:
class Image ( db.Model ):Prikaz slike:
file_name = db.StringProperty()
title = db.StringProperty()
content = db.BlobProperty(default=None)
class ImagePage( webapp.RequestHandler ):...pod pretpostavkom da se uopće radi o slici. Ako ne znamo tip datoteke - treba predvidjeti i Content-Type polje u bazi. Nije baš najelegantnije (npr. trebalo bi dodati kod 404 umjesto samo tekstualne poruke), ali radi za JPG slike.
def get( self ):
q = Image.all()
q.filter( "file_name =", self.request.get( "i" ) )
images = q.fetch( 1 )
if( len( images ) > 0 ):
image = images[ 0 ]
self.response.headers['Content-Type'] = 'image/jpeg'
self.response.out.write( image.content )
else:
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write( "Image not found" )
Cijene su otprilike slične:
- Amazon naplaćuje količinu podataka, broj requestova, promet "u" i "iz"
- Google naplaćuje količinu podataka, promet "u" i "iz" (cijene su slične Amazonovim).
- Google ne naplaćuje requestove, ali naplaćuje "CPU vrijeme" (dakle vrijeme potrebno za izvršavanje aplikacije).
- Google ima neku početnu besplatnu početnu količinu (1 gigabajt podataka, 6.5 sati CPU-a, ...), dok Amazon naplaćuje sve.
- Na AppEngineu se mogu vrtiti i aplikacije, a ne samo hostati podaci.
- Veličina binary polja na AE-u je ograničena na 10 megabajta.
Sve ovo pišem jer ja već par dana razmišljam o tome da za panoye zamijenim S3 s AppEngine-om. Čisto za hosting podataka s jednim dodatkom kojeg bi htio maknuti s mog linux servera - kreiranje više različitih verzija iste slike. Čini mi se da je AE kao hosting dokumenata - sasvim pristojna alternativa za mnoge web sajtove.
Nešto što tek moram istražiti je - koliko 1 sat CPU-u može podnijeti requestova s nekom elementarnom programskom logikom (na primjer, klasa iz drugog primjera). I, nisam jedini koji postavlja isto pitanje. Tek onda je moguće precizno odrediti razliku u cijeni hostinga binary datoteka između S3 i AE. To planiram napraviti prvom prilikom: izvrtiti par testnih primjera (s mjerenjem vremena izvršavanja) i prebaciti u produkcijsko okruženje i vidjeti kako se CPU "troši".