Programmering

10 forudsigelser af softwareudvikling for 2018

Siddhartha Agarwal er vicepræsident, produktstyring og strategi for Oracle Cloud Platform.

Udviklere skal være brændende af spænding over de muligheder, der ligger foran i 2018, med produkter og værktøjer omkring teknologier som blockchain, chatbots, serverløse funktioner og maskinindlæring, der bliver modne nok til virkelige projekter. Samtidig vil mange udviklere være bekymrede for at holde op med presset for at levere kode og funktionalitet hurtigere uden at gå på kompromis med sikkerhed eller ydeevne. Men der er også gode nyheder på den front.

For udviklere vil 2018 blive defineret af denne spænding mellem at udnytte transformerende nye muligheder, mens man håndterer presset for at gøre mere med højere kvalitet. Nedenfor er 10 forudsigelser relateret til, hvordan disse kræfter vil spille ud i det kommende år.

1. B2B-transaktioner, der udnytter blockchain, går i produktion

Virksomheder er begyndt at forstå den sikkerhed, pålidelighed og effektivitet, der opnås ved blockchain-aktiverede transaktioner. Udviklere vil implementere mange blockchain-brugssager på tværs af finansielle tjenester og fremstilling af forsyningskæder i det kommende år. Blockchain er en teknologi, der muliggør effektive, sikre, uforanderlige, pålidelige transaktioner mellem organisationer, der måske ikke fuldt ud stoler på hinanden, hvilket eliminerer formidlere.

Overvej et firma, der bestiller produkter fra en offshore-producent. Disse produkter sendes via et rederi, kommer gennem tolden, gennem et andet rederi og endelig til køberen. I dag sker verifikation og afstemning af hvert trin for det meste via e-mails og regneark, hvor mange mennesker og processer er involveret. Blockchain eliminerer manuelle processer og forsoning ved uigenkaldeligt at registrere opdateringer til blockchain-hovedbogen, når et minimum antal parter siger, "Ja, denne del af transaktionen skete."

Blockchain-cloudtjenester vil give skalerbarhed, fleksibilitet, sikkerhed og forudbyggede integrationer med virksomhedssystemer, hvilket gør det meget lettere for udviklere at fokusere på forretningsbrugssagen i modsætning til underliggende implementering af hyperledger-stof.

2. Chatbots har rutinemæssigt rigtige samtaler med kunder og medarbejdere

Folk bliver trætte af at have brug for flere mobile apps til at udføre det samme job - som tre forskellige luftfartsselskabsapps med forskellige måder at tjekke ind og få et boardingkort på. En bedre måde er at levere den samme funktionalitet, men via den mest populære app på din telefon - messaging. Beskeder har tre attraktive elementer, der er konsistente på tværs af mediet: øjeblikkelig, udtryksfuld og samtaler - ingen træning er nødvendig. Takket være fremskridt inden for kunstig intelligens og naturlig sprogbehandling bruger folk Facebook Messenger, Slack, WeChat, WhatsApp eller en stemmeassistent som Amazon Alexa eller Google Home til at stille spørgsmål og få svar fra intelligente bots.

Udviklere, der bruger nye intelligente bot-building sky-tjenester, kan hurtigt lave bots, der forstår kundens hensigt, opretholder samtaletilstand og reagerer intelligent, samtidig med at det er let at integrere med back-end-systemer. Forestil dig at tage et billede af en kjole, du så i en film, og sende billedet til din yndlings tøjbutiks bot, som bruger billedgenkendelse og AI til at anbefale lignende kjoler. Medarbejdere kan også være enorme modtagere af bots til opgaver såsom at spørge, hvor mange feriedage de har tilbage, arkivering af en helpdesk-billet eller bestille en erstatnings-bærbar computer, hvor systemet endda ved, hvilke bærbare computere medarbejderen er berettiget til og kan levere statusopdateringer på deres ordre. Da det er meget mere tilgivende at eksperimentere med din egen medarbejderbase, kan udviklere muligvis først udnytte deres bot-bygningskoteletter til at bygge og teste medarbejdervendte bots.

3. Knappen forsvinder: AI bliver app-interface

