Pitkä oppimäärä Salesforcesta teknisenä tietojärjestelmänä

Kysymykseen “mikä Salesforce on?” on olemassa lyhyt ja yksinkertainen vastaus. Salesforce on asiakkuudenhallintajärjestelmä (CRM), joka kerää yhteen paikkaan oleelliset tiedot asiakkaista ja auttaa näin hallitsemaan asiakkuuksia kokonaisvaltaisesti.

Näin minäkin usein vastaan, kun minulta asiasta kysytään. Saatan varmuuden vuoksi antaa myös muutamia käytännön esimerkkejä. Salesforce kasaa yhteen tiedot esimerkiksi asiakkaan avainhenkilöistä, yhteydenpidosta eri kanavissa sekä tietysti tehdyistä kaupoista.

Järjestelmässä asusteleva data mahdollistaa esimerkiksi myyjien tavoitteiden reaaliaikaisen seurannan ja vaikkapa tulevien kuukausien tuloksen ennustamisen.

Nämä esimerkit auttavat yleensä kysyjää muodostamaan Salesforcesta riittävän selkeän kuvan. Sillä oletuksella, että kysyjä ei ole erityisen vihkiytynyt tietojärjestelmiin, eikä koe tarvetta ymmärtää, mitä järjestelmän konepellin alla tapahtuu.

Ei vain yksi tuote, vaan kattava kokoelma tuotteita ja palveluita

Johdannossa esitettyyn kysymykseen voi vastata paljon syvällisemminkin. Pyrin tässä tekstissä antamaan kysymykseen mahdollisimman tyhjentävän vastauksen. Sellaisen, jonka antaisin esimerkiksi tekniikasta kiinnostuneelle insinöörille. Sellaiselle ihmiselle, joka haluaa ymmärtää, miten Salesforce tietojärjestelmänä oikeasti toimii.

Tietotekniikasta kiinnostunutta ihmistä ei välttämättä kiinnosta kuulla myyntiputkista tai 360 asteen asiakasnäkymästä, vaan häntä todennäköisesti kiinnostaa tietomallit, tietokannat, rajapinnat, kommunikaatioparadigmat, ohjelmointikielet ja ohjelmistokehykset. Insinööriä siis kiinnostaa mikä Salesforce on – ei mitä sillä tehdään. Ja tätähän alun perin kysyttiin.

Alkajaisiksi on hyvä huomauttaa, että Salesforce ei ole yksi tuote, vaan todellisuudessa kattava kokoelma erilaisia tuotteita ja palveluita, joita yritys on vuosien varrella itselleen haalinut ja kehittänyt.

Näitä on tapauksesta riippuen integroitu mukaan Salesforcen ydinliiketoimintana tarjoamaan CRM-ratkaisuun eli Salesforcen omalla kielellä Sales Cloudiin.

Tässä yhteydessä on pakko mainita, että asiakkaan kannalta Salesforcen kokonaisvaltainen tarjonta on todella hyvä juttu, koska samalta luukulta saa ratkaisut kaikkiin tarpeisiin, ja myös kaikki data on samassa ympäristössä.

Liikkeelle pilvipalvelujen perusteista

Nyt kuitenkin varsinaiseen asiaan. Salesforce on pilvipalvelu, mikä itsessään aiheuttaa herkästi keskustelua pilven määritelmästä.

Alkuperäisen pilven, eli IaaS:n yksi peruspilareista on resurssien skaalautuvuus ja elastisuus. Salesforce-ympäristöjä on ajettu perinteisesti multi-tenanttina eli yksittäiset palvelimet ovat moniasiakaskäytössä. Tämä tarkoittaa, että palvelimen resurssit jaetaan useamman Salesforce-ympäristön kesken. Yksittäiselle ympäristölle varattuihin resursseihin, kuten rajapintakutsujen, muistin, tai CPU-ydinten määrään on ollut hyvin vaikea tai mahdoton vaikuttaa.

Tähän on kuitenkin syynsä ja palaankin näihin rajoitteisiin hieman myöhemmin.

