Yazılım geliştirme dünyasında kod incelemesi ve onayı, geliştirilmekte olan yazılımın kalitesini, güvenliğini ve işlevselliğini sağlamak için önemli süreçlerdir. Ancak bu kritik süreçleri denetlemekle görevli yöneticiler çoğu zaman aşağıdakiler gibi çok sayıda zorlukla karşı karşıya kalır:
- Teknik uzmanlık eksikliği – Yöneticiler, kullanılan programlama dili hakkında derinlemesine bir teknik anlayışa sahip olmayabilir veya uzun süredir yazılım mühendisliğiyle ilgilenmiyor olabilir. Bu, önerilen kod değişikliklerinin etkisini ve sağlamlığını doğru bir şekilde değerlendirmelerini zorlaştırabilecek bir bilgi boşluğuna neden olur.
- Zaman kısıtlayıcıları – Kodun gözden geçirilmesi ve onaylanması, özellikle daha büyük veya daha karmaşık projelerde zaman alıcı bir süreç olabilir. Yöneticilerin incelemenin kapsamlılığı ile proje zaman çizelgelerine uyma baskısı arasında denge kurması gerekir.
- Değişiklik taleplerinin hacmi – Yüksek hacimli değişiklik talepleri ile uğraşmak, özellikle birden fazla ekip ve projeyi yönetiyorlarsa, yöneticiler için yaygın bir zorluktur. Zaman kısıtlaması zorluğuna benzer şekilde, proje ilerlemesini engellememek için yöneticilerin bu talepleri verimli bir şekilde yerine getirebilmeleri gerekir.
- Manuel efor – Kod incelemesi, yöneticilerin manuel çabasını gerektirir ve otomasyon eksikliği, süreci ölçeklendirmeyi zorlaştırabilir.
- belgeleme – Kural inceleme ve onay sürecinin uygun şekilde belgelenmesi şeffaflık ve hesap verebilirlik açısından önemlidir.
Yükselişi ile üretken yapay zeka (AI) sayesinde yöneticiler artık bu dönüştürücü teknolojiden yararlanabilir ve inceleme ve onay sürecini daha önce mümkün olmayan bir şekilde kolaylaştırmak için bunu AWS dağıtım araçları ve hizmetleri paketiyle entegre edebilir. Bu yazıda, otomatik değişiklik analizi ve özetlemeyi onay iş akışı işlevselliğiyle birleştiren entegre bir uçtan uca dağıtım iş akışı sunan bir çözümü araştırıyoruz. Kullanırız Amazon Ana KayasıÖnde gelen yapay zeka girişimlerinin ve Amazon'un temel modellerini (FM'ler) bir API aracılığıyla kullanıma sunan, tam olarak yönetilen bir hizmettir; böylece kullanım durumunuza en uygun modeli bulmak için geniş bir FM yelpazesi arasından seçim yapabilirsiniz. Amazon Bedrock sunucusuz deneyimiyle hızlı bir şekilde başlayabilir, FM'leri kendi verilerinizle özel olarak özelleştirebilir ve herhangi bir altyapıyı yönetmeye gerek kalmadan AWS araçlarını kullanarak bunları uygulamalarınıza entegre edip dağıtabilirsiniz.
Çözüme genel bakış
Aşağıdaki şemada çözüm mimarisi gösterilmektedir.
İş akışı aşağıdaki adımlardan oluşur:
- Bir geliştirici, yeni kod değişikliklerini kod deposuna aktarır (örneğin, AWS CodeCommit), otomatik olarak bir başlangıcı tetikler AWS Kod Ardışık Düzeni dağıtım.
- Uygulama kodu bir kod oluşturma sürecinden geçer, güvenlik açığı taramaları gerçekleştirir ve tercih ettiğiniz araçları kullanarak birim testleri gerçekleştirir.
- AWS Kod Oluşturma depoyu alır ve mevcut taahhüt sürümü ile önceki taahhüt sürümü arasındaki kod farklarını çıkarmak için bir git show komutunu gerçekleştirir. Bu, bu sürümde yapılan kod değişikliklerini gösteren satır satır bir çıktı üretir.
- CodeBuild çıktıyı bir Amazon DinamoDB ek referans bilgileri içeren tablo:
- CodePipeline çalıştırma kimliği
- AWS Bölgesi
- Kod Pipeline adı
- CodeBuild yapı numarası
- Tarih ve saat
- Durum
- Amazon DynamoDB Akışları veri değişikliklerini yakalar masaya yapıldı.
- An AWS Lambda işlevi, yakalanan kaydı işlemek için DynamoDB akışı tarafından tetiklenir.
- İşlev, Amazon Bedrock'ta Anthropic Claude v2 modelini Amazon Bedrock aracılığıyla çağırır InvokeModel API'si Arama. Kod farklılıkları, bir bilgi istemiyle birlikte analiz için modele girdi olarak sağlanır ve kod değişikliklerinin özeti çıktı olarak döndürülür.
- Modelin çıktısı aynı DynamoDB tablosuna kaydedilir.
- Yönetici aracılığıyla bilgilendirilir Amazon Basit E-posta Hizmeti (Amazon SES) kod değişikliklerinin özetini ve dağıtım için onaylarının gerekli olduğunu bildirdi.
- Yönetici e-postayı inceler ve kararını (onaylama veya reddetme) CodePipeline konsolu aracılığıyla inceleme yorumlarıyla birlikte sunar.
- Onay kararı ve inceleme yorumları şu şekilde yakalanır: Amazon EventBridge, bunları DynamoDB'ye geri kaydetmek için bir Lambda işlevini tetikler.
- Onaylanırsa işlem hattı tercih ettiğiniz araçları kullanarak uygulama kodunu dağıtır. Reddedilirse iş akışı sona erer ve dağıtım daha fazla ilerlemez.
Aşağıdaki bölümlerde çözümü dağıtacak ve uçtan uca iş akışını doğrulayacaksınız.
Önkoşullar
Bu çözümdeki talimatları takip etmek için aşağıdaki önkoşullara ihtiyacınız vardır:
Çözümü dağıtın
Çözümü dağıtmak için aşağıdaki adımları tamamlayın:
- Klinik Yığını Başlat CloudFormation yığınını başlatmak için
us-east-1
: - İçin E, erişiminiz olan bir e-posta adresi girin. Kod değişikliklerinin özeti bu e-posta adresine gönderilecektir.
- İçin model kimliği, Anthropic Claude v2 modeli olan anthropic.claude-v2'yi varsayılan olarak bırakın.
Şablonun dağıtılması yaklaşık 4 dakika sürecektir.
- Amazon SES'ten e-posta adresinizi doğrulamak için bir e-posta aldığınızda e-posta adresinizi yetkilendirmek için sağlanan bağlantıyı seçin.
- Örnek havuzun CodeCommit'e ilk kaydedilmesi için "Değişikliklerin Özeti" başlıklı bir e-posta alacaksınız.
- AWS CloudFormation konsolunda şuraya gidin: Çıkışlar dağıtılan yığının sekmesi.
- RepoCloneURL'nin değerini kopyalayın. Örnek kod deposuna erişmek için buna ihtiyacınız vardır.
Çözümü test edin
Geliştirici rolünü üstlenerek ve bazı kod değişikliklerini uygulayarak iş akışını uçtan uca test edebilirsiniz. CodeCommit'te sizler için bir takım örnek kodlar hazırlandı. İle CodeCommit deposuna erişinIDE'nize aşağıdaki komutları girin:
Bir dizi için aşağıdaki dizin yapısını bulacaksınız. AWS Bulut Geliştirme Kiti (AWS CDK) bir tam sayı dizisi üzerinde kabarcık sıralaması gerçekleştirmek için Lambda işlevi oluşturan uygulama. Lambda işlevine herkese açık bir URL aracılığıyla erişilebilir.
Uygulama kodlarında üç değişiklik yapıyorsunuz.
- İşlevi hem hızlı sıralama hem de kabarcık sıralama algoritmasını destekleyecek şekilde geliştirmek için, kullanılacak algoritmanın seçimine izin verecek bir parametre alın ve hem kullanılan algoritmayı hem de sıralanan diziyi çıktıda döndürün, içeriğin tamamını değiştirin.
lambda/index.py
aşağıdaki kodla:
- İşlevin zaman aşımı ayarını 10 dakikadan 5 saniyeye düşürmek için (çünkü işlevin birkaç saniyeden uzun çalışmasını beklemiyoruz), satır 47'yi güncelleyin.
my_sample_project/my_sample_project_stack.py
aşağıdaki gibidir:
- Daha fazla güvenlik amacıyla IAM kullanarak işlevin çağrılmasını kısıtlamak için, içindeki 56. satırı güncelleyin.
my_sample_project/my_sample_project_stack.py
aşağıdaki gibidir:
- Aşağıdaki komutları girerek kod değişikliklerini gerçekleştirin:
Bu, çözüme genel bakış bölümünde özetlendiği gibi CodePipeline dağıtım iş akışını 1-9. Adımlardan başlatır. Amazon Bedrock modelini çağırırken aşağıdaki istemi sağladık:
- SEO Destekli İçerik ve Halkla İlişkiler Dağıtımı. Bugün Gücünüzü Artırın.
- PlatoData.Network Dikey Üretken Yapay Zeka. Kendine güç ver. Buradan Erişin.
- PlatoAiStream. Web3 Zekası. Bilgi Genişletildi. Buradan Erişin.
- PlatoESG. karbon, temiz teknoloji, Enerji, Çevre, Güneş, Atık Yönetimi. Buradan Erişin.
- PlatoSağlık. Biyoteknoloji ve Klinik Araştırmalar Zekası. Buradan Erişin.
- Kaynak: https://aws.amazon.com/blogs/machine-learning/enhance-code-review-and-approval-efficiency-with-generative-ai-using-amazon-bedrock/