Full stack

**Full stack** on tietojärjestelmien kehittämisen osa-alueita yhdistelevä lähestymistapa, joka liittyy käyttäjäkokemuksen suunnitteluun, järjestelmäkehittäjien työnkuviin ja osaamiseen  sekä kehitystyön tekniseen ympäristöön. Teknisenä käsitteenä full stack voi viitata yksinkertaisimmillaan järjestelmän rakenteen jaotteluun asiakas- ja palvelinosiin. Full stack voidaan nimetä lyhenteellä, joka muodostetaan siinä keskeisten välineiden nimistä (esim. LAMP = Linux, Apache, MySQL, Perl).

Termi *full stack* perustuu teknisten järjestelmien kuvaamisessa käytettyyn pinon (engl. stack) käsitteeseen, jolla tarkoitetaan järjestelmän arkkitehtuurin kerroksittaista rakennetta.  Rakenteessa kullakin kerroksella on oma tehtävänsä ja määritellyt rajapinnat toisiin kerroksiin.

Full stackin synonyyminakin käytetty termi *solution stack* (kirjaimellisesti suomentaen "ratkaisupino") viittaa nimettyihin ohjelmistotuotteisiin ja/tai laitteisiin, joista kokonaisuutena katsotaan muodostuvan palveluarkkitehtuuri (Service Oriented Architecture, lyhennettynä SOA).
## Ammatillinen ja työnjaollinen näkökulma
Ammatillisena ja työnjaollisena käsitteenä, jollaisena sitä käytetään esimerkiksi rekrytoinnissa, full stack sisältää ajatuksen, että suunnittelija (full stack designer) tai ohjelmistokehittäjä (full stack developer), kykenee ottamaan huomioon, suunnittelemaan ja toteuttamaan käyttäjäkokemuksen eri osa-alueiden tukea tietojärjestelmässä. Full stack developer -käsite on varsin uusi. On esitetty, että sitä on alettu laajemmin käyttää vuoden 2013 tienoilla.

Full stack -suunnittelijan rooli on saanut runsaasti huomiota keskusteluissa esimerkiksi sen määrittelyn, hyödyllisyyden ja työmarkkinoilla esiintyvän kysynnän kannalta.

## Käyttäjäkokemuksen näkökulma
Käyttäjäkokemusta (user experience) pidetään erityisesti kuluttajatuotteiden massamarkkinoilla tärkeänä tekijänä tuotteiden ja palveluiden menestyksessä. Käyttäjäkokemuksen käsite poikkeaa aiemmin tietojärjestelmien suunnittelussa keskeisestä käytettävyyden (usability) käsitteestä siten, että käyttäjäkokemukseen katsotaan kuuluvan hedonistinen osa (kuten hauskuuden tai tyydytyksen kokemus), kun taas käytettävyys määrittyy välineellisin tai käytännöllisin kriteerein. Käytettävyyttä kehittämällä pyritään tehostamaan käyttäjän ja laitteen yhteistoimintaa ja toisaalta tekemään sitä käyttäjälle miellyttävämmäksi.

## Tekninen näkökulma
Teknisestä näkökulmasta web-järjestelmien full stack koostuu tietokantajärjestelmästä sekä sovellusten kehityksen ja käytön asiakas- ja palvelinympäristöistä.

Esimerkiksi MEAN on ilmainen ja avoimeen lähdekoodiin perustuva full stack, joka sisältää MongoDB-tietokannan, Express.js-palvelimen toteutusympäristön, AngularJS-JavaScript-ohjelmistokehyksen ja Node.js-suoritusympäristön.

Carlos Buenon vuonna 2010 julkaisemaa blogikirjoitusta *The Full Stack* pidetään full stackin idean hahmottamiseen merkittävästi vaikuttaneena "klassikkona". Kirjoituksessa Bueno kuvaa *full stack -ohjelmoijan* (full stack programmer) generalistina eli laaja-alaisena osaajana, joka kykenee kehittämään sovelluksia itsenäisesti ja joka ennen kaikkea ymmärtää tekemiensä ratkaisujen vaikutukset tietojärjästelmän teknisen kokonaisuuden, sen kerrosrakenteen kannalta.

## Lähteet
* 
* 
* 
* 
* 
* 
* 
### Viitteet

## Aiheesta muualla
* 
* 

### Opinnäytetöitä
* 
* 
* 
* 
*