eZ Platform: Sisällönhallintaa Symfony sovelluskehyksellä
Heinäkuussa 2012 eZ Publishin kehittäjät ilmoittivat ottavansa käyttöön Symfony2 sovelluskehyksen. Tässä vaiheessa itse sovelluskehys oli vasta vuoden vanha ja oli muutenkin iso loikkaus PHP-sovelluskehitykselle.
Sisällönhallintajärjestelmän luvattiin olevan takaisinpäin yhteensopiva vuonna 2002 alkunsa saaneen version 4 kanssa. Tämä aiheutti runsaasti lisätyötä ja tarkoitti että tuote ei saanut uusia ominaisuuksia loppukäyttäjille. Versiopäivitysten uudet ominaisuuksista iloitsivat ainoastaan kehittäjät.
Siirrytään kolme vuotta eteenpäin ja tuote on kypsynyt niin paljon että vanha eZ Publishin koodipohja voidaan jättää pois. Sovelluskehitys vihjaa jo nimenä että sen tarkoitus on tarjota tukea kehityksene.
Sovelluskehys tuo vakautta ja suuntaa, mutta myös tietyn määrän jäykkyyttä. Eri järjestelmissä on myös oma oppimiskäyränsä. Tämän takia rokkistarojen ja kokeneidenkin kehittäjien tulisi opiskella sovelluskehyksen käyttö ennen tuotantoprojekteja.
Sovelluskehyksen edut
PHP on perinteisesti ollut kehittäjien temmellyskenttä jossa on ratkottu samoja pulmia uudelleen ja uudelleen. Tämä tapahtuu aina uuden teknologian suosion noustessa ja tällä hetkellä JavaScript-maailma on pitkälti samassa tilassa. Tämä ajaa kehitystä eteenpäin, mutta on raskasta kehittäjille ja tarjoaa tietyn pisteen jälkeen vain vähän etuja.
Kypsän ohjelmointikielen ja ympäristön merkki on että kehittäjillä on työkalut oman koodin jakamiseen. PHP on päässyt tähän vaiheeseen ja tarjolla onkin useita sovelluskehyksiä kuten Zend, Symfony ja Laravel joiden avulla kehittäjät voivat saada aikaan sovelluksia (kuten sisällönhallintajärjestelmän) hyvinkin nopeasti ja strukturoidusti.
Moni asia on muuttunut vuoden 2012 jälkeen. JavaScript elää uutta kukoistuskautta ja PHP maailmassa käytännöt ja koodi ovat jaettavissa helpommin kuin koskaan. Ero esimerkiksi Drupalin ja eZ Publishin välillä on kaventunut huomasti. Katsotaanpa mitä nämä vuodet ovat tuoneet eZ Publish / Platform kehittäjille.
Sisällönhallintaa Symfony2 sovelluskehyksellä
eZ Platformin kanssa työskentely on hyvin tuttua Symfony2 sovelluskehyksen kehittäjille. Itseasiassa se on identtistä, sillä eZ Platform on ainoastaan sovellus joka on rakennettu tämän sovelluskehyksen avulla. Sisällönhallintajärjestelmistä malli on tuttu esimerkiksi EPiServerin ja ASP.net MVC:n välillä.
eZ Platformin ja Symfonyn tapauksessa sovelluskehys tarjoaa perus ominaisuudet kuten:
- Täydelllinen HMVC arkkitehtuuri
- Istuntojen hallinta
- Kehitystyökalut debuggaukseen
- Välimuistimekanismit
Tähän päälle eZ Platform tarjoaa:
- Kehittyneet sisällönhallinnan ominaisuudet
- Modulaarisen sisältösäilön tietomalliksi
- Integroidun haun Solr-hakukoneella
- Sivustojen konfiguraatiot domainin, sijainnin sekä kielten mukaan
Tämän lisäksi eZ Platform käyttää kolmannen osapuolen laajennuksia (Bundle) seuraaviin toimintoihin:
- HTTP-välimuistin hallinta: FOSHttpCacheBundle
- Tiedostojen hallinta: FlySystemBundle
- Välimuistin hallinta: StashBundle
- Kuvien käsittely: LiipImagineBundle
Sovellusta voi laajentaa käyttämällä Symfony2 laajennuksi (bundleja) ja sisältörakenteen lisäksi voi käyttää vaihtoehtoisia tietomalleja kuten eri SQL-pohjaisia ORM malleja, MongoDB dokumenttitietokantoja tai graafitietokantoja sisällönhallintaan.
Symfony CMF:stä tuttu joustava reitityskomponentti mahdollistaa näiden käyttämisen ennen kuin pyyntö edes etenee eZ Platform sovelluksen tasolle. Lisäksi on mahdollista tehdä syvällisempiä integraatioita, kuten esimerkiksi eZ Platformin käyttäjätietokannan integrointi MongoDB dokumenttitietokantaan FOSUserBundle laajennuksen avulla.
Kaikki ylläoleva tarkoittaaa että sekä koodi, että osaaminen ovat suoraan jaettavissa Symfony2 ja eZ Platform kehittäjien välissä. Toki kehittäjän pitää oppia käyttämään ylemmän tason rajapintoja, mutta itse perusasiat pysyvät kehittäjän kannalta samana.
Modern Talking: Rajapinnat
Rajapinnat ovat kuin 1980-luvun bändi joka palaa aina uudelleen kartalle tuoreella remiksillä samasta vanhasta hitistä. Tällä hetkellä tämä kierrossa oleva remix on REST API, jolla onkin omat etunsa. eZ Platform tarjoaa kattavan ja laajennettavan REST-rajapinnan joka on käytössä myös järjestelmän hallintakäyttöliittymässä.
eZ Platform itsessään on rakennettu Symfony2 sovelluskehyksen päälle, mutta sisäiset rajapinnat (SPI ja API) on rakennettu niin että niitä voi käyttää osana pienempiä sovelluksia. Tämä mahdollistaa tulevaisuudessa esimerkiksi kevyiden rajapintojen rakentamisen PHP-kielelllä ilman ulkoisia HTTP kutsuja.
Drupal sisällönhallintajärjestelmän tulevaisuudesta puhuessaan Larry Garfield arvailee kuinka PHP-kehitys tulee muuttumaan tulevaisuudessa. Ennustaminen on vaikeaa, mutta uskon myös että asynkroninen ohjelmointi tulee näyttelemään osaa myös PHP-maailmassa. eZ Platformin irrallinen PHP-rajapinta ja asynkroninen kehitys mahdollistaa suorituskykyisten ulkoisten rajapintojen rakentamisen esimerkiksi Icicle kirjastoa käyttäen.
Tätä odotellessa kannattaa panostaa laadukkaan sisällön tuottamiseen. Tekniikka on lopulta vain väline, kuten painokone aikanaan.