De softwareapplicaties van vandaag moeten miljoenen wereldwijde gebruikers op verzoek aankunnen en op meerdere platforms en omgevingen draaien. Ze moeten ook een hoge beschikbaarheid bieden en bestand zijn tegen de toegenomen dreigingen van cyberveiligheid. En ze moeten bedrijven in staat stellen te innoveren en in te spelen op veranderende marktomstandigheden.
Moderne applicaties zijn gebouwd voor schaalbaarheid, agility, portabiliteit en veerkracht. Ze geven organisaties de mogelijkheid om veel sneller dan traditionele applicaties te experimenteren en ideeën te realiseren.
Moderne applicatieontwikkeling maakt gebruik van agile leveringsmethoden, DevOps, modulaire architectuur, geïntegreerde beveiliging en cloudinfrastructuur om ontwikkelingsteams in staat te stellen veilige applicaties in snellere ontwikkelingscycli vrij te geven.
Dit is wat u moet weten over moderne app-ontwikkeling, inclusief hoe het verschilt van legacy benaderingen.
Moderne applicaties vs. legacy-applicaties
Legacy-applicaties zijn meestal gebouwd op een strak geïntegreerde architectuur als single-tier softwareapplicaties, met alle onderdelen ingebouwd in één platform. Er is geen duidelijke scheiding tussen de elementen van de applicatie. Updates vereisen een nieuwe release, en bugs in één onderdeel van de applicatie hebben gevolgen voor de hele applicatie. Legacy-applicaties worden meestal ontwikkeld en geïnstalleerd op fysieke hardware, wat hogere kosten met zich meebrengt en meer onderhoud vereist.
Moderne applicaties maken daarentegen gebruik van een modulaire architectuur in de vorm van microservices, waardoor hun componenten onafhankelijk van elkaar kunnen worden ontwikkeld. Individuele teams kunnen worden toegewezen aan een enkele microservice die is gebouwd met behulp van de beste ontwikkeltaal, database en bibliotheken voor de specifieke functionaliteit. Microservices worden afzonderlijk vrijgegeven en bijgewerkt, zonder andere aspecten van de applicatie te beïnvloeden. Dit ontwikkelingsmodel maakt snellere releases mogelijk en vermindert de downtime van de applicatie.
Fundamentele elementen van moderne applicatieontwikkeling
Moderne applicaties worden gebouwd voor zeer uiteenlopende gebruiksdoeleinden, maar berusten op dezelfde basisprincipes. Laten we eens kijken naar enkele van de basiselementen van moderne applicatieontwikkeling.
Verhoogde samenwerking met agile werkwijzen
Bij een traditionele ontwikkelingsaanpak wordt het verzamelen van de vereisten aan het begin van het proces gedaan. Er is weinig tot geen verdere interactie tussen ontwikkelaars en gebruikers tot de laatste stadia van het project.
Agile ontwikkelingsprocessen daarentegen omvatten frequente en incrementele iteraties van ontwerp, ontwikkeling en implementatie. Hierdoor kan snel worden gereageerd op veranderingen in de behoeften. Ontwikkelings- en operationele teams, zakelijke belanghebbenden en gebruikers werken in een geïntegreerde samenwerkingsomgeving die voortdurend feedback kan geven.
Continue samenwerking binnen een agile omgeving moedigt teams aan om ideeën en oplossingen te delen. Dit leidt tot een snellere oplossing van problemen en een duidelijker zicht op de doelstellingen van het project naarmate het de ontwikkelingsfasen doorloopt.
DevOps-geschikt
DevOps is een softwareontwikkelingspraktijk en -cultuur die de taken van ontwikkelings- en IT-operationsteams integreert om de levenscyclus van de applicatieontwikkeling te verkorten. DevOps omvat de toepassing van agile en iteratieve softwareontwikkelingspraktijken, automatisering, en een cultuur van vertrouwen en cohesie tussen ontwikkelings- en operationele teams.
DevOps-omgevingen omvatten geautomatiseerde continue integratie en gecontinueerde levering/implementatie(CI/CD) tools, realtime monitoring, incident- en configuratiebeheer, en cloud computing voor de ondersteuning van microservices en containers.
Ontwikkelingsteams zorgen ervoor dat de geleverde software robuust en foutloos is. Zij werken samen met operationele teams in een continue releasecyclus. Operationele teams zorgen ervoor dat ontwikkelaars een werkomgeving hebben die innovatie en een snel applicatieontwikkelingsproces ondersteunt.
DevOps helpt silo's tussen teams af te breken en de efficiëntie te verhogen. DevOps integreert automatiseringstools om builds, testen, configuraties, implementatie en monitoring van de ontwikkelomgeving te beheren. Dit stelt teams in staat om problemen zo snel mogelijk op te sporen, te diagnosticeren en op te lossen.
Automatisering
Moderne applicaties leunen zwaar op automatisering. In feite zijn processen zoals CI/CD, continu testen, applicatieprestatiemonitoring en beveiligingsmonitoring allemaal geautomatiseerd.
Automatisering kan worden gebruikt om code-check-ins en bouwprocessen in gang te zetten; tests uit te voeren voor functionaliteit, kwaliteit, dekking en veiligheid van de code; en applicaties automatisch uit te rollen naar staging- en productieomgevingen.
Tools worden gebruikt ter ondersteuning van end-to-end automatisering van de leveringspijplijn, met inbegrip van operationele activiteiten zoals provisioning-machines, het opstarten van virtuele servers, het configureren van netwerken en firewalls, en het monitoren van applicaties op prestaties en beveiliging.
Als gevolg daarvan maakt automatisering consistentie, snelheid en grotere nauwkeurigheid en betrouwbaarheid mogelijk bij de ontwikkeling van moderne applicaties.
Continue integratie/continue implementatie (CI/CD)
Bij moderne applicatieontwikkeling creëert CI/CD pijplijnen voor het snel testen en vrijgeven van kleine stukjes code. Teams kunnen meerdere kleine versies van de code afleveren met minder defecten. Bij traditionele applicatieontwikkeling daarentegen leveren teams doorgaans slechts één of twee versies van de code per jaar af.
Wijzigingen in de applicatiecode worden samengevoegd in een centrale repository, waardoor een geautomatiseerd bouwproces in gang wordt gezet. Het bouwproces voert ook validatie- en integratietests uit, zodat ontwikkelaars bugs en integratieproblemen vroeg in het ontwikkelingsproces kunnen opsporen en oplossen.
Continue implementatie volgt op continue integratie. Codewijzigingen worden uitgerold naar test- en productieomgevingen. CI/CD stelt ontwikkelingsteams in staat te werken in de veronderstelling dat de code stabiel en foutloos is terwijl deze door de ontwikkelketen beweegt.
Gebruik van microservices, API's en containers
Moderne applicaties zijn gebouwd op een framework dat microservices, gestandaardiseerde application programming interfaces (API's) en containers omvat.
Microservices splitsen applicaties op in losjes gekoppelde, onafhankelijke services die afzonderlijk kunnen worden ingezet. Dankzij deze modulaire architectuur kunnen ontwikkelaars applicaties schalen of updaten zonder andere diensten te verstoren.
Moderne applicaties maken gebruik van ontkoppelde datastores met een één-op-één mapping van microservices en databases. Dit betekent dat elke microservice zijn eigen speciaal gebouwde database kan gebruiken, waardoor knelpunten in de centrale database worden voorkomen (een probleem dat zich voordoet bij traditionele monolithische ontwikkeling).
API's worden gebruikt als gateways voor interactie met microservices. Ze zijn beschikbaar via HTTPS en bieden toegang tot de data en functionaliteit van een microservice. API's ondersteunen het hergebruik van bestaande code om de ontwikkelingsinspanning en de overdaad aan applicaties te verminderen.
Containers zijn kleine softwarepakketten die de ondersteunende omgeving voor een microservice bieden. Ze bevatten alles wat de microservice nodig heeft, inclusief code, runtime, systeemtools, bibliotheken en afhankelijkheden. Containers isoleren microservices van de omringende omgeving om consistente prestaties in verschillende omgevingen te garanderen (bijv. ontwikkeling en staging).
Ontwikkeld met behulp van cloud-architectuur
Bij de moderne ontwikkeling van applicaties worden applicaties geabstraheerd van de onderliggende hardware met behulp van cloudtechnologieën. De cloud ondersteunt virtualisatie, serverloze technologieën en as-a-service-oplossingen, zoals software-as-a-service (SaaS), platform as a service (PaaS) en infrastructure as a service (IaaS). Deze oplossingen bieden schaalbare infrastructuur en maken het opzetten van ontwikkelomgevingen met fysieke hardware overbodig.
Cloud-gebaseerde diensten kunnen verschillende virtuele resources beschikbaar stellen voor de ontwikkeling van moderne applicaties, waaronder servers, netwerkinfrastructuur, opslag, CPU's en geheugen. Door projectactiva en -middelen in de cloud op te slaan, maken moderne app-ontwikkelingsprocessen een betere samenwerking tussen teams en belanghebbenden mogelijk.
Moderne applicaties kunnen draaien in verschillende cloudomgevingen, waaronder public, private, hybride en multicloud. Dit geeft organisaties de flexibiliteit om meerdere cloudproviders te gebruiken en omgevingen naar behoefte te combineren.
DevSecOps
DevSecOps breidt het DevOps-proces uit en wordt vaak aangeduid als "shift-linksecurity". Deze aanpak is erop gericht om beveiliging eerder in het ontwikkelingsproces op te nemen, waardoor het een integraal onderdeel wordt van het ontwerp van de applicatie. Als gevolg daarvan is beveiliging niet langer uitsluitend de verantwoordelijkheid van het beveiligingsteam.
DevSecOps introduceert verbeterde automatisering door de software delivery pijplijn om kwetsbaarheden te elimineren die het potentieel voor beveiligingsaanvallen verhogen. Beveiliging wordt geïntegreerd in het ontwikkelingsproces met behulp van hulpmiddelen zoals code-repositories, build-managementprogramma's, en implementatietools. Beveiligingscontroles en -processen worden toegepast op zowel de ontwikkelingspijplijn als de software die via de pijplijn wordt vrijgegeven.
DevSecOps helpt applicatieontwikkelingsteams de vertragingen te vermijden die ontstaan door de test- en probleemoplossingsprocessen aan het eind van een traditionele ontwikkelcyclus. Door beveiliging op te nemen in de ontwikkeling van moderne applicaties kunnen teams sneller software uitbrengen, zonder de veiligheid in gevaar te brengen.
Pure DevOps-oplossingen ondersteunen moderne applicatieontwikkeling
Moderne applicaties stimuleren innovatie, verkorten de time-to-market, verlagen de totale eigendomskosten en bieden een betere beveiliging van applicaties. Pure Storage® DevOps-oplossingen kunnen u helpen:
- Versnel uw CI/CD-pijplijn met self-service-ontwikkelomgevingen voor een snellere time-to-market.
- Codeer sneller met self-service-ontwikkelomgevingen en op containers gebaseerde PaaS.
- Geautomatiseerde en herhaalbare processen bouwen met infrastructure-as-code (IaC) voor continue levering.
Lees meer over hoe de DevOps-oplossingen van Pure het concurrentievoordeel van uw bedrijf vergroten door uw CI/CD-pijplijn en moderne applicatieontwikkeling te ondersteunen.