In de wereld van softwareontwikkeling zijn codebeoordeling en -goedkeuring belangrijke processen om de kwaliteit, veiligheid en functionaliteit van de software die wordt ontwikkeld te waarborgen. Managers die belast zijn met het toezicht op deze kritieke processen worden echter vaak geconfronteerd met tal van uitdagingen, zoals de volgende:
- Gebrek aan technische expertise – Managers hebben mogelijk geen diepgaand technisch inzicht in de gebruikte programmeertaal of zijn mogelijk al langere tijd niet betrokken bij software-engineering. Dit resulteert in een kennislacune die het voor hen moeilijk kan maken om de impact en deugdelijkheid van de voorgestelde codewijzigingen nauwkeurig te beoordelen.
- Tijdsdruk – Codebeoordeling en goedkeuring kunnen een tijdrovend proces zijn, vooral bij grotere of complexere projecten. Managers moeten een evenwicht vinden tussen de grondigheid van de beoordeling en de druk om de projecttijdlijnen te halen.
- Volume wijzigingsverzoeken – Het omgaan met een groot aantal wijzigingsverzoeken is een veel voorkomende uitdaging voor managers, vooral als ze toezicht houden op meerdere teams en projecten. Net als bij tijdgebrek moeten managers in staat zijn om deze verzoeken efficiënt af te handelen, zodat de voortgang van het project niet wordt tegengehouden.
- Handmatige inspanning – Code review vereist handmatige inspanning van de managers, en het gebrek aan automatisering kan het moeilijk maken om het proces op te schalen.
- Documentatie – Een goede documentatie van het beoordelings- en goedkeuringsproces van de code is belangrijk voor transparantie en verantwoording.
Met de opkomst van generatieve kunstmatige intelligentie (AI) kunnen managers deze transformatieve technologie nu benutten en integreren met de AWS-suite van implementatietools en -diensten om het beoordelings- en goedkeuringsproces te stroomlijnen op een manier die voorheen niet mogelijk was. In dit artikel verkennen we een oplossing die een geïntegreerde end-to-end implementatieworkflow biedt die geautomatiseerde wijzigingsanalyse en samenvatting omvat, samen met goedkeuringsworkflowfunctionaliteit. We gebruiken Amazonebodem, een volledig beheerde service die basismodellen (FM's) van toonaangevende AI-startups en Amazon beschikbaar maakt via een API, zodat u uit een breed scala aan FM's kunt kiezen om het model te vinden dat het meest geschikt is voor uw gebruiksscenario. Met de serverloze ervaring van Amazon Bedrock kunt u snel aan de slag, FM's privé aanpassen met uw eigen gegevens en deze integreren en implementeren in uw applicaties met behulp van AWS-tools, zonder dat u enige infrastructuur hoeft te beheren.
Overzicht oplossingen
Het volgende diagram illustreert de oplossingsarchitectuur.
De workflow bestaat uit de volgende stappen:
- Een ontwikkelaar pusht nieuwe codewijzigingen naar zijn coderepository (zoals AWS Codecommit), wat automatisch het begin van een activeert AWS CodePipeline implementatie.
- De applicatiecode doorloopt een codebouwproces, voert kwetsbaarheidsscans uit en voert unit-tests uit met behulp van uw favoriete tools.
- AWS CodeBuild haalt de repository op en voert een git show commando uit om de codeverschillen tussen de huidige commit-versie en de vorige commit-versie te extraheren. Dit levert een regel-voor-regel uitvoer op die de codewijzigingen aangeeft die in deze release zijn aangebracht.
- CodeBuild slaat de uitvoer op in een Amazon DynamoDB tabel met aanvullende referentie-informatie:
- CodePipeline-uitvoerings-ID
- AWS-regio
- CodePipeline-naam
- CodeBuild-buildnummer
- Datum en tijd
- Status
- Amazon DynamoDB-streams legt de gegevenswijzigingen vast op tafel gemaakt.
- An AWS Lambda functie wordt geactiveerd door de DynamoDB-stream om de vastgelegde record te verwerken.
- De functie roept het Anthropic Claude v2-model op Amazon Bedrock aan via Amazon Bedrock InvokeModel-API telefoongesprek. De codeverschillen worden, samen met een prompt, geleverd als invoer voor het model voor analyse, en een samenvatting van de codewijzigingen wordt als uitvoer geretourneerd.
- De uitvoer van het model wordt terug opgeslagen in dezelfde DynamoDB-tabel.
- De manager wordt op de hoogte gebracht via Amazon eenvoudige e-mailservice (Amazon SES) van de samenvatting van codewijzigingen en dat hun goedkeuring vereist is voor de implementatie.
- De manager beoordeelt de e-mail en geeft zijn beslissing (goedkeuren of afwijzen) samen met eventuele beoordelingsopmerkingen via de CodePipeline-console.
- Het goedkeuringsbesluit en de beoordelingsopmerkingen worden vastgelegd door Amazon EventBridge, die een Lambda-functie activeert om ze weer op te slaan in DynamoDB.
- Indien goedgekeurd, implementeert de pijplijn de applicatiecode met behulp van de tools van uw voorkeur. Indien afgewezen, eindigt de werkstroom en gaat de implementatie niet verder.
In de volgende secties implementeert u de oplossing en verifieert u de end-to-end workflow.
Voorwaarden
Om de instructies in deze oplossing te volgen, hebt u de volgende vereisten nodig:
Implementeer de oplossing
Voer de volgende stappen uit om de oplossing te implementeren:
- Kies Start Stack om een CloudFormation-stack te lanceren
us-east-1
: - Voor E-mailadres, voer een e-mailadres in waartoe u toegang heeft. Het overzicht van de codewijzigingen wordt naar dit e-mailadres verzonden.
- Voor modelId, laat het standaard anthropic.claude-v2 staan, wat het Anthropic Claude v2-model is.
Het implementeren van de sjabloon duurt ongeveer 4 minuten.
- Wanneer u een e-mail ontvangt van Amazon SES om uw e-mailadres te verifiëren, kiest u de verstrekte link om uw e-mailadres te autoriseren.
- U ontvangt een e-mail met de titel “Samenvatting van de wijzigingen” voor de eerste commit van de voorbeeldrepository in CodeCommit.
- Navigeer op de AWS CloudFormation-console naar de Uitgangen tabblad van de ingezette stapel.
- Kopieer de waarde van RepoCloneURL. U hebt dit nodig om toegang te krijgen tot de voorbeeldcoderepository.
Test de oplossing
U kunt de workflow van begin tot eind testen door de rol van ontwikkelaar op u te nemen en enkele codewijzigingen door te voeren. In CodeCommit is een set voorbeeldcodes voor u klaargemaakt. Naar toegang krijgen tot de CodeCommit-repository, voer de volgende opdrachten in op uw IDE:
U vindt de volgende mapstructuur voor een AWS Cloud-ontwikkelingskit (AWS CDK) applicatie die een Lambda-functie creëert om een bellensortering uit te voeren op een reeks gehele getallen. De Lambda-functie is toegankelijk via een publiekelijk beschikbare URL.
U brengt drie wijzigingen aan in de applicatiecodes.
- Om de functie te verbeteren die zowel het snelle sorteer- als het bellensorteeralgoritme ondersteunt, neemt u een parameter in waarmee u het algoritme kunt selecteren dat u wilt gebruiken, en retourneert u zowel het gebruikte algoritme als de gesorteerde array in de uitvoer, vervangt u de volledige inhoud van
lambda/index.py
met de volgende code:
- Om de time-outinstelling van de functie terug te brengen van 10 minuten naar 5 seconden (omdat we niet verwachten dat de functie langer dan een paar seconden zal werken), update je regel 47 in
my_sample_project/my_sample_project_stack.py
als volgt:
- Om de aanroep van de functie met IAM te beperken voor extra veiligheid, update je regel 56 in
my_sample_project/my_sample_project_stack.py
als volgt:
- Push de codewijzigingen door de volgende opdrachten in te voeren:
Hiermee wordt de CodePipeline-implementatieworkflow gestart vanaf stap 1 tot en met 9, zoals beschreven in het oplossingsoverzicht. Bij het aanroepen van het Amazon Bedrock-model hebben we de volgende prompt gegeven:
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- PlatoData.Network Verticale generatieve AI. Versterk jezelf. Toegang hier.
- PlatoAiStream. Web3-intelligentie. Kennis versterkt. Toegang hier.
- PlatoESG. carbon, CleanTech, Energie, Milieu, Zonne, Afvalbeheer. Toegang hier.
- Plato Gezondheid. Intelligentie op het gebied van biotech en klinische proeven. Toegang hier.
- Bron: https://aws.amazon.com/blogs/machine-learning/enhance-code-review-and-approval-efficiency-with-generative-ai-using-amazon-bedrock/