Takip et

React Uygulamanızı GitHub Actions ve AWS ile Otomatik Olarak Yayınlayın

React Uygulamanızı GitHub Actions ve AWS ile Otomatik Olarak Yayınlayın

Her güncellemeyi manuel olarak yayınlamak, zamanınızın ve enerjinizin büyük bir kısmını tüketiyor mu? React uygulamanızın geliştirme sürecini hızlandırmak ve otomatikleştirmek için GitHub Actions ve AWS’nin gücünden yararlanın. Bu makale, React uygulamanızı GitHub Actions ve AWS’yi kullanarak otomatik olarak nasıl yayınlayacağınızı adım adım açıklayacak ve gelişmiş teknikleri ele alacaktır. Öğrenme yol haritanızda ilerledikçe, daha karmaşık dağıtım senaryolarını kolaylıkla yönetebileceksiniz.

React, GitHub Actions ve AWS: Temel Kavramlar

Bu rehberde, React uygulamasını otomatik olarak yayınlamak için üç temel teknolojiyi birleştireceğiz. Öncelikle, modern web uygulamaları geliştirmek için kullanılan popüler bir JavaScript kütüphanesi olan React’i tanıyalım. Ardından, otomasyon işlerimizi halletmek için kullandığımız GitHub Actions’ı ve son olarak da bulut altyapımızı sağlayan AWS’yi inceleyeceğiz.

React, kullanıcı arayüzleri oluşturmak için bileşen tabanlı bir yaklaşım sunar. Karmaşık uygulamaları daha yönetilebilir parçalara ayırmamızı sağlar ve kod tekrarını azaltır. Bir React uygulaması, genellikle bir dizi bileşenden oluşur ve bu bileşenler, veri ve olaylarla etkileşim halindedir. Bu bileşenler, JavaScript, HTML ve CSS kullanılarak oluşturulur.

GitHub Actions, kodunuzu GitHub’da otomatikleştirmenizi sağlayan bir CI/CD (Sürekli Entegrasyon/Sürekli Dağıtım) platformudur. Kodunuz bir depoya gönderildiğinde, otomatik olarak belirli görevleri yerine getirir. Bu görevler, kodunuzun derlenmesini, test edilmesini ve yayınlanmasını içerebilir. GitHub Actions, iş akışlarını (workflows) tanımlamak için YAML dosyaları kullanır, bu sayede özelleştirilebilir ve tekrar kullanılabilir iş akışları oluşturabilirsiniz.

Amazon Web Services (AWS), bulut tabanlı çeşitli hizmetler sunan bir platformdur. Uygulamanızı barındırmak, veri depolamak ve diğer birçok görevi gerçekleştirmek için AWS hizmetlerini kullanabiliriz. Bu makalede, AWS S3 (Simple Storage Service) ve AWS CloudFront (bir CDN hizmeti) kullanacağız.

GitHub Reposunuzun Hazırlanması: Adım Adım Kılavuz

Öncelikle, GitHub deponuza ihtiyacınız olacak. Eğer zaten bir deponuz yoksa, yeni bir depo oluşturun ve React projenizi bu depoya yükleyin. Projenizin package.json dosyasında, uygulamanızı oluşturmak ve yayınlamak için gerekli komutlar bulunmalıdır. Bu komutlar genellikle npm run build (veya yarn build) gibi komutlardır. Bu komut, uygulamanızı oluşturur ve genellikle build adlı bir klasör içinde yayınlanmaya hazır dosyaları oluşturur. Ayrıca, AWS’ye erişim sağlamak için gerekli olan AWS kimlik bilgileri deponuza eklenmelidir. Bu bilgiler genellikle aws_access_key_id, aws_secret_access_key ve aws_region gibi değişkenler olarak depolanır ve GitHub Secrets kullanarak güvenli bir şekilde saklanır.

Sonraki adımda, GitHub Actions iş akışınızı tanımlayacağınız .github/workflows klasörünü oluşturmanız gerekir. Bu klasörün içine, deploy.yml gibi bir dosya ekleyin ve aşağıdaki YAML kodunu ekleyin:

