Praktyka AWS: Od globalnej architektury po aplikacje Serverless, kompleksowe doskonalenie umiejętności w chmurze
Praktyka AWS: Od globalnej architektury po aplikacje Serverless, kompleksowe doskonalenie umiejętności w chmurze
AWS (Amazon Web Services) stał się liderem w dziedzinie cloud computingu, a zarówno duże przedsiębiorstwa, jak i startupy wykorzystują różne usługi oferowane przez AWS do budowania i wdrażania aplikacji. Z dyskusji na X/Twitterze możemy zauważyć, że AWS obejmuje bardzo szeroki zakres, w tym infrastrukturę, bezpieczeństwo, AI/ML, DevOps oraz aplikacje Serverless. Ten artykuł, w oparciu o te dyskusje, ma na celu dostarczenie bardziej kompleksowego przewodnika po praktykach AWS, aby pomóc Ci w doskonaleniu umiejętności w chmurze i lepszym wykorzystaniu platformy AWS.
1. Zrozumienie globalnej infrastruktury AWS: Klucz do wysokiej dostępności i odporności na błędy
Opanowanie globalnej infrastruktury AWS jest podstawą do budowania aplikacji o wysokiej dostępności i odporności na błędy. Globalna infrastruktura AWS składa się z następujących kluczowych komponentów:
- Region (Region): Niezależny obszar geograficzny, każdy region zawiera wiele Availability Zone. Wybierając region, należy wziąć pod uwagę opóźnienia, wymagania dotyczące zgodności i koszty.
- Availability Zone (Strefa Dostępności): Izolowana lokalizacja w regionie, każda strefa dostępności składa się z jednego lub więcej centrów danych. Wdrażając aplikacje w różnych strefach dostępności, można zwiększyć odporność na błędy.
- Edge Location (Lokalizacja brzegowa): Serwery pamięci podręcznej rozmieszczone na całym świecie, służące do przyspieszenia dystrybucji treści. AWS CloudFront wykorzystuje lokalizacje brzegowe do buforowania treści statycznych i dynamicznych, poprawiając komfort użytkowania.
Wskazówki praktyczne:
- Wdrożenie w wielu strefach dostępności: Wdrażanie kopii aplikacji w różnych strefach dostępności może zapobiec niedostępności aplikacji w przypadku awarii pojedynczej strefy dostępności.
- Wybór odpowiedniego regionu: Wybierz odpowiedni region w zależności od lokalizacji użytkowników i wymagań dotyczących zgodności.
- Wykorzystanie CloudFront do przyspieszenia dystrybucji treści: Użyj CloudFront do buforowania treści statycznych i dynamicznych, aby poprawić komfort użytkowania.
2. Najlepsze praktyki IAM: Zasada minimalnych uprawnień
Identity and Access Management (IAM) to podstawa bezpieczeństwa AWS. IAM pozwala kontrolować, kto ma dostęp do Twoich zasobów AWS i jakie operacje mogą wykonywać. Podstawowe koncepcje IAM obejmują:
- Users (Użytkownicy): Reprezentują osoby lub aplikacje, które uzyskują dostęp do zasobów AWS.
- Roles (Role): Mogą być przypisywane do usług AWS lub instancji EC2, umożliwiając im dostęp do innych zasobów AWS.
- Groups (Grupy): Służą do organizowania użytkowników, ułatwiając zarządzanie uprawnieniami.
- Policies (Polityki): Definiują uprawnienia użytkowników, ról lub grup.
Najlepsze praktyki:
- Zasada minimalnych uprawnień (Least Privilege): Przyznawaj użytkownikom lub rolom tylko minimalne uprawnienia, które są im potrzebne. Unikaj używania polityki
AdministratorAccess, zamiast tego twórz niestandardowe polityki w oparciu o rzeczywiste potrzeby. - Używaj ról zamiast użytkowników IAM: Staraj się używać ról do przyznawania instancjom EC2 lub funkcjom Lambda uprawnień dostępu do innych zasobów AWS, unikaj przechowywania Access Key ID i Secret Access Key w kodzie.
- Włącz MFA (Multi-Factor Authentication): Włącz MFA dla wszystkich użytkowników IAM, aby zwiększyć bezpieczeństwo konta.
- Regularnie audytuj uprawnienia IAM: Regularnie audytuj uprawnienia IAM, aby upewnić się, że nie ma nadmiernych uprawnień.
Przykładowa polityka:
Poniższa polityka umożliwia użytkownikowi wykonywanie operacji GetObject i PutObject w bucketcie S3 my-bucket w regionie us-east-1.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::my-bucket/*",
"Condition": {
"StringEquals": {
"aws:RequestedRegion": "us-east-1"
}
}
}
]
}
3. Automatyzacja DevOps: Wykorzystanie skryptów Bash i GitHub Actions
Dyskusje na X/Twitterze wspominają o repozytoriach skryptów DevOps Bash i GitHub Actions, które są ważnymi narzędziami do wdrażania automatyzacji DevOps.
- Skrypty Bash: Można używać skryptów Bash do automatyzacji różnych zadań DevOps, takich jak wdrażanie aplikacji, konfigurowanie serwerów, monitorowanie systemów itp.
- GitHub Actions: GitHub Actions to narzędzie CI/CD, które może automatycznie budować, testować i wdrażać aplikacje.
Praktyczne wskazówki:
- Wykorzystaj skrypty Bash do automatyzacji typowych zadań: Na przykład możesz użyć skryptu Bash do automatycznego wdrażania funkcji Lambda lub instancji EC2.
- Użyj GitHub Actions do budowania potoków CI/CD: Możesz użyć GitHub Actions do automatycznego budowania, testowania i wdrażania aplikacji.
- Kontrola wersji: Przechowuj skrypty Bash i konfiguracje GitHub Actions w systemie kontroli wersji, takim jak Git.
Przykładowy przepływ pracy GitHub Actions:
Poniższy przepływ pracy GitHub Actions automatycznie buduje, testuje i wdraża funkcję Lambda za każdym razem, gdy kod jest przesyłany do gałęzi main.
name: Deploy Lambda Function
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- run: npm install
- run: npm run build
- uses: 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: us-east-1
- run: aws lambda update-function-code --function-name my-lambda-function --zip-file fileb://dist/lambda.zip
4. Aplikacje Serverless: AWS Lambda + S3 + DynamoDBDyskusja na X/Twitterze wspomniała o przykładzie budowy Serverless X (Twitter) Quote Bota przy użyciu AWS Lambda, S3 i DynamoDB. Pokazuje to potęgę architektury Serverless.
- AWS Lambda: Bezserwerowa usługa obliczeniowa, która pozwala uruchamiać kod bez zarządzania serwerami.
- Amazon S3: Usługa przechowywania obiektów, służąca do przechowywania różnego rodzaju danych.
- Amazon DynamoDB: Usługa bazy danych NoSQL, służąca do przechowywania danych strukturalnych i półstrukturalnych.
Kroki budowy aplikacji Serverless:
- Wybór odpowiedniego wyzwalacza: Wybierz zdarzenie, które wyzwala funkcję Lambda, np. żądanie HTTP, przesłanie obiektu S3, aktualizacja danych DynamoDB itp. // Wybierz odpowiedni trigger, który uruchomi funkcję Lambda.
- Napisanie kodu funkcji Lambda: Napisz kod funkcji Lambda, aby obsługiwać zdarzenie wyzwalające i wykonywać odpowiednie operacje. // Napisz kod funkcji Lambda, który obsłuży trigger i wykona odpowiednie operacje.
- Konfiguracja roli IAM: Skonfiguruj rolę IAM, aby przyznać funkcji Lambda uprawnienia dostępu do innych zasobów AWS, takich jak S3 i DynamoDB. // Skonfiguruj rolę IAM, aby dać funkcji Lambda dostęp do innych zasobów AWS.
- Wdrożenie funkcji Lambda: Wdróż funkcję Lambda w AWS. // Wdróż funkcję Lambda na AWS.
- Testowanie funkcji Lambda: Przetestuj funkcję Lambda, aby upewnić się, że działa poprawnie. // Przetestuj funkcję Lambda, aby upewnić się, że działa.
Zalety aplikacji Serverless:
- Brak konieczności zarządzania serwerami: Nie ma potrzeby zarządzania serwerami, co zmniejsza obciążenie operacyjne. // Nie musisz zarządzać serwerami, co zmniejsza obciążenie operacyjne.
- Automatyczne skalowanie: Automatyczne skalowanie w zależności od ilości żądań, bez konieczności ręcznej konfiguracji. // Skaluje się automatycznie w zależności od zapotrzebowania, bez ręcznej konfiguracji.
- Płatność za wykorzystanie: Płać tylko za faktycznie wykorzystane zasoby obliczeniowe, co obniża koszty. // Płacisz tylko za to, co zużywasz, co obniża koszty.
5. Aplikacje AI/ML: Praktyki Bedrock i LLM
Dyskusja na X/Twitterze wspomniała również o stażu w AWS AI Lab w zakresie LLM (Large Language Model) oraz o zastosowaniu Bedrock. AWS oferuje bogaty zestaw usług AI/ML, które mogą pomóc w budowaniu różnorodnych aplikacji AI/ML.
- Amazon Bedrock: Usługa udostępniająca szereg wysokowydajnych modeli podstawowych od wiodących firm zajmujących się sztuczną inteligencją. // Usługa oferująca modele bazowe od wiodących firm AI.
- AWS AI Lab: Koncentruje się na badaniach AI/ML i oferuje studentom możliwości odbycia stażu. // Koncentruje się na badaniach AI/ML i oferuje staże dla studentów.
Kierunki praktyczne:
- Wykorzystanie Bedrock do budowy aplikacji AI: Możesz użyć modeli podstawowych dostarczonych przez Bedrock do budowy różnych aplikacji AI, takich jak generowanie tekstu, rozpoznawanie obrazów, rozpoznawanie mowy itp. // Możesz użyć modeli bazowych Bedrock do budowy różnych aplikacji AI.
- Śledzenie pamięci LLM i uczenia się przez całe życie: Śledzenie najnowszych postępów w badaniach nad LLM, takich jak pamięć LLM i uczenie się przez całe życie, może pomóc w budowaniu bardziej inteligentnych aplikacji AI. // Śledzenie postępów w LLM, takich jak pamięć i uczenie się przez całe życie, pomoże Ci budować inteligentniejsze aplikacje AI.
6. Bezpieczeństwo i zgodność: Zwróć uwagę na awarie usług AWS
Dyskusja na X/Twitterze wspomniała o awariach usług AWS, co przypomina nam o konieczności zwrócenia uwagi na bezpieczeństwo i zgodność AWS.
- Wdrożenie w wielu regionach: Wdrożenie aplikacji w różnych regionach AWS może zapobiec niedostępności aplikacji spowodowanej awarią pojedynczego regionu. // Wdrażanie w wielu regionach AWS zapobiega niedostępności aplikacji z powodu awarii jednego regionu.
- Monitorowanie i alarmowanie: Ustaw monitorowanie i alarmowanie, aby szybko wykrywać problemy i podejmować działania. // Ustaw monitorowanie i alarmowanie, aby szybko wykrywać i reagować na problemy.
- Kopia zapasowa i odzyskiwanie: Regularnie twórz kopie zapasowe danych i testuj procesy odzyskiwania. // Regularnie twórz kopie zapasowe i testuj procesy odzyskiwania.
- Zgodność: Zapoznaj się z odpowiednimi wymaganiami dotyczącymi zgodności i przestrzegaj ich, takimi jak GDPR, HIPAA itp. // Zrozum i przestrzegaj wymagań dotyczących zgodności, takich jak GDPR, HIPAA itp.





