/ Object Store S3 emulatie voor Django
Het eerste project van PW Webdevelopment met de CloudVPS Object Store was een webapplicatie voor de verspreiding en modificatie van prijskaarten voor luchthavenwinkels in verschillende internationale luchthavens. PW Webdevelopment gebruikt al sinds enkele jaren object stores om mediabestanden van hun applicaties op te slaan.
Peter Wiggers, oprichter van PW Webdevelopment: "De grootste voordelen van het gebruik van een object store voor de media-files vind ik de schaalbaarheid en de hoge mate van ingebouwde redundantie. Ook de extra veiligheid vergeleken met het onderhouden van een aparte file-server speelt een rol.".
De media bestanden waren voorheen op Amazon S3 geplaatst. PW Webdevelopment heeft er echter voor gekozen om over te stappen naar de CloudVPS Object Store.
Peter Wiggers: "Onze klanten vinden het een groot voordeel dat de bestanden nu in Nederland staan. In de eerste plaats door de merkbaar betere performance. Verder wordt de hogere mate van privacybescherming steeds belangrijker.".
De Applicatie
Binnen de applicatie worden vooraf ontworpen prijskaarten in de object store geplaatst. Deze kunnen vervolgens door een groot aantal luchthavenshops opgehaald, aangepast en geprint worden. De prijskaarten worden vervolgens in de schappen en op actiemeubels geplaatst.
De applicatie is geschreven in Python en maakt gebruik van het Django framework. De Django-module die de verbinding met de object store verzorgt is [django-storages] en deze ondersteunt de S3 API. Omdat de CloudVPS Object Store de S3 API kan emuleren hoefde er vrijwel geen code aangepast te worden.
Implementatie CloudVPS Object Store S3-Emulatie
De onderstaande instructies gaan ervan uit dat er een CloudVPS Object Store account beschikbaar is en dat daarin een container is aangemaakt. Verder wordt er aangenomen dat er in de CloudVPS Interface een S3 API-token is gegenereerd.
Om de CloudVPS Object Store te integreren in een (bestaande) Django web application, zijn de volgende packages nodig:
- boto
- python-dateutil (noodzakelijk voor collectstatic)
- django-storages
De eerste twee kunnen vanaf PyPI’s repositories geïnstalleerd worden, maar dat wordt afgeraden voor django-storages. In de versie op PyPI is de mogelijkheid tot het instellen van een custom host op moment nog niet mogelijk. Installeer daarom de laatstse versie vanaf Bitbucket:
pip install -e hg+https://bitbucket.org/david/django-storages#egg=storages
En voeg ‘storages’ toe aan de INSTALLED_APPS tuple in de Django settings.
Een groot voordeel van de CloudVPS Object Store is dat deze voor een groot deel S3-compatible is. Daarom kan gebruik gemaakt worden van de ingebouwde S3 libraries van boto en django-storages en is het ook makkelijk bestaande apps aan te sluiten op de object store. Open de settings.py (of soortgelijk) en voeg onderstaande regels toe:
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage' AWS_ACCESS_KEY_ID = '{hier_de_objectstore_access_token}' AWS_SECRET_ACCESS_KEY = '{hier_de_objectstore_secret}' AWS_STORAGE_BUCKET_NAME = '{hier_de_objectstore_containernaam}' AWS_S3_HOST = '{hier_het_objectstore_id}.objectstore.eu' AWS_S3_CUSTOM_DOMAIN = "%s/%s" % (AWS_S3_HOST, AWS_STORAGE_BUCKET_NAME)
Alle gegevens tussen accolades zijn te vinden op de CloudVPS Interface bij object store > S3 API Tokens.
That’s it! De Django-app werkt nu met de CloudVPS Object Store.
Mocht u voor nieuwe Django apps de Swift backend willen gebruiken: die is helaas nog niet ingebakken in django-storages. Er is echter wel een fork van deze package waarin de Swift API wél wordt ondersteund.
OpenStack en CloudVPS Object Store
CloudVPS wil altijd de optimale mogelijkheden van de cloud aan haar klanten aanbieden. Daarom hebben wij besloten OpenStack over onze gehele infrastructuur te implementeren. OpenStack is een snel groeiende verzameling open source cloud-infrastructuurcomponenten met ondersteuning van belangrijke partijen zoals HP, NASA en VMware. Het gebruik van OpenStack zal onze klanten veel nieuwe functionaliteiten opleveren en een veel gebruikte API om met onze infrastructuur te communiceren.
Het eerste OpenStack-gebaseerde product is inmiddels beschikbaar: In april 2013 hebben wij de eerste object store-dienst in Nederland beschikbaar gemaakt. De CloudVPS Object Store is een goedkoop, open en privacy-bewust alternatief voor eerste generatie diensten als Amazon S3.
Een object store is een moderne manier om files voor een applicatie of website te serveren. Hiermee kunnen files in de cloud opgeslagen, beheerd en opgevraagd worden door middel van handige API-calls of een URL. De technologie is extreem geschikt voor grotere bestanden zoals images en andere media files. Data wordt 3 keer opgeslagen op 3 verschillende machines in ten minste twee verschillende datacentra.
Bij een object store wordt er alleen voor het daadwerkelijke gebruik betaald. Dit bestaat uit de volgende elementen: opslag, traffic uit heavy requests (zoals writes) en light requests (zoals reads). Op onze site kun u meer informatie vinden over de CloudVPS Object Store.
PW Webdevelopment
PW Webdevelopment is een jong, dynamisch bedrijf dat webapplicaties ontwikkelt om bedrijven efficiënter en vernieuwend te laten werken. Het bedrijf werkt enkel met gedreven Master-studenten van de TU Delft. Met inmiddels 150 afgeronde projecten is PW Webdevelopment een robuuste partner voor elke gewenste digitale vooruitgang. PW Webdevelopment verzorgt het totaalpakket voor zijn klanten: vanaf de eerste brainstormsessie tot het uiteindelijke onderhoud en webhosting van de op maat gemaakte webapplicatie.
www.pw-webdevelopment.nl
Tags: