În lumea dezvoltării software, revizuirea și aprobarea codului sunt procese importante pentru asigurarea calității, securității și funcționalității software-ului dezvoltat. Cu toate acestea, managerii însărcinați cu supravegherea acestor procese critice se confruntă adesea cu numeroase provocări, cum ar fi următoarele:
- Lipsa expertizei tehnice – Este posibil ca managerii să nu aibă o înțelegere tehnică aprofundată a limbajului de programare utilizat sau să nu fi fost implicați în ingineria software pentru o perioadă lungă de timp. Acest lucru are ca rezultat o lipsă de cunoștințe care le poate îngreuna să evalueze cu exactitate impactul și soliditatea modificărilor propuse de cod.
- Constrângeri de timp – Revizuirea și aprobarea codului poate fi un proces consumator de timp, mai ales în proiecte mai mari sau mai complexe. Managerii trebuie să echilibreze între minuțiozitatea revizuirii și presiunea de a respecta termenele proiectului.
- Volumul cererilor de modificare – Gestionarea unui volum mare de solicitări de schimbare este o provocare comună pentru manageri, mai ales dacă ei supraveghează mai multe echipe și proiecte. Similar provocării constrângerii de timp, managerii trebuie să fie capabili să gestioneze aceste solicitări eficient, astfel încât să nu împiedice progresul proiectului.
- Efort manual – Revizuirea codului necesită efort manual din partea managerilor, iar lipsa automatizării poate face dificilă scalarea procesului.
- Documentație – Documentarea adecvată a procesului de revizuire și aprobare a codului este importantă pentru transparență și responsabilitate.
Odată cu creșterea inteligența artificială generativă (AI), managerii pot acum valorifica această tehnologie transformatoare și o pot integra cu suita AWS de instrumente și servicii de implementare pentru a eficientiza procesul de revizuire și aprobare într-un mod care nu era posibil anterior. În această postare, explorăm o soluție care oferă un flux de lucru integrat de implementare end-to-end care încorporează analiza și rezumarea automată a schimbărilor împreună cu funcționalitatea fluxului de lucru de aprobare. Folosim Amazon Bedrock, un serviciu complet gestionat care pune la dispoziție modele de bază (FM) de la startup-uri AI de vârf și Amazon prin intermediul unui API, astfel încât să puteți alege dintr-o gamă largă de FM pentru a găsi modelul care este cel mai potrivit pentru cazul dvs. de utilizare. Cu experiența Amazon Bedrock fără server, puteți începe rapid, puteți personaliza în mod privat FM-urile cu propriile date și le puteți integra și implementa în aplicațiile dvs. folosind instrumente AWS fără a fi nevoie să gestionați nicio infrastructură.
Prezentare generală a soluțiilor
Următoarea diagramă ilustrează arhitectura soluției.
Fluxul de lucru constă din următorii pași:
- Un dezvoltator împinge noi modificări de cod în depozitul de coduri (cum ar fi AWS CodeCommit), care declanșează automat începutul unui AWS CodePipeline implementare.
- Codul aplicației trece printr-un proces de construire a codului, efectuează scanări de vulnerabilități și efectuează teste unitare folosind instrumentele preferate.
- AWS CodeBuild preia depozitul și execută o comandă git show pentru a extrage diferențele de cod dintre versiunea de comitere curentă și versiunea de comitere anterioară. Aceasta produce o ieșire linie cu linie care indică modificările de cod făcute în această ediție.
- CodeBuild salvează rezultatul într-un Amazon DynamoDB tabel cu informații de referință suplimentare:
- ID de rulare CodePipeline
- Regiunea AWS
- Numele CodePipeline
- Numărul de compilare CodeBuild
- Data si ora
- Stare
- Fluxuri Amazon DynamoDB captează modificările datelor făcut la masă.
- An AWS Lambdas funcția este declanșată de fluxul DynamoDB pentru a procesa înregistrarea capturată.
- Funcția invocă modelul Anthropic Claude v2 pe Amazon Bedrock prin Amazon Bedrock InvokeModel API apel. Diferențele de cod, împreună cu un prompt, sunt furnizate ca intrare în model pentru analiză, iar un rezumat al modificărilor codului este returnat ca rezultat.
- Ieșirea din model este salvată înapoi în același tabel DynamoDB.
- Managerul este anunțat prin Serviciul de e-mail simplu Amazon (Amazon SES) a rezumatului modificărilor codului și că aprobarea acestora este necesară pentru implementare.
- Managerul examinează e-mailul și oferă decizia lor (fie de aprobare, fie de respingere) împreună cu orice comentarii de revizuire prin consola CodePipeline.
- Decizia de aprobare și comentariile de revizuire sunt captate de Amazon EventBridge, care declanșează o funcție Lambda pentru a le salva înapoi în DynamoDB.
- Dacă este aprobat, pipeline implementează codul aplicației folosind instrumentele preferate. Dacă este respins, fluxul de lucru se termină și implementarea nu continuă.
În secțiunile următoare, implementați soluția și verificați fluxul de lucru de la capăt la capăt.
Cerințe preliminare
Pentru a urma instrucțiunile din această soluție, aveți nevoie de următoarele cerințe preliminare:
Implementați soluția
Pentru a implementa soluția, parcurgeți următorii pași:
- Alege Lansați Stack pentru a lansa o stivă CloudFormation în
us-east-1
: - Pentru Adresa de e-mail, introduceți o adresă de e-mail la care aveți acces. Rezumatul modificărilor codului va fi trimis la această adresă de e-mail.
- Pentru modelId, lăsați ca implicit anthropic.claude-v2, care este modelul Anthropic Claude v2.
Implementarea șablonului va dura aproximativ 4 minute.
- Când primiți un e-mail de la Amazon SES pentru a vă verifica adresa de e-mail, alegeți linkul furnizat pentru a vă autoriza adresa de e-mail.
- Veți primi un e-mail intitulat „Rezumatul modificărilor” pentru confirmarea inițială a depozitului de exemplu în CodeCommit.
- Pe consola AWS CloudFormation, navigați la ieşiri fila stivei implementate.
- Copiați valoarea RepoCloneURL. Aveți nevoie de acest lucru pentru a accesa depozitul de exemplu de cod.
Testați soluția
Puteți testa fluxul de lucru cap la cap, asumând rolul unui dezvoltator și împingând unele modificări de cod. Un set de exemple de coduri a fost pregătit pentru dvs. în CodeCommit. La accesați depozitul CodeCommit, introduceți următoarele comenzi pe IDE:
Veți găsi următoarea structură de directoare pentru un Kit AWS Cloud Development (AWS CDK) aplicație care creează o funcție Lambda pentru a efectua o sortare cu bule pe un șir de numere întregi. Funcția Lambda este accesibilă printr-o adresă URL disponibilă public.
Faceți trei modificări la codurile aplicației.
- Pentru a îmbunătăți funcția pentru a accepta atât algoritmul de sortare rapidă, cât și algoritmul de sortare cu bule, luați un parametru pentru a permite selectarea algoritmului de utilizat și returnați atât algoritmul utilizat, cât și matricea sortată în rezultat, înlocuiți întregul conținut al
lambda/index.py
cu următorul cod:
- Pentru a reduce setarea de timeout a funcției de la 10 minute la 5 secunde (pentru că nu ne așteptăm ca funcția să ruleze mai mult de câteva secunde), actualizați linia 47 în
my_sample_project/my_sample_project_stack.py
după cum urmează:
- Pentru a restricționa invocarea funcției folosind IAM pentru securitate suplimentară, actualizați linia 56 in
my_sample_project/my_sample_project_stack.py
după cum urmează:
- Apăsați modificările codului introducând următoarele comenzi:
Aceasta pornește fluxul de lucru de implementare CodePipeline de la pașii 1–9, așa cum este subliniat în prezentarea generală a soluției. La invocarea modelului Amazon Bedrock, am furnizat următorul prompt:
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- PlatoData.Network Vertical Generative Ai. Împuterniciți-vă. Accesați Aici.
- PlatoAiStream. Web3 Intelligence. Cunoștințe amplificate. Accesați Aici.
- PlatoESG. carbon, CleanTech, Energie, Mediu inconjurator, Solar, Managementul deșeurilor. Accesați Aici.
- PlatoHealth. Biotehnologie și Inteligență pentru studii clinice. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/machine-learning/enhance-code-review-and-approval-efficiency-with-generative-ai-using-amazon-bedrock/
- :are
- :este
- :nu
- $UP
- 1
- 10
- 100
- 11
- 17
- 200
- 27
- 58
- 7
- 8
- 9
- a
- Capabil
- Despre Noi
- accelera
- acces
- accesibil
- responsabilitate
- precis
- Obține
- de fapt
- adăugat
- plus
- Suplimentar
- adresa
- Adaugă
- Avantaj
- AI
- Algoritmul
- algoritmi
- permite
- de-a lungul
- Amazon
- Amazon Web Services
- an
- analize
- analiză
- analiza
- și
- Antropică
- Orice
- api
- aplicaţia
- aplicație
- aplicatii
- aprobare
- aproba
- aprobat
- arhitectură
- SUNT
- în jurul
- Mulțime
- artificial
- AS
- evalua
- ajuta
- Asistent
- atribute
- augmented
- autentificata
- Autentificare
- autoriza
- Automata
- în mod automat
- Automatizare
- disponibil
- AWS
- Formarea AWS Cloud
- înapoi
- Sold
- bazat
- BE
- deoarece
- fost
- fiind
- CEL MAI BUN
- între
- corp
- atât
- aduce
- balon
- construi
- Clădire
- by
- apel
- CAN
- Poate obține
- capturat
- caz
- CD
- contesta
- provocări
- Schimbare
- si-a schimbat hainele;
- Modificări
- Alege
- curat
- Cloud
- cod
- Revizuire a Codului
- Coduri
- comentarii
- comite
- Comun
- Completă
- complex
- concis
- Conduce
- conduite
- Consecințele
- Considerații
- constă
- Consoleze
- conţinut
- context
- a creat
- creează
- critic
- Curent
- personaliza
- de date
- fiică
- abuzive
- decizie
- Mod implicit
- definit
- implementa
- dislocate
- Implementarea
- desfășurarea
- implementează
- Amenajări
- dorit
- detalierea
- Determina
- dezvoltat
- Dezvoltator
- Dezvoltare
- diagramă
- diferenţele
- diferit
- dificil
- director
- documentaţie
- face
- Dont
- durată
- uşura
- eficiență
- eficient
- efort
- oricare
- altfel
- capăt
- un capăt la altul
- se încheie
- Inginerie
- spori
- asigurare
- Intrați
- intrarea
- Întreg
- Mediu inconjurator
- mai ales
- eveniment
- exemplu
- Cu excepția
- aștepta
- experienţă
- experimente
- explora
- Explorează
- extins
- extrage
- Față
- cu care se confruntă
- familie
- puțini
- financiar
- Institutii financiare
- Găsi
- Flexibilitate
- urma
- următor
- urmează
- Pentru
- Fundație
- Gratuit
- din
- complet
- funcţie
- funcțional
- funcționalitate
- mai mult
- decalaj
- generată
- generativ
- AI generativă
- obține
- obtinerea
- merge
- Go
- Merge
- mai mare
- îndrumare
- manipula
- valorifica
- Avea
- având în
- he
- Înalt
- extrem de
- lui
- deţine
- Cum
- Totuși
- HTML
- http
- HTTPS
- uman
- i
- ID
- if
- ilustrează
- Impactul
- implementarea
- Punere în aplicare a
- implicații
- important
- îmbunătăţi
- in
- în profunzime
- încorporează
- index
- indică
- informații
- Infrastructură
- inițială
- intrare
- instituții
- instrucțiuni
- integra
- integrate
- integreaza
- în
- Prezintă
- invocă
- implicat
- IT
- JSON
- Cunoaște
- cunoştinţe
- lipsă
- limbă
- mai mare
- lansa
- conducere
- Părăsi
- mai puțin
- lăsa
- Linie
- LINK
- Listă
- mai lung
- făcut
- Principal
- major
- face
- FACE
- administra
- gestionate
- manager
- Manageri
- manieră
- manual
- Mai..
- a însemnat
- Întâlni
- Metadata
- ar putea
- minute
- model
- Modele
- modificările aduse
- mai mult
- cele mai multe
- multiplu
- Navigaţi
- Nevoie
- Nou
- următor
- Nu.
- Nici unul
- acum
- numere
- numeroși
- of
- promoții
- de multe ori
- on
- afară
- or
- Altele
- in caz contrar
- afară
- a subliniat
- producție
- exterior
- global
- supravegherea
- Prezentare generală
- propriu
- parametru
- în așteptarea
- Efectua
- efectuează
- perioadă
- conducte
- Pivot
- Plato
- Informații despre date Platon
- PlatoData
- posibil
- Post
- potenţial
- putere
- preferat
- pregătit
- premise
- presiune
- precedent
- în prealabil
- continua
- proces
- procese
- produce
- produce
- Profil
- Programare
- Progres
- proiect
- Proiecte
- solicitări
- adecvat
- propus
- furniza
- prevăzut
- furnizează
- public
- scop
- împinge
- împingerea
- calitate
- întrebare
- Rapid
- repede
- gamă
- a primi
- record
- reduce
- Redus
- reduce
- referință
- Respins..
- eliberaţi
- înlocui
- depozit
- cereri de
- necesar
- Cerinţe
- Necesită
- Resurse
- răspuns
- restrânge
- REZULTATE
- reveni
- Returnează
- revizuiască
- Recenzii
- Ridica
- Rol
- Alerga
- s
- acelaşi
- probă
- Economisiți
- salvate
- scalabil
- Scară
- scanări
- secunde
- secțiuni
- sigur
- securitate
- selecţie
- senior
- trimis
- serverless
- serviciu
- Servicii
- set
- instalare
- să
- Arăta
- asemănător
- simplu
- Singapore
- So
- Software
- de dezvoltare de software
- Inginerie software
- soluţie
- soluţii
- unele
- Sursă
- specificată
- viteză
- petrece
- stivui
- Începe
- început
- începe
- Startup-urile
- Pas
- paşi
- curent
- simplifica
- Şir
- structura
- astfel de
- suită
- potrivit
- REZUMAT
- a sustine
- tabel
- Lua
- luare
- echipe
- Tehnic
- Tehnologia
- șablon
- test
- teste
- decât
- acea
- lumea
- lor
- Lor
- Acolo.
- Acestea
- ei
- acest
- aceste
- trei
- Prin
- înăsprește
- timp
- consumă timp
- cronologii
- cu denumirea
- la
- împreună
- instrument
- Unelte
- transformativă
- Transparență
- a declanșat
- încerca
- Două
- tipic
- înţelegere
- unitate
- Actualizează
- actualizat
- URL-ul
- us
- utilizare
- carcasa de utilizare
- utilizat
- utilizatorii
- utilizări
- folosind
- v1
- valoare
- diverse
- verifica
- versiune
- de
- volum
- vs
- vulnerabilitate
- a fost
- we
- web
- servicii web
- BINE
- au fost
- cand
- care
- larg
- Gamă largă
- voi
- cu
- în
- fără
- Apartamente
- flux de lucru
- de lucru
- fabrică
- lume
- X
- yaml
- Tu
- Ta
- zephyrnet