AWS Türkçe Blog

Birleşik Yazılım Geliştirme Hizmeti Amazon CodeCatalyst Duyurusu (Ön izleme)

Orijinal makale: Link (Steve Roberts, Senior Developer Advocate)

Bugün, Amazon CodeCatalyst‘in ön izleme sürümünü duyurduk. Birleşik bir yazılım geliştirme ve dağıtım hizmeti olan Amazon CodeCatalyst, yazılım geliştirme ekiplerinin AWS’te uygulamaları hızlı ve kolay bir şekilde planlamasına, geliştirmesine, üzerinde işbirliği yapmasına, oluşturmasına ve sunmasına olanak tanıyarak geliştirme yaşam döngüsü boyunca sorunları azaltır.

Bir geliştirici olarak benim zamanımda en büyük heyecan (kullanıcılara yazılım göndermenin yanı sıra) yeni bir projenin başlangıcı veya bir projeye katılmaya davet edilmekti. Her ikisi de harika bir şey inşa etme, yeni kodlar çıkarma ve bir fikrin hayata geçtiğini görme beklentisiyle geldi. Ancak, başlamak bazen yavaş bir süreçti. Ekibim veya benim yerel geliştirme ortamlarımızı veya tamamen yeni makinelerimizi araçlar, kitaplıklar ve programlama çerçeveleriyle güncellememiz gerekecekti. Kaynak kodu havuzları oluşturmamız ve Jira, Confluence veya Jenkins gibi diğer paylaşılan araçları kurmamız, yapı hatlarını ve diğer otomasyon iş akışlarını yapılandırmamız, test ortamları oluşturmamız vb. gerekiyordu. Geliştirme ve oluşturma ortamlarının günlük bakımı, değerli ekip döngülerini ve enerjiyi tüketti. Ekip arasındaki işbirliği de çaba gerektiriyordu çünkü bilgi paylaşmaya ve tek bir gerçek kaynağına sahip olmaya yönelik araçlar mevcut değildi. Projeler arasında bağlam geçişi ve bu projelerdeki çelişkili bağımlılıklarla başa çıkma, örneğin, X projesi için Python 3.6 ve Y projesi için Python 2.7 (özellikle üzerinde çalışacak tek bir makinemiz olduğunda) yükü daha da artırdı.

Daha iyiye gitmiş gibi görünmüyor! Bu günlerde, geliştiricilerle deneyimleri hakkında konuşurken, sık sık modern geliştirmenin daha da karmaşık hale geldiğini hissettiklerini ifade ettiklerini duyuyorum. Bunun nedeni, uygulama deneyimini sunmak için hepsinin birlikte çalışması gereken daha geniş bir modern çerçeveler ve kitaplıklar koleksiyonu, araçlar, bulut hizmetleri, sürekli entegrasyon ve dağıtım hatları ve diğer birçok seçeneği seçmek ve yapılandırmak zorunluluğudur. Bir zamanlar tek bir geliştirici tarafından tek bir makinede yönetilebilen şey, artık genişleyen, dinamik, karmaşık bir kararlar ve takaslar ağı haline geldi ve tüm bunları dağınık ekipler arasında koordine etme ihtiyacıyla daha da zorlaştı.