name: Deploy to AWS S3

on:
  push:
    branches:
      - main # Ana dalınızın adı

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 16 # Kullandığınız Node.js sürümü

      - name: Install dependencies
        run: npm install

      - name: Build the React app
        run: npm run build

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ${{ secrets.AWS_REGION }}

      - name: Deploy to AWS S3
        run: aws s3 sync ./build s3://your-s3-bucket-name --delete

Bu kodda, your-s3-bucket-name yerine kendi S3 kovasının adını yazmanız gerekir. AWS kimlik bilgilerinizi de GitHub Secrets'te AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY ve AWS_REGION olarak tanımlamanız gerekmektedir. Bu, kimlik bilgilerinizin kodunuzda açıkça görünmesini önleyerek güvenliği sağlar. Daha fazla bilgi için Fatih Soysal'ın yazılarını inceleyebilirsiniz.

AWS S3 ve CloudFront Entegrasyonu: Performansı Artırmak

Uygulamanızı S3'e yayınladıktan sonra, performansı artırmak ve küresel erişimi sağlamak için AWS CloudFront'u kullanabilirsiniz. CloudFront, bir içerik dağıtım ağı (CDN) hizmetidir ve içeriklerinizi dünyanın dört bir yanındaki sunuculara dağıtarak kullanıcılarınıza daha hızlı yükleme süreleri sağlar. CloudFront'u S3 kovasına bağlamak için, AWS konsolunda CloudFront dağıtımınızı oluştururken S3 kovasını kaynak olarak seçmeniz yeterlidir.

CloudFront'un kullanımı, özellikle büyük ve statik dosyalar içeren web uygulamaları için önemli bir performans artışı sağlar. Kullanıcılar, kendi bölgelerine en yakın sunuculardan içeriğe erişirler, bu da indirme sürelerini önemli ölçüde azaltır. Ayrıca, CloudFront, güvenlik özellikleri ve özelleştirilebilir davranışlar sunar. Örneğin, özel bir etki alanı kullanabilir ve HTTP'den HTTPS'ye otomatik yönlendirme gibi ek güvenlik katmanları ekleyebilirsiniz.

Örneğin, bir e-ticaret uygulaması için, CloudFront, ürün resimleri ve diğer statik dosyaların hızlı bir şekilde yüklenmesini sağlayarak kullanıcı deneyimini iyileştirir. Bir haber sitesi için, CloudFront, haber içeriklerinin farklı konumlardaki kullanıcılara hızlı bir şekilde ulaşmasını sağlar.

İleri Düzey Teknikler: Özel Durumlar ve Optimizasyon

Daha gelişmiş senaryolar için, aşağıdaki teknikleri düşünebilirsiniz:

Otomatik Geri Dönüşüm (Rollback):

Yayınlama sürecinde hata oluşması durumunda, otomatik geri dönüşüm mekanizması uygulamak oldukça önemlidir. Bu, önceki başarılı sürümü otomatik olarak geri yüklemenizi sağlar. GitHub Actions'ta, bu işlem, bir hata durumunda belirli adımların çalıştırılmasıyla sağlanabilir.

Docker Kullanımı:

Uygulamanızı Docker konteynerinde paketleyerek, tutarlı bir çalışma ortamı sağlayabilir ve farklı ortamlar arasında kolay taşınabilirlik elde edebilirsiniz. Bu, geliştirme, test ve üretim ortamları arasında tutarlılığı sağlar ve olası uyumluluk sorunlarını önler. AWS Elastic Container Service (ECS) veya Elastic Kubernetes Service (EKS) gibi hizmetlerle Docker görüntülerini çalıştırabilirsiniz.

HTTPS ve Güvenlik:

Dikkat! Uygulamanızın güvenliğini sağlamak için, her zaman HTTPS kullanın. AWS Certificate Manager (ACM) ile ücretsiz SSL sertifikaları alabilirsiniz.

Uygulamanızın güvenliğini sağlamak için, AWS WAF (Web Application Firewall) gibi güvenlik hizmetlerini kullanarak güvenlik duvarı oluşturabilirsiniz. Ayrıca, düzenli güvenlik taramaları yaparak olası güvenlik açıklarını tespit etmeniz ve düzeltmeniz önerilir.

Gerçek Dünya Senaryoları ve Vaka Çalışmaları

Bir e-ticaret platformu düşünün: Her yeni ürün eklemesi, fiyat güncellemesi veya tasarım değişikliği, uygulamanın yeniden yayınlanmasını gerektirir. Manuel yayınlama işlemi zaman alıcı ve hata yapmaya müsaittir. GitHub Actions ve AWS ile bu işlem otomatikleştirilir ve her güncelleme hızlı ve güvenilir bir şekilde yayınlanır. Bu, müşteri deneyimini iyileştirir ve işletmenin daha çevik olmasını sağlar.

Bir başka örnek olarak, sürekli güncellenen bir haber sitesini ele alalım. Yeni haberler eklendiğinde, otomatik yayınlama sistemi, içeriği anında kullanıcılarla paylaşır. Bu, rekabet avantajı sağlar ve kullanıcılara en güncel bilgileri hızlı bir şekilde sunar. Manuel yayınlama, haberlerin yayınlanmasında gecikmelere yol açabilir ve bu da önemli haberlerin zamanında yayınlanmasını engelleyebilir.

Öğrenme Yol Haritası

Bu konuyu öğrenmek için aşağıdaki yol haritasını takip edebilirsiniz:

Yeni Başlayan:

React temel bilgilerini öğrenin. GitHub ve AWS hesapları oluşturun. Basit bir React uygulamasını oluşturun ve GitHub'a yükleyin. Bu makaledeki temel adımları takip ederek, uygulamanızı S3'e yayınlayın.

Orta Seviye:

GitHub Actions'ı daha detaylı öğrenin. YAML dosyalarını kullanarak karmaşık iş akışları oluşturun. AWS CloudFront'u entegre ederek performansı artırın. Otomatik geri dönüşüm (rollback) mekanizması oluşturun.

İleri Seviye:

Docker kullanarak uygulamanızı konteynerleştirin ve AWS ECS veya EKS üzerinde çalıştırın. AWS WAF gibi güvenlik hizmetlerini kullanarak uygulamanızı koruyun. Karmaşık dağıtım senaryolarını yönetin ve performans optimizasyonu tekniklerini uygulayın.

Sonuç

GitHub Actions ve AWS'yi kullanarak React uygulamanızı otomatik olarak yayınlamak, geliştirme sürecini önemli ölçüde hızlandırır, tutarlılığı sağlar ve hata olasılığını azaltır. Bu makalede, temel adımlardan ileri düzey tekniklere kadar geniş bir yelpazede bilgi vermeye çalıştık. Umarız bu rehber, React uygulamanızı otomatik olarak yayınlama yolculuğunuzda size yardımcı olur.

Sıkça Sorulan Sorular

  • S: AWS kimlik bilgilerimi GitHub'da nasıl güvenli bir şekilde saklarım? C: GitHub Secrets kullanarak kimlik bilgilerinizi güvenli bir şekilde saklayabilirsiniz.
  • S: Otomatik geri dönüşüm nasıl yapılır? C: GitHub Actions'ta hata durumunda önceki başarılı sürümü geri yüklemek için koşullu adımlar tanımlayabilirsiniz.
  • S: Uygulamanın farklı ortamlarda (geliştirme, test, üretim) nasıl yayınlanması sağlanır? C: Farklı dallar ve ortamlara özgü iş akışları tanımlayabilirsiniz.
  • S: Uygulamanın boyutu büyükse performansı nasıl iyileştirebilirim? C: AWS CloudFront ve uygun bir optimizasyon stratejisi kullanın.
  • S: Daha fazla bilgiye nereden ulaşabilirim? C: AWS ve GitHub Actions belgelerine ve Fatih Soysal'ın web sitesine bakabilirsiniz.

Yazar: Fatih Soysal

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.