AI bliver brugergrænsefladen, hvilket betyder, at den synkrone model for anmodningsrespons ved brug af apps og tjenester gradvist forsvinder. Smartphones er stadig "lav IQ", fordi du er nødt til at hente dem, starte en applikation, bede om, hvad der skal gøres, og til sidst få svar. I en ny generation af intelligente apps starter appen interaktioner via push-underretninger. Lad os tage dette et skridt videre, hvor en app, bot eller en virtuel personlig assistent, der bruger kunstig intelligens, ved, hvad de skal gøre hvornår, hvorfor, hvor og hvordan. Og bare gør det. To eksempler:

  • App for godkendelsesudgifter følger dit mønster med godkendelse af udgiftsrapporter, begynder automatisk at godkende 99 procent af udgiftsrapporter og bringer kun opmærksomheden på den sjældne rapport, der kræver din opmærksomhed.
  • Analytics-appen forstår de underliggende data, spørgsmål, der hidtil er stillet af forretningsbrugeren, spørgsmål, der stilles af det samme datasæt af andre brugere i virksomheden, og giver hver dag en ny indsigt, som analytikeren måske ikke havde tænkt på. Når organisationer indsamler flere data, kan AI hjælpe os med at lære, hvilke spørgsmål der skal stilles til dataene.

Udviklere skal finde ud af, hvilke data der virkelig er vigtige for deres forretningsapplikation, hvordan man kan se og lære af transaktioner, hvilke forretningsbeslutninger der mest drager fordel af denne form for proaktiv AI, og begynde at eksperimentere. Indlejret AI kan forudsige, hvad du har brug for, levere info og funktionalitet via det rigtige medium på det rigtige tidspunkt, inklusive før du har brug for det, og automatisere mange opgaver, du udfører manuelt i dag.

4. Maskinindlæring påtager sig praktiske, domænespecifikke anvendelser

Maskinindlæring bevæger sig fra verden af ​​obskure datalogi til almindelig applikationsudvikling, både på grund af den tilgængelige tilgængelighed af forudbyggede moduler på populære platforme, og fordi det er så nyttigt, når man håndterer analyse på tværs af store, historiske datasæt. Med maskinindlæring kommer den mest værdifulde indsigt med kontekst - hvad du har gjort før, hvilke spørgsmål du har stillet, hvad andre mennesker laver, hvad der er normalt versus unormalt.

Men for at være effektiv skal maskinlæring indstilles og trænes i et domænespecifikt miljø, der inkluderer både de datasæt, den vil analysere, og de spørgsmål, den vil besvare. For eksempel vil maskinlæringsapplikationer designet til at identificere anomaløs brugeradfærd for en sikkerhedsanalytiker være meget forskellige fra maskinlæringsapplikationer designet til at optimere fabriksrobotoperationer, som kan være meget forskellige fra dem, der er designet til at gøre afhængighedskortlægning af en mikroservicebaseret applikation.

Udviklere bliver nødt til at blive mere vidende om domænespecifikke brugssager for at forstå, hvilke data der skal indsamles, hvilke typer maskinindlæringsalgoritmer, der skal anvendes, og hvilke spørgsmål de skal stille. Udviklere bliver også nødt til at evaluere, om domænespecifikke SaaS eller pakkede applikationer passer godt til et givet projekt i betragtning af det faktum, at der kræves store mængder træningsdata.

Ved hjælp af maskinindlæring kan udviklere opbygge intelligente applikationer til at generere anbefalinger, forudsige resultater eller træffe automatiserede beslutninger.

5. DevOps bevæger sig mod NoOps

Vi er alle enige om, at devops er kritisk vigtigt for at hjælpe udviklere med at opbygge nye applikationer og funktioner hurtigt og samtidig opretholde høje niveauer af kvalitet og ydeevne. Problemet med devops er udviklere, der har brug for at bruge 60 procent af deres tid på ops-siden af ​​ligningen og dermed skære i den tid, der er afsat til udvikling. Udviklere skal integrere forskellige kontinuerlige integrations- og kontinuerlige leveringsværktøjer (CICD), vedligeholde disse integrationer og konstant opdatere CI / CD-værktøjskæden, når nye teknologier frigives. Alle gør CI, men ikke for mange mennesker gør CD. Udviklere vil insistere på skytjenester for at hjælpe pendulet med at svinge tilbage til udviklingssiden i 2018. Det vil kræve mere automatisering for ægte CICD.

Docker giver dig emballage, bærbarhed og evnen til at udføre agile implementeringer. Du skal bruge CD for at være en del af denne Docker-livscyklus. For eksempel, hvis du bruger containere, så snart du foretager en kodeændring til Git, skal standardgenstanden, der er bygget, være et Docker-billede med den nye version af koden. Desuden skal billedet automatisk skubbes ind i en Docker-registreringsdatabase, og en container indsættes fra billedet i et dev-test-miljø. Efter QA-test og implementering i produktion skal orkestrering, sikkerhed og skalering af containere sørges for dig. Virksomhedsledere lægger pres på udviklere for at levere nye innovationer hurtigere; devops-modellen skal frigøre mere tid til udviklere for at gøre det muligt.

6. Open source som en tjeneste fremskynder forbruget af open source innovation

Open source-modellen er fortsat en af ​​de bedste motorer inden for innovation, men implementering og vedligeholdelse af denne innovation er ofte for kompleks. For eksempel:

  • Du vil have en streaming data / event management platform, så du henvender dig til Kafka. Når du begynder at udnytte Kafka i skala, skal du oprette yderligere Kafka-noder og belastningsbalance store Kafka-klynger, opdatere disse klynger, når nye udgivelser af Kafka kommer ud og derefter integrere denne service med resten af ​​dit miljø.
  • Du vil have Kubernetes til orkestrering af containere. I stedet for at tage sig af opgraderinger, sikkerhedskopier, gendannelser og programrettelser til din Kubernetes-klynge, skal platformen gøre alt dette for dig. Kubernetes sendes hver sjette uge, så platformen skal have rullende implementeringer og selvhelbredelse.
  • Du vil have Cassandra til NoSQL-databaser. Du bør ønske, at sikkerhedskopien (trinvis eller fuld efter planen), patch, clustering, skalering og høj tilgængelighed af Cassandra-klyngen administreres af platformen.

Udviklere vil i stigende grad søge efter cloud-tjenester til at levere al den hurtige innovation fra open source, mens de tager sig af drifts- og ledelsesaspekter af disse teknologier.

7. Serverløse arkitekturer går stort i produktion

Appellen fra serverløse arkitekturer er klar: Når der er krav om, at min kode skal udføres baseret på en bestemt begivenhed, instanteres infrastrukturen, min kode distribueres og udføres, og jeg opkræves kun det tidspunkt, min kode kører. Lad os sige, at du vil oprette en rejsebokningsfunktion til at booke / annullere fly, hoteller og lejebiler. Hver af disse handlinger kan bygges som en serverfri funktion skrevet på forskellige sprog som Java, Ruby, JavaScript og Python. Der kører ingen applikationsserver med min kode på den; snarere er funktionerne instantieret og udføres kun på infrastruktur, når det er nødvendigt.

For udviklere skaber strengning af serverløse funktioner sammen for at udføre komplekse transaktioner nye udfordringer: at beskrive, hvordan disse funktioner skal lænkes sammen, debugge distribuerede transaktioner og bestemme, hvordan en fejl i en kæde skal skabe kompenserende transaktioner for at annullere upassende ændringer. Se efter skytjenester og open source-værktøjer, som FN-projektet, til at blomstre ved at hjælpe udviklere med let at styre programmering, komposition, fejlretning og livscyklusadministration af serverløse funktioner og til at implementere og teste dem på en bærbar eller on-prem server. eller enhver sky. Nøglen skal vælge en serverløs platform, der giver maksimal bærbarhed.

8. Det eneste spørgsmål om containere bliver "Hvorfor ikke?"

Containere bliver standard for dev / test-arbejde og almindeligt anvendt til produktionsapplikationer. Forvent fortsatte forbedringer i sikkerhed, håndterbarhed, orkestrering, overvågning og fejlretning drevet af open source-innovationer og industristandarder. Containere er byggestenene til mange af de tendenser, der driver moderne udvikling, herunder mikrotjenestearkitekturer, cloud-native apps, serverløse funktioner og devops.

Containere giver ikke mening overalt - for eksempel når du har brug for en mere receptpligtig cloudplatform, såsom en PaaS-integration eller en mobil PaaS - men disse skytjenester på højere niveau kører selv på containere og vil være de undtagelser, der beviser Herske.

Derudover skal softwarelicenseringsmodeller til værdifuld, kommerciel, lokal software omfatte udbredelsen af ​​containeroptagelse. Prissætningsmodeller til software skal understøtte "tænd" og "sluk" -licenser, da containere instantieres, skaleres op og nedskaleres.

9. Software og systemer bliver selvhelbredende, selvindstillet og selvadministrerende

Udviklere og produktionsdriftsteam drukner data fra logfiler, overvågning af ydeevne på web / app / database og overvågning af brugeroplevelse og konfiguration. Derudover bliver disse forskellige typer data lukket, så du skal bringe mange mennesker ind i et rum for at debugge problemer. Så er der spørgsmålet om videnoverførsel: Udviklere bruger meget tid på at fortælle produktionsoptioner om deres applikationer, hvilke tærskler der skal indstilles, hvilke servertopologier der skal overvåges for en transaktion osv.