Amazon CodeCatalyst
Amazon CodeCatalyst’in arkasındaki ekiple ilham kaynakları ve hedefleri hakkında konuşarak biraz zaman geçirdim. AWS’teki hem yeni hem de deneyimli geliştiricilerden ve hizmet ekiplerinden geri bildirim alarak, bulut için yazılım oluştururken ekiplerin ve bireysel geliştiricilerin tipik olarak yaşadığı zorlukları incelediler. Bu geri bildirimleri toplayıp gözden geçirdikten sonra, yazılım teslimini gereksiz yere yavaşlatan pürüzleri gideren birleşik bir araç oluşturmaya başladılar ve ekiplerin birlikte çalışmasını ve işbirliği yapmasını kolaylaştıracak özellikler eklediler. Bu zorlukların üstesinden gelmek için Amazon CodeCatalyst’teki özellikler şunları içerir:

  • Projenin kaynaklarını oluşturan taslaklar (blueprints)—yalnızca yeni projeler için yapı iskelesi değil, aynı zamanda yazılım teslimatını ve dağıtımını desteklemek için gereken kaynakları da.
  • Siz veya ekipleriniz için tutarlı geliştirme ortamlarını çoğaltmayı kolaylaştırmak için isteğe bağlı bulut tabanlı Geliştirme Ortamları.
  • Sorun yönetimi, teslimler arasında değişikliklerin izlenmesini sağlamak, çekme istekleri ve dağıtımlar.
  • Esnek, yönetilen altyapı kullanan otomatik derleme ve yayınlama (CI/CD) hatları.
  • Teslimler, çekme istekleri ve test raporlaması gibi proje etkinliklerinin bir akışını ortaya çıkarmak için panolar.
  • Yalnızca bir e-posta ile başkalarını bir proje üzerinde işbirliği yapmaya davet etme yeteneği.
  • Kullanıcılar, sorunlar, kod ve diğer proje kaynaklarında aradığınızı bulmanızı kolaylaştıran birleşik arama.

Amazon CodeCatalyst’te bu gönderide ele alacağım çok şey var, bu yüzden taslaklar, Geliştirici Ortamları ve proje işbirliği gibi bazı belirli özellikleri kısaca ele alacağım. Gelecek diğer gönderiler ek özellikleri kapsayacaktır.

Proje Taslakları (Blueprints)
Taslakları ilk duyduğumda, kulağa bir proje için bazı başlangıç ​​kodlarını oluşturan bir özellik gibi geldi. Ancak, bundan çok daha fazlası! Parametreli uygulama şemaları, yalnızca bir uygulama için ilk başlangıç ​​kodunu değil, uygulama geliştirme yaşam döngüsünü ve ekip işbirliğini dakikalar içinde desteklemek için paylaşılan proje kaynaklarını kurmanıza olanak tanır. Bir taslağın bir proje için oluşturduğu kaynaklar, varsayılan olarak AWS’in en iyi uygulamalarını izleyen popüler uygulama kalıpları için ilk örnek kod ve AWS hizmet yapılandırmasıyla tamamlanmış bir kaynak kodu deposunu içerir. Tercih ederseniz bunun yerine GitHub gibi harici bir Git deposu kullanılabilir. Taslak ayrıca bir sorun izleyici ekleyebilir, ancak Jira gibi harici izleyiciler de kullanılabilir. Ardından, taslak, diğer tümleşik araçların yanı sıra kısaca geleceğim CI/CD için bir oluşturma ve yayınlama işlem hattını ekler.

Uygulamanızı barındırmak için CI/CD hattı ve AWS kaynakları da dahil olmak üzere taslaklar kullanılarak ayarlanan proje kaynakları ve entegre araçlar, “dağıt” düğmesine basabilmenizi ve örnek kodu birkaç dakika içinde çalıştırabilmenizi sağlar. Hemen dahil olun ve kendi iş mantığınız üzerinde çalışmaya başlayın.

Project blueprints when starting a new project

Piyasaya sürüldüğünde, müşteriler diller için TypeScript, Python, Java, .NET, Javascript ve React, Angular ve Vue çerçeveleri ile planlar arasından seçim yapabilir ve ileride daha fazlası da gelecek. Ve bir taslakla başlamanıza gerek yok. Linux ve Windows işletim sistemleriyle çalışan her şey üzerinde çalışan iş akışlarıyla projeler oluşturabilirsiniz.

Bulut Tabanlı Geliştirici Ortamları
Geliştirme ekipleri genellikle, bir ekip üyesinin diğer herkesten veya test ortamlarından biraz farklı bir uygulama zinciri veya kitaplık sürümüne sahip olduğu bir “ortam kayması” sorunuyla karşılaşabilir. Bu, bir süre fark edilmeyebilecek ince hataları ortaya çıkarabilir. Taslakların oluşturduğu Geliştirme Ortamı belirtimleri ve diğer paylaşılan kaynaklar, gereksiz farklılıkların ortadan kaldırılmasına yardımcı olur ve geliştiriciler arasında tutarlı, tekrarlanabilir bir deneyim sağlamak için ekipteki herkes aynı kurulumu alır.

