Ohjelmistoalan ammattilaiset ovat tunnetusti hyviä keksimään hienoja nimiä itsestään selville asioille. ”Alustakehitys” on tuore esimerkki tästä: siinä vakiintuneet periaatteet yhdistyvät pilvinatiivien viitekehysten innovaatioihin.
Alustakehityksen ytimessä on ohjelmistokehityksen yhtenäistäminen ottamalla käyttöön johdonmukainen, hallittu työkalukokonaisuus ja luomalla siten edellytykset tiimien tuottavuuden parantamiselle. Kypsemmillä toimialoilla tämä on tiedetty jo vuosikymmenten ajan.
Mitä alustakehitys on?
Alustakehitys tarkoittaa sovellusten ja palveluiden perustana olevan ohjelmistoinfrastruktuurin ja järjestelmien suunnittelua, rakentamista ja hallintaa. Se kattaa fyysisen ja pilvipohjaisen infrastruktuurin hallinnan, prosessien automatisoinnin, erilaisten työkalujen integroinnin, tietoturvan ja vaatimustenmukaisuuden varmistamisen, suorituskyvyn valvonnan sekä korkean käytettävyyden ja palautumisen katastrofitilanteista ylläpitämisen.
Tämä ala on ratkaisevan tärkeä vakaiden, skaalautuvien ja turvallisten teknisten ympäristöjen varmistamisessa, jotta sovelluksia voidaan kehittää ja ottaa käyttöön tehokkaasti.
Alustakehitys merkitsee siirtymistä erillisistä ponnisteluista harmonisoituun ekosysteemiin, mikä parantaa kehittäjäkokemusta ja toiminnan tehokkuutta.
Have an account? Log In
Siirtyminen yksilön erinomaisuudesta kollektiiviseen osaamiseen
Yksittäinen kehittäjä eli ”ohjelmistokäsityöläinen” saattaa aluksi päihittää ryhmän itse räätälöidyllä työkalupakillaan. Skaalautuvan ohjelmistoyrityksen vaatimukset nostavat kuitenkin pian etusijalle tiimityön taidon – viestinnän, yhteistyön sekä työkalujen ja prosessien strategisen jakamisen.
Alustakehitys on hienostunut vastaus näihin skaalautuvuuden haasteisiin. Siinä kuratoidaan ja hallitaan sovellusten ja työkalujen kokonaisuutta, joka toimii yhteisenä perustana ja mahdollistaa kehittäjille innovoinnin integroimalla olemassa olevia moduuleja ja rakentamalla niiden päälle.
Alustakehitystiimin tehtävänä on luoda sisäinen kehittäjäalusta (IDP), joka ylittää perinteisen sovelluksen rajoitukset kehittämällä viitekehyksiä, kuten Kubernetes, ja edistää itsepalveluympäristöä, joka antaa kehittäjille enemmän vaikutusmahdollisuuksia.
Käsityöläisperiaate pätee myös testaukseen: pätevä, automaatioon kykenevä tutkiva testaaja on todennäköisesti tehokkain mahdollinen laadunvarmistaja. Haasteena on kuitenkin skaalautuvuus. Testiautomaatio toimii usein siiloissa, joissa yksittäiset henkilöt kehittävät ratkaisuja esimerkiksi Seleniumin kaltaisilla työkaluilla omalla tavallaan. Näiden henkilöiden lähtö tai ylennys johtaa usein olemassa olevien järjestelmien täydelliseen uudistamiseen heidän seuraajiensa toimesta, sillä nämä saattavat käyttää työkaluja eri tavalla.
Jaetut testausalustat: yhteistyön edistäminen
Jaettu testausalusta puolestaan mahdollistaisi tuottavan yhteistyön ammattitestaajien, liiketoimintakäyttäjien ja kehittäjien välillä. Tällainen alusta, kuten Copadon Robot Testing, helpottaisi testien, tietojen ja tulosten jakamista ja uudelleenkäyttöä sekä edistäisi laadun arvioinnin läpinäkyvyyttä. Infrastruktuuri koodina (toinen hieno nimi itsestään selvälle asialle) mahdollistaa testiympäristöjen tehokkaan käyttöönoton pilvessä ja tarjoaa kaikille sidosryhmille pääsyn tarvittaessa sekä läpinäkyvyyttä.
Mikropalveluiden aikakaudella yksittäisten komponenttien toimivuutta, jota Dockerin ja Kubernetesin kaltaiset alustat orkestroivat, on tarkasteltava kognitiivisen kuormituksen ja käyttäjävaikutusten näkökulmasta. Tässä tulevat mukaan palveluiden luotettavuustekniikan (SRE) periaatteet, jotka varmistavat järjestelmien luotettavuuden ja sen, että operatiivisilla tiimeillä on käytössään vankat hälytystyökalut, kuten Puppet, sekä valvontaratkaisut havainnoitavuuden ylläpitämiseksi.
Alustakehityksen haasteet
Ilmeisistä hyödyistään huolimatta alustakehitys ei ole vailla haasteita. Se edellyttää huolellista hallintaa ja jatkuvaa kehittämistä. Monet taitavat tuoteyritykset kamppailevat yhteisen alustan kehittämisen kanssa tuotteilleen, joten on epärealistista odottaa IT-osastoilta näitä kyvykkyyksiä automaattisesti. Siksi laajat, korkean tason sovellusalustat, kuten Salesforce, ja kehittäjäalustat, kuten Git tai Azure DevOps, yleistyvät. Sama tapahtuu testausalustojen kohdalla, mutta hieman hitaammin.
Koska sovellukset rakennetaan kokoamalla komponentteja jaetulta alustalta, tämän alustan laadusta ja vankkuudesta tulee ensiarvoisen tärkeää. Mikä tahansa alustan ongelma voi mahdollisesti vaikuttaa kaikkiin sen päälle rakennettuihin sovelluksiin. Siksi alustan ja sovellusten on kehityttävä samanaikaisesti, ja alustan on aina pysyttävä edellä vakauden varmistamiseksi.
Alustan testaus on erotettava sovellusten testauksesta riippumatta siitä, testataanko tuotannossa vai ei. Ensin mainittu on yleensä teknisempää ja keskittyy yksikkötestaukseen, ohjelmointirajapintoihin, skaalautuvuuteen ja suorituskykyyn, kun taas jälkimmäinen perustuu enemmän liiketoimintaprosesseihin ja on luonteeltaan päästä päähän -testausta.
Laadun ylläpitäminen alustan elinkaaren aikana
Organisaatioiden omaksuessa pilvinatiiveja toimintatapoja niiden alustan vankkuus on ensiarvoisen tärkeää. Alustassa ilmenevällä ongelmalla voi olla laajoja vaikutuksia, minkä vuoksi alustan testauksen ja sovellusten testauksen selkeä erottaminen on ratkaisevan tärkeää. Tämä erottelu mahdollistaa kohdennetun lähestymistavan skaalautuvuuteen ja suorituskykyyn: ensin mainitussa keskitytään teknisiin näkökohtiin, kuten ohjelmointirajapintoihin, ja jälkimmäisessä loppukäyttäjän toiminnallisuuteen.
More Articles
Alustasuunnittelun ohjelmistot ja työkalut selitettynä
Alustasuunnittelussa erilaiset ohjelmistotyökalut hallinnoivat ja sujuvoittavat infrastruktuurin ja sovellusten rakentamiseen, käyttöönottoon ja ylläpitoon liittyviä prosesseja.
Otetaan esimerkiksi Postman. Alun perin kehitys- ja testausvaiheen ohjelmointirajapintojen työnkulun yksinkertaistamiseen sivuprojektina kehitetty Postman on erinomainen työkalu yksittäisille testaajille. Kun se kuitenkin integroidaan jatkuvan integroinnin ja jatkuvan toimituksen (CI/CD) työnkulkuun, sen mahdollisuudet kasvavat merkittävästi ja se palvelee laajempaa tarkoitusta pilvialustan osana. Se mahdollistaa ohjelmointirajapintojen nopean ja suoraviivaisen testauksen sekä tarjoaa käyttäjälle välitöntä palautetta.
Tiimin kasvaessa Postmanin rajoitukset tulevat näkyviin. Vaikka se soveltuu erinomaisesti manuaaliseen testaukseen ja tutkimiseen, se ei vastaa yhteistyöympäristöjen tarpeisiin, joissa vaaditaan automaattisia, toistettavia ja skaalautuvia testejä. Ohjelmistotoiminnan laajentuessa viestinnän, jakamisen ja uudelleenkäytön kaltaiset tekijät muuttuvat ratkaiseviksi ja jättävät usein yksittäisen henkilön suorituksen varjoonsa.
Muita alustasuunnittelun keskeisiä työkaluja ovat:
- Konttisointityökalut
- Docker: sovellusten luomiseen, käyttöönottoon ja suorittamiseen konteissa.
- Kubernetes: konttien orkestrointialusta, jolla automatisoidaan sovelluskonttien käyttöönotto, skaalaus ja toiminta isäntäklustereissa.
- Infrastruktuuri koodina (IaC) -työkalut:
- Terraform: infrastruktuurin turvalliseen ja tehokkaaseen rakentamiseen, muuttamiseen ja versiointiin.
- Ansible: avoimen lähdekoodin työkalu ohjelmistojen toimittamiseen, määritysten hallintaan ja sovellusten käyttöönottoon.
- Puppet: toinen suosittu määritysten hallintatyökalu.
- Jatkuvan integroinnin ja jatkuvan käyttöönoton (CI/CD) työkalut:
- Jenkins: avoimen lähdekoodin automaatiopalvelin, jolla automatisoidaan ohjelmistokehityksen osia.
- GitLab CI/CD: tarjoaa sujuvan tavan automatisoida sovelluskehityksen elinkaaren vaiheita.
- CircleCI: tarjoaa jatkuvan integroinnin ja toimituksen, joiden avulla kehitystiimit voivat julkaista koodia nopeasti.
- Valvonta- ja havaittavuustyökalut:
- Prometheus: avoimen lähdekoodin valvontajärjestelmä, jossa on aikasarjatietokanta.
- Grafana: mittareiden visualisointiin ja valvontaan.
- Elasticsearch, Logstash ja Kibana (ELK Stack): suosittuja lokitietojen kirjaamiseen ja tietojen visualisointiin.
- Pilvipalveluntarjoajat:
- Amazon Web Services (AWS): tarjoaa laajan valikoiman pilvipalveluja.
- Microsoft Azure: tarjoaa pilvipalveluja.
- Google Cloud Platform (GCP): tarjoaa kattavan valikoiman pilvipalveluja.
- Versionhallintajärjestelmät:
- Git: hajautettu versionhallintajärjestelmä lähdekoodin muutosten seurantaan.
- GitHub: alusta Git-tietovarastojen isännöintiin ja hallintaan.
- Tietoturva- ja vaatimustenmukaisuustyökalut:
- HashiCorp Vault: tunnusten, salasanojen, varmenteiden, ohjelmointirajapinta-avainten ja muiden salaisten tietojen suojaamiseen, tallentamiseen ja käyttöoikeuksien hallintaan.
- SonarQube: arvioi koodin laatua ja tunnistaa haavoittuvuuksia.
- Palveluverkkotyökalut:
- Istio: Avoin alusta mikropalveluiden yhdistämiseen, hallintaan ja suojaamiseen.
- Linkerd: Tarjoaa mikropalveluille näkyvyyttä, luotettavuutta ja tietoturvaa.
- Palvelimettomat kehykset:
- AWS Lambda: Mahdollistaa koodin suorittamisen ilman palvelinten käyttöönottoa tai hallintaa.
- Palvelimeton kehys: Yksinkertaistaa sovellusten rakentamista palvelimettomilla arkkitehtuureilla.
- Tietokantojen hallinta:
- MongoDB: Suosittu NoSQL-tietokanta.
- PostgreSQL: Edistynyt avoimen lähdekoodin relaatiotietokanta.
Alustasuunnittelun lupaus
Vaikka alustasuunnittelu lupaa parantaa kehittäjien tuottavuutta, tämän potentiaalin toteuttaminen on helpommin sanottu kuin tehty. Alustaa on hallittava huolellisesti ja testattava sen vakauden varmistamiseksi, eikä siitä saa muodostua pullonkaulaa. Tämä kunnianhimoinen tavoite edellyttää yhteisiä ponnisteluja DevOps-tiimeiltä aina DevOps-insinööristä tuotetiimiin. Onnistunut toteutus perustuu saumattomaan orkestrointiin, putkien tehokkuuteen ja sitoutumiseen jatkuvaan integraatioon ja jatkuvaan käyttöönottoon. Tehokkaat testaamiskäytännöt ja automaatioon suunnattu työkalupakki ovat onnistuneen alustasuunnittelun edellytyksiä.
Haluatko lisätietoja tekoälystä ja ohjelmistojen testauksesta? Tilaa QA Lead -uutiskirje, niin saat kaikki uusimmat trendit.