Asiakasympäristöjä eli Salesforcea käyttävien organisaatioiden omia järjestelmäympäristöjä ajettiin pitkään Salesforcen omissa datakeskuksissa. Viime vuosina niitä on siirretty rytinällä Hyperforceen, mikä käytännössä tarkoittaa IaaS-kerroksen ulkoistamista AWS:lle ja myöhemmin mahdollisesti myös muille julkisen pilven palveluntarjoajille.

Käyttäjille suurimpana etuna on mahdollisuus saada yrityksen data fyysisesti lähemmäksi ja näin noudattaa paikallisten tietojen säilytystä koskevia säädöksiä. Teknisesti tämä parantaa myös mahdollisuutta tarjota tulevaisuudessa asiakkaille aiemmin mainittua skaalautuvuutta ja elastisuutta.

Huonona puolena on todettu se, ettei Salesforcen IP-avaruutta voida enää taata. Aiemmin kolmannen osapuolen järjestelmät pystyivät suodattamaan sisääntulevan liikenteen käyttäen luetteloa sallituista IP-osoitteista ja/tai -alueista (IP whitelisting). Hyperforceen siirtymisen jälkeen on tyydyttävä suodattamaan liikenne verkkotunnuksen mukaan (Domain whitelisting).

Joka tapauksessa Salesforce voi IaaS-kerroksen ulkoistamisen myötä paremmin keskittyä olemaan maailman suurin yritysohjelmistojen toimittaja ja jättää fyysisten palvelinkeskusten turvallisuudesta, energiansaannista ja muusta ylläpidosta huolehtimisen muiden harteille.

SaaS-palveluiden edelläkävijä

Salesforce on SaaS-palveluiden edelläkävijöitä ja monesti siihen viitataan myös maailman ensimmäisenä alusta alkaen SaaS:ksi rakennettuna palveluna. Menestyksen voidaankin ajatella olevan sidottu tähän seikkaan, sillä Salesforcella on ollut vuodesta 1999 pitkä etumatka ja aikaa rakentaa tarjoamastaan toimiva ja luotettava.

Erityisen mukava johto Salesforcella on sen mukautettavuudessa ja siihen tarjolla olevien työkalujen määrässä ja laadussa. Tarve tälle on itsestään selvä, eihän asiakkuuksien ja muuhun yritysten liiketoiminnan hallintaan keskittyvä SaaS-palvelu voi suoraan off-the-shelf täyttää kaikkien, toisistaan täysin poikkeavien, organisaatioiden vaatimuksia. Salesforce on siis luonnollisesti myös PaaS-alusta.

Sen lisäksi, että Salesforcen saa SaaS-mallin mukaisesti suoraan käyttöön muutamalla klikkauksella, tarjoaa Salesforce Platform (entinen Force.com) mahdollisuuden hyvinkin joustaviin ja vaikuttaviin mukautuksiin. Järjestelmää voi muokata kahdella tavalla, klikkauksilla tai koodilla. Klikkauksilla viittaan no-code ja low-code -kehitykseen, kun taas koodilla viitataan perinteiseen tekstipohjaiseen ohjelmointiin.

Usein tarvitaan hiukan molempia. Me Biitillä olemme muuten jakaneet tittelit jota kuinkin tämän jaon mukaisesti. Salesforce Consultant konfiguroi järjestelmää pääasiassa no-code / low-code -tapaan, kun taas Salesforce Developer hoitaa tarvittavat koodit paikalleen. Väkemme on kuitenkin käytännössä kunnianhimoisempaa, joten moni konsultti tuottaa myös koodia ja devaaja helposti klikkailee tarvitsemansa kentät tai leiskat paikoilleen. Sen siitä saa, kun yritetään lokeroida ihmisiä.

Tietokannan päällä ylläpitokäyttöliittymä

Siirrytään seuraavaksi tarkastelemaan yksittäistä Salesforce-ympäristöä. Tekniseltä kannalta katsottuna ja hyvin paljon yksinkertaistettuna jossakin on verkkopalvelin ja sen takana relaatiotietokanta. Salesforce on rakentanut tietokannan päälle ylläpitokäyttöliittymän, jonka avulla uusien tietokantataulujen eli Salesforcen kielellä objektien luonti on erittäin helppoa.

Samoin tietueiden tarkastelemiseen käytettävän käyttöliittymänäkymän muokkaaminen, esimerkiksi kenttien uudelleenjärjestely halutuille paikoille, on äärimmäisen yksinkertaista.

Salesforcen käyttö – taas yksinkertaistettuna – pyörii pitkälti tietueiden elinkaaren ympärillä. Tietue syntyy, sitä mahdollisesti muokataan ja lopuksi se saatetaan poistaa. Nämä kaikki voivat tapahtua käyttäjän toimesta, automaattisesti tai ulkoisesta järjestelmästä tulevan syötteen perusteella. Lisäksi nämä kaikki voivat laukaista omia automaatioitaan. Siinä on nyt selitettynä Salesforcen perusperiaatteet insinöörille. Hyvin yksinkertaista!

Esimerkiksi Web-to-Lead toiminnallisuuden avulla uusi liidi tulee Salesforceen automaattisesti, kun mahdollinen asiakas täyttää yrityksen nettisivuilla lomakkeen. Lead-tietueen syntyminen voi laukaista konfiguroidun low-code (Flow) tai koodatun (Apex) triggerin, joka suunnitellun logiikan mukaisesti rikastaa sen tietoja ulkoista yritystietokantapalvelua käyttämällä tai luo tarvittaessa asiakaspalvelujonoon tiketin. Lead-tietueen tapauksessa elinkaari loppuu usein sen konvertointiin kontaktiksi tai asiakastiliksi.

Joustava ja helppokäyttöinen tietokanta mahdollistaa Salesforcen laajentamisen nopeasti melkein mihin tahansa käyttöön. Jos yrityksen liiketoiminta keskittyy esimerkiksi asuntojen ja kiinteistöjen myyntiin tai vuokraamiseen, voidaan Salesforceen helposti lisätä Kohde, Kiinteistö ja Asunto -nimiset taulut sekä niille tarvittavat kentät ja viittaukset muihin tauluihin. Tällaisten uusien toiminnallisuuksien lisääminen perinteisiin pitkästä tavarasta rakennettuihin ohjelmistoihin on usein erittäin työlästä ja aikaa vievää.

Tarjolla joukko erilaisia pilvipalveluita erilaisiin käyttötarkoituksiin

Vuosien varrella Salesforce on laajentanut tarjoamaansa erittäin paljon ja nimennyt eri käyttötarkoituksiin sopivia ratkaisuja omiksi pilvipalveluikseen, vaikka joskus kyseessä onkin vain samalla alustalla olevien toiminnallisuuksien kytkeminen päälle.

Alkuperäinen CRM on nimeltään Sales Cloud ja siihen kuuluvat perusobjektit kuten Lead, Opportunity, Account, Contact, Contract, Product, Pricebook ja niin edelleen.

Service Cloud puolestaan on tarkoitettu asiakaspalvelun tehostamiseen, Marketing Cloud markkinoinnin tarpeisiin ja Commerce Cloud verkkokaupan rakentamiseen. Experience Cloud (ennen Community Cloud) taas mahdollistaa asiakas- ja kumppaniportaalien rakentamisen.

Tietokantojen näkökulmasta kiinnostavia palveluita ovat myös entinen Salesforce IoT cloud ja nykyinen Data Cloud, joissa käsitellään oikeasti suuria määriä dataa reaaliaikaisesti. Esimerkiksi IoT-sensorit voivat syöttää lukemiaan sisään sellaisella tahdilla, että Salesforcen normaali relaatiokanta ei yksinkertaisesti sovellu niin raskaaseen käyttöön

IoT Cloudiin olikin rakennettu oma Thunder niminen alustansa, jonka rakennuspalikoina olivat big data piireistä tuttuja Apachen open-source komponentteja. Thunderissa Storm toimi datavirtojen käsittelijänä, Kafka viestien välittäjänä, Spark analytiikan moottorina, ja Cassandra erittäin nopeana NoSQL tietokantana. IoT cloud kuitenkin lopetettiin vuonna 2021. Vastaavasti Data Cloudissa (ennen Salesforce CDP ja Salesforce Genie) on käytössä oma data lakehouse tyyppinen tietovarasto, jossa yhdistyy data lake ja data warehouse tekniikoiden hyvät puolet.

Paketti, joka pysyy helposti kasassa

Kuinka Salesforce onnistuu pitämään paketin niin hyvin kasassa? Moni pidempään ATK-järjestelmiä käyttänyt on varmasti kokenut hetkiä, kun taulukkolaskenta-, piirustus- tai jokin muu ohjelma jumittaa ensin itsensä ja lopulta koko tietokoneen.

Ajoittaisia pieniä viiveitä lukuun ottamatta Salesforce on kuitenkin onnistunut rakentamaan ympäristön, jota voi itse muokata ja ohjelmoida ilman, että siitä onnistuu rakentamaan jatkuvasti kompuroivaa jumitushirviötä, mitä voidaan pitää erinomaisena suorituksena.

Salesforce pitää yksittäisten asiakasympäristöjen suoritukset kurissa alustarajoitusten avulla. Rajoitukset pitävät huolen siitä, ettei asiakasympäristö pääse kuluttamaan liikaa resursseja, kuten laskenta-aikaa, muistia tai verkkoliikennettä.

Jos jokin ohjelmoitu suoritus kuluttaa liikaa muistia tai kestää liian kauan, alusta yksinkertaisesti keskeyttää suorittamisen. Tällaisessa tilanteessa pellin alle katsottaessa ohjelmoija pystyy näkemään, minkälainen poikkeus tilanteessa syntyi ja muokkaamaan koodia sellaiseen suuntaan, että suoritus tapahtuu alustarajoitusten puitteissa.

Alustarajoitukset ovat tärkeitä varsinkin multi-tenant ympäristössä, jotta eri asiakasympäristöt pysyvät suorituskykyisinä toisistaan riippumatta. Yhtä merkittävänä hyötynä pidän kuitenkin sitä, että ne estävät muokkaamasta ympäristöstä käyttökelvotonta.

Ohjelmoijan näkökulmasta rajoitukset näyttäytyvät Salesforcen erityisvaatimuksina, kun aletaan suunnitella uutta toteutusta. Yksinkertainen ratkaisu joudutaan usein tekemään tavallista monimutkaisemmin rajoituksista johtuen. Salesforce-ohjelmoijan työstä merkittävä osa keskittyykin alustarajoitusten kiertämiseen, ja kokeneempi ohjelmoija osaa ottaa jo suunnittelussa huomioon rajoitusten asettamat vaatimukset. Saavutettuihin etuihin nähden tämä on kuitenkin hyvä kompromissi.

Yllä mainittujen asioiden lisäksi Salesforce on tietysti myös paljon muuta. Moni asia jäi tässä kirjoituksessa kertomatta ja teknisesti kiinnostavia palveluita ja tekniikoita jopa kokonaan mainitsematta. Jokaiseen Salesforcen tuotteeseen voisi perehtyä useamman kappaleen verran. Ainakin Einstein, Tableau ja Heroku olisivat ansainneet tulla huomioiduiksi. Samoin Salesforcen ohjelmointikielistä voisi kirjoittaa oman artikkelinsa. Ehkä ensi kerralla.

Toivottavasti onnistuin lisäämään ymmärrystäsi Salesforcen toiminnasta teknisemmästä näkökulmasta. Niin Salesforcen kuin monen muunkin yrityksen kohdalla uusista palveluista tietoa etsiessä törmää usein tilanteeseen, että tuotteen esittely koostuu iloisista kuvista, markkinointimateriaalista, myynnistä ja buzzwordeistä.

Itsekin olen kaipaillut enemmän faktapohjaista sisältöä, jossa kerrotaan palvelun teknisistä ominaisuuksista sekä sen taustalla hyödynnetyistä komponenteista. Biitin missiona on alusta lähtien ollut yhdistää liiketoimintaosaaminen tekniseen asiantuntijuuteen. Puhumme asiakkaiden kanssa kumpaa kieltä tahansa, bisnestä tai ATK:ta.

Hannu Järvinen

Hannu Järvinen on tekninen arkkitehti, joka toimii Biitillä myös teknologiajohtajana. Hannu on erikoistunut teknisesti haastavien ratkaisujen toteuttamiseen esimerkiksi integraatioiden, IoT-palveluiden ja asiakaskohtaisten sovellusten osalta.