Amazon CodeCatalyst, şu anda 2, 4, 8 veya 16 vCPU’lu dört yeniden boyutlandırılabilir bulut sunucusu boyutu seçeneğini destekleyen, isteğe bağlı, bulut tabanlı bir Geliştirici Ortamının yapılandırmasını tanımlamak için bir geliştirici dosyası (devfile) kullanır. Geliştirici dosyası, belirli bir proje için kodlama, test ve hata ayıklama için gereken tüm kaynakları tanımlayıp yapılandırarak, geliştirme ekibi üyelerinin yerel geliştirme ortamlarını oluşturmak ve sürdürmek için harcaması gereken zamanı en aza indirir. Seçilen taslak tarafından kaynak kod deposuna eklenen devfiles da gerekirse değiştirilebilir. Geliştirme Ortamları ile, projeler arasında bağlam geçişi daha az ek yüke neden olur; tek bir tıklamayla, kolayca farklı bir ortama geçebilir ve çalışmaya başlayabilirsiniz. Bu, yeniden yapılandırmaya gerek kalmadan birden çok kod tabanında aynı anda kolayca çalışabileceğiniz anlamına gelir. İsteğe bağlı olarak Geliştirici Ortamları ayrıca gerektiğinde duraklatılabilir, yeniden başlatılabilir veya silinebilir.

Aşağıda, bir Geliştirme Ortamını önyükleyen bir devfile örneği bulunmaktadır.

schemaVersion: 2.0.0
metadata:
  name: aws-universal
  version: 1.0.1
  displayName: AWS Universal
  description: Stack with AWS Universal Tooling
  tags:
    - aws
    - a12
  projectType: aws
commands:
  - id: npm_install
    exec:
      component: aws-runtime
      commandLine: "npm install"
      workingDir: /projects/spa-app
events:
  postStart:
    - npm_install
components:
  - name: aws-runtime
    container:
      image: public.ecr.aws/aws-mde/universal-image:latest
      mountSources: true
      volumeMounts:
        - name: docker-store
          path: /var/lib/docker
  - name: docker-store
    volume:
      size: 16Gi
YAML

Amazon CodeCatalyst tarafından sağlanan bulut tabanlı Geliştirici Ortamlarında çalışan geliştiriciler, IDE’leri olarak AWS Cloud9‘ı kullanabilir. Ancak JetBrains IntelliJ IDEA Ultimate, PyCharm Pro, GoLand ve Visual Studio Code gibi yerel makinelerindeki diğer IDE’lerden Amazon CodeCatalyst ile aynı kolaylıkla çalışabilirler. Geliştiriciler ayrıca Visual Studio Code gibi kendi IDE’lerinden veya JetBrains Gateway uygulamasını kullanarak JetBrains için Geliştirme Ortamları oluşturabilirler. Aşağıda, JetBrains IntelliJ kullanılıyor.

Editing an application source file in JetBrains IntelliJ

Derleme ve Yayınlama İşlem Hatları
Taslak tarafından oluşturulan derleme ve yayınlama işlem hattı, esnek, yönetilen altyapı üzerinde çalışır. İşlem hatları, çeşitli makine boyutları da dahil olmak üzere isteğe bağlı bilgi işlem veya önceden sağlanan yapıları kullanabilir ve kendi kapsayıcı ortamlarınızı getirebilirsiniz. Yerleşik veya iş ortakları tarafından sağlanan derleme eylemlerini (örneğin, bir yazılım oluşturma analizi derleme eylemi sağlayan Mend) dahil edebilirsiniz ve ayrıca tam otomatik işlem hatları oluşturmak için GitHub Eylemlerini dahil edebilirsiniz. İşlem hatları, görsel bir düzenleyici veya YAML dosyaları kullanılarak yapılandırılabilir.

Derleme ve yayınlama işlem hatları, Amazon Elastic Container Service (Amazon ECS), AWS Lambda ve Amazon Elastic Compute Cloud (Amazon EC2) dahil olmak üzere popüler AWS hizmetlerine dağıtım sağlar. Amazon CodeCatalyst, güvenlik için test ve üretim ortamları kurmayı ve işlem hatlarını kullanarak bir veya daha fazla Bölgeye ve hatta birden çok hesaba dağıtmayı kolay hale getirir.

Running automated workflow

Proje İşbirliği
Birleşik bir yazılım geliştirme hizmeti olarak Amazon CodeCatalyst, yalnızca AWS’te uygulama oluşturmaya ve sunmaya başlamayı kolaylaştırmakla kalmaz, aynı zamanda her düzeydeki geliştiricinin tek bir paylaşılan proje alanı ve gerçek kaynağı aracılığıyla projeler üzerinde işbirliği yapmasına yardımcı olur. Geliştiriciler yalnızca bir e-posta kullanarak işbirliği yapmaya davet edilebilir. Daveti kabul eden geliştirici, tüm proje bağlamını görür ve projenin Geliştirme Ortamlarını kullanarak hemen çalışmaya başlayabilir; yerel makinelerini gerekli araçlar, kitaplıklar veya diğer ön gereksinimlerle güncellemek veya yeniden yapılandırmak için zaman harcamaya gerek yoktur.

Bir Amazon CodeCatalyst alanının mevcut üyeleri veya e-postalarını kullanan yeni üyeler, bir proje üzerinde işbirliği yapmaya davet edilebilir:

Inviting new members to collaborate on a project

Her biri, tıklandığında oturum açmak için bir tarayıcı sekmesi açan Accept Invitation (Daveti Kabul Et) başlıklı bir bağlantı içeren bir davet e-postası alacak. Oturum açtıktan sonra, davet edildikleri Amazon CodeCatalyst alanındaki tüm projeleri görüntüleyebilir ve ayrıca hızlı bir şekilde sahibi oldukları veya davet edildikleri diğer alanlara geçiş yapabilirler.

Projects I'm invited to collaborate on

Oradan, bir proje seçebilir ve son iş akışlarının durumu, açık çekme istekleri ve mevcut Geliştirme Ortamları gibi işlerin nerede olduğuna dair anında bir genel bakış elde edebilirler.

CodeCatalyst project summary

Sorunlar (Issues) panosunda, ekip üyeleri hangi sorunlar üzerinde çalışılması gerektiğini görebilir, birini seçebilir ve başlayabilir.

Viewing issues

Projenin bağlamını anında görebilmek ve isteğe bağlı bulut tabanlı Geliştirici Ortamlarına erişebilmek, daha hızlı bir şekilde katkıda bulunmaya başlamanıza yardımcı olur ve kurulum gecikmelerini ortadan kaldırır.

Bugün Ücretsiz Kullanımda (Free Tier) Amazon CodeCatalyst’i Kullanmaya Başlayın!
Yalnızca uygulama kodunu değil, aynı zamanda uygulamaların geliştirilmesini ve devreye alınmasını destekleyen paylaşılan proje kaynaklarını da yapılandırmak için taslaklar, sorun izleme, e-posta ile davetle işbirliği, otomatik iş akışları ve daha fazlası, bulut geliştirme ve teslim çalışmalarınızı hızlandırmaya yardımcı olmak için bugün Amazon CodeCatalyst’in yeni yayınlanan ön izlemesinde mevcuttur. Amazon CodeCatalyst Kullanım Kılavuzunda daha fazla bilgi edinin. Ve daha önce de belirttiğim gibi, ek blog gönderileri ve diğer destekleyici içerikler, özellik yelpazesini daha ayrıntılı olarak incelemek için ekip tarafından planlanıyor, bu yüzden bunları takip ettiğinizden emin olun!