I softwareudviklingens verden er kodegennemgang og -godkendelse vigtige processer for at sikre kvaliteten, sikkerheden og funktionaliteten af den software, der udvikles. Men ledere, der har til opgave at overvåge disse kritiske processer, står ofte over for adskillige udfordringer, såsom følgende:
- Mangel på teknisk ekspertise – Ledere har muligvis ikke en dybdegående teknisk forståelse af det anvendte programmeringssprog eller har muligvis ikke været involveret i softwareudvikling i en længere periode. Dette resulterer i et vidensgab, der kan gøre det vanskeligt for dem nøjagtigt at vurdere virkningen og forsvarligheden af de foreslåede kodeændringer.
- Tidsbegrænsninger – Kodegennemgang og godkendelse kan være en tidskrævende proces, især i større eller mere komplekse projekter. Ledere skal balancere mellem grundigheden af gennemgangen og presset for at overholde projektets tidslinjer.
- Mængde af ændringsanmodninger – At håndtere en stor mængde ændringsanmodninger er en almindelig udfordring for ledere, især hvis de overvåger flere teams og projekter. I lighed med udfordringen med tidsbegrænsning, skal ledere være i stand til at håndtere disse anmodninger effektivt for ikke at holde projektets fremskridt tilbage.
- Manuel indsats – Kodegennemgang kræver manuel indsats af lederne, og den manglende automatisering kan gøre det svært at skalere processen.
- Dokumentation – Korrekt dokumentation af kodeksgennemgangen og -godkendelsesprocessen er vigtig for gennemsigtighed og ansvarlighed.
Med fremkomsten af generativ kunstig intelligens (AI), ledere kan nu udnytte denne transformative teknologi og integrere den med AWS-pakken af implementeringsværktøjer og -tjenester for at strømline gennemgangs- og godkendelsesprocessen på en måde, som ikke tidligere var mulig. I dette indlæg udforsker vi en løsning, der tilbyder en integreret end-to-end implementerings-workflow, der inkorporerer automatiseret ændringsanalyse og opsummering sammen med godkendelses-workflow-funktionalitet. Vi bruger Amazonas grundfjeld, en fuldt administreret tjeneste, der gør fundamentmodeller (FM'er) fra førende AI-startups og Amazon tilgængelige via en API, så du kan vælge mellem en bred vifte af FM'er for at finde den model, der er bedst egnet til din brug. Med Amazon Bedrock serverløse oplevelse kan du komme hurtigt i gang, privat tilpasse FM'er med dine egne data og integrere og implementere dem i dine applikationer ved hjælp af AWS-værktøjer uden at skulle administrere nogen infrastruktur.
Løsningsoversigt
Følgende diagram illustrerer løsningsarkitekturen.
Arbejdsgangen består af følgende trin:
- En udvikler skubber nye kodeændringer til deres kodelager (f.eks AWS CodeCommit), som automatisk udløser starten af en AWS CodePipeline implementering.
- Applikationskoden gennemgår en kodeopbygningsproces, udfører sårbarhedsscanninger og udfører enhedstest ved hjælp af dine foretrukne værktøjer.
- AWS CodeBuild henter depotet og udfører en git show-kommando for at udtrække kodeforskellene mellem den aktuelle commit-version og den tidligere commit-version. Dette producerer et linje-for-linje-output, der angiver de kodeændringer, der er foretaget i denne udgivelse.
- CodeBuild gemmer outputtet til en Amazon DynamoDB tabel med yderligere referenceoplysninger:
- CodePipeline run ID
- AWS-regionen
- CodePipeline navn
- CodeBuild build-nummer
- Dato og tid
- Status
- Amazon DynamoDB-streams fanger dataændringerne lavet til bordet.
- An AWS Lambda funktionen udløses af DynamoDB-strømmen for at behandle den registrerede post.
- Funktionen påberåber sig den antropiske Claude v2-model på Amazon Bedrock via Amazon Bedrock InvokeModel API opkald. Kodeforskellene, sammen med en prompt, leveres som input til modellen til analyse, og en oversigt over kodeændringer returneres som output.
- Outputtet fra modellen gemmes tilbage til den samme DynamoDB-tabel.
- Lederen får besked via Amazon Simple Email Service (Amazon SES) af resuméet af kodeændringer, og at deres godkendelse er påkrævet for implementeringen.
- Lederen gennemgår e-mailen og giver sin beslutning (enten godkend eller afvis) sammen med eventuelle anmeldelseskommentarer via CodePipeline-konsollen.
- Godkendelsesbeslutningen og anmeldelseskommentarer er fanget af Amazon Eventbridge, som udløser en Lambda-funktion for at gemme dem tilbage til DynamoDB.
- Hvis den godkendes, implementerer pipelinen applikationskoden ved hjælp af dine foretrukne værktøjer. Hvis det afvises, afsluttes arbejdsgangen, og implementeringen fortsætter ikke.
I de følgende afsnit implementerer du løsningen og verificerer ende-til-ende-arbejdsgangen.
Forudsætninger
For at følge instruktionerne i denne løsning skal du have følgende forudsætninger:
Implementer løsningen
Udfør følgende trin for at implementere løsningen:
- Vælg Start Stack for at starte en CloudFormation-stak i
us-east-1
: - Til Email adresse, indtast en e-mailadresse, som du har adgang til. Opsummeringen af kodeændringer vil blive sendt til denne e-mailadresse.
- Til modelId, forlad som standard anthropic.claude-v2, som er den antropiske Claude v2-model.
Det tager omkring 4 minutter at implementere skabelonen.
- Når du modtager en e-mail fra Amazon SES for at bekræfte din e-mailadresse, skal du vælge linket for at godkende din e-mailadresse.
- Du modtager en e-mail med titlen "Summary of Changes" for den indledende commit af prøvelageret til CodeCommit.
- På AWS CloudFormation-konsollen skal du navigere til Udgange fanen på den installerede stak.
- Kopier værdien af RepoCloneURL. Du skal bruge dette for at få adgang til prøvekodelageret.
Test løsningen
Du kan teste arbejdsgangen fra ende til anden ved at påtage dig rollen som udvikler og skubbe nogle kodeændringer. Et sæt eksempelkoder er blevet forberedt til dig i CodeCommit. Til få adgang til CodeCommit-depotet, indtast følgende kommandoer på din IDE:
Du finder følgende mappestruktur for en AWS Cloud Development Kit (AWS CDK) applikation, der opretter en Lambda-funktion til at udføre en boblesortering på en streng af heltal. Lambda-funktionen er tilgængelig via en offentligt tilgængelig URL.
Du foretager tre ændringer i applikationskoderne.
- For at forbedre funktionen til at understøtte både hurtig sortering og boblesorteringsalgoritme skal du tage en parameter ind for at tillade valg af den algoritme, der skal bruges, og returnere både den anvendte algoritme og det sorterede array i outputtet, erstatte hele indholdet af
lambda/index.py
med følgende kode:
- For at reducere timeout-indstillingen for funktionen fra 10 minutter til 5 sekunder (fordi vi ikke forventer, at funktionen kører længere end et par sekunder), skal du opdatere linje 47 i
my_sample_project/my_sample_project_stack.py
som følger:
- For at begrænse aktiveringen af funktionen ved hjælp af IAM for ekstra sikkerhed skal du opdatere linje 56 tommer
my_sample_project/my_sample_project_stack.py
som følger:
- Tryk på kodeændringerne ved at indtaste følgende kommandoer:
Dette starter CodePipeline-implementeringsworkflowet fra trin 1-9 som beskrevet i løsningsoversigten. Da vi påkaldte Amazon Bedrock-modellen, gav vi følgende prompt:
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk dig selv. Adgang her.
- PlatoAiStream. Web3 intelligens. Viden forstærket. Adgang her.
- PlatoESG. Kulstof, CleanTech, Energi, Miljø, Solenergi, Affaldshåndtering. Adgang her.
- PlatoHealth. Bioteknologiske og kliniske forsøgs intelligens. Adgang her.
- Kilde: https://aws.amazon.com/blogs/machine-learning/enhance-code-review-and-approval-efficiency-with-generative-ai-using-amazon-bedrock/
- :har
- :er
- :ikke
- $OP
- 1
- 10
- 100
- 11
- 17
- 200
- 27
- 58
- 7
- 8
- 9
- a
- I stand
- Om
- fremskynde
- adgang
- tilgængelig
- ansvarlighed
- præcist
- opnå
- faktisk
- tilføjet
- Desuden
- Yderligere
- adresse
- Tilføjer
- Fordel
- AI
- algoritme
- algoritmer
- tillade
- sammen
- Amazon
- Amazon Web Services
- an
- Analyser
- analyse
- analysere
- ,
- Antropisk
- enhver
- api
- app
- Anvendelse
- applikationer
- godkendelse
- Godkend
- godkendt
- arkitektur
- ER
- omkring
- Array
- kunstig
- AS
- vurdere
- hjælpe
- Assistant
- attributter
- augmented
- autentificeret
- Godkendelse
- bemyndige
- Automatiseret
- automatisk
- Automation
- til rådighed
- AWS
- AWS CloudFormation
- tilbage
- Balance
- baseret
- BE
- fordi
- været
- være
- BEDSTE
- mellem
- krop
- både
- bringe
- boble
- bygge
- Bygning
- by
- ringe
- CAN
- Kan få
- fanget
- tilfælde
- CD
- udfordre
- udfordringer
- lave om
- ændret
- Ændringer
- Vælg
- ren
- Cloud
- kode
- Kode anmeldelse
- koder
- kommentarer
- begå
- Fælles
- fuldføre
- komplekse
- kortfattet
- Adfærd
- adfærd
- Konsekvenser
- overvejelser
- består
- Konsol
- indhold
- sammenhæng
- oprettet
- skaber
- kritisk
- Nuværende
- tilpasse
- data
- datter
- beskæftiger
- beslutning
- Standard
- definerede
- indsætte
- indsat
- implementering
- implementering
- udruller
- Design
- ønskes
- Detailing
- Bestem
- udviklet
- Udvikler
- Udvikling
- diagram
- forskelle
- forskellige
- svært
- Vejviser
- dokumentation
- gør
- Dont
- varighed
- lette
- effektivitet
- effektivt
- indsats
- enten
- andet
- ende
- ende til ende
- ender
- Engineering
- forbedre
- sikring
- Indtast
- indtastning
- Hele
- Miljø
- især
- begivenhed
- eksempel
- Undtagen
- forvente
- erfaring
- eksperimenter
- udforske
- udforsker
- udvidet
- ekstrakt
- Ansigtet
- konfronteret
- familie
- få
- finansielle
- Finansielle institutioner
- Finde
- Fleksibilitet
- følger
- efter
- følger
- Til
- Foundation
- Gratis
- fra
- fuldt ud
- funktion
- funktionel
- funktionalitet
- yderligere
- kløft
- genereret
- generative
- Generativ AI
- få
- få
- Git
- Go
- Goes
- større
- vejledning
- håndtere
- seletøj
- Have
- have
- he
- Høj
- stærkt
- hans
- hold
- Hvordan
- Men
- HTML
- http
- HTTPS
- menneskelig
- i
- ID
- if
- illustrerer
- KIMOs Succeshistorier
- implementering
- gennemføre
- implikationer
- vigtigt
- Forbedre
- in
- dybdegående
- inkorporerer
- indeks
- angiver
- oplysninger
- Infrastruktur
- initial
- indgang
- institutioner
- anvisninger
- integrere
- integreret
- Integrerer
- ind
- Introducerer
- påberåber sig
- involverede
- IT
- json
- Kend
- viden
- Mangel
- Sprog
- større
- lancere
- førende
- Forlade
- mindre
- lad
- Line (linje)
- LINK
- Liste
- længere
- lavet
- Main
- større
- lave
- maerker
- administrere
- lykkedes
- leder
- Ledere
- måde
- manuel
- Kan..
- betød
- Mød
- Metadata
- måske
- minutter
- model
- modeller
- Modifikationer
- mere
- mest
- flere
- Naviger
- Behov
- Ny
- næste
- ingen
- Ingen
- nu
- numre
- talrige
- of
- Tilbud
- tit
- on
- kun
- or
- Andet
- Ellers
- ud
- skitseret
- output
- uden for
- samlet
- tilsyn
- oversigt
- egen
- parameter
- verserende
- Udfør
- udfører
- periode
- pipeline
- Pivot
- plato
- Platon Data Intelligence
- PlatoData
- mulig
- Indlæg
- potentiale
- magt
- foretrækkes
- forberedt
- forudsætninger
- tryk
- tidligere
- tidligere
- Fortsæt
- behandle
- Processer
- producere
- producerer
- Profil
- Programmering
- Progress
- projekt
- projekter
- prompter
- passende
- foreslog
- give
- forudsat
- giver
- offentligt
- formål
- skubber
- Pushing
- kvalitet
- query
- Hurtig
- hurtigt
- rækkevidde
- modtage
- optage
- reducere
- Reduceret
- reducerer
- henvisningen
- Afvist..
- frigive
- erstatte
- Repository
- anmodninger
- påkrævet
- Krav
- Kræver
- Ressourcer
- svar
- begrænse
- Resultater
- afkast
- afkast
- gennemgå
- Anmeldelser
- Rise
- roller
- Kør
- s
- samme
- prøve
- Gem
- gemt
- skalerbar
- Scale
- scanninger
- sekunder
- sektioner
- sikker
- sikkerhed
- valg
- senior
- sendt
- Serverless
- tjeneste
- Tjenester
- sæt
- indstilling
- bør
- Vis
- lignende
- Simpelt
- Singapore
- So
- Software
- softwareudvikling
- software Engineering
- løsninger
- Løsninger
- nogle
- Kilde
- specificeret
- hastighed
- tilbringer
- stable
- starte
- påbegyndt
- starter
- Nystartede
- Trin
- Steps
- strøm
- strømline
- String
- struktur
- sådan
- suite
- egnet
- RESUMÉ
- support
- bord
- Tag
- tager
- hold
- Teknisk
- Teknologier
- skabelon
- prøve
- tests
- end
- at
- verdenen
- deres
- Them
- Der.
- Disse
- de
- denne
- dem
- tre
- Gennem
- strammer
- tid
- tidskrævende
- tidslinjer
- titlen
- til
- sammen
- værktøj
- værktøjer
- transformative
- Gennemsigtighed
- udløst
- prøv
- to
- typisk
- forståelse
- enhed
- Opdatering
- opdateret
- URL
- us
- brug
- brug tilfælde
- anvendte
- brugere
- bruger
- ved brug af
- v1
- værdi
- forskellige
- verificere
- udgave
- via
- bind
- vs
- sårbarhed
- var
- we
- web
- webservices
- GODT
- var
- hvornår
- som
- bred
- Bred rækkevidde
- vilje
- med
- inden for
- uden
- Arbejde
- workflow
- arbejder
- virker
- world
- X
- yaml
- Du
- Din
- zephyrnet