AWS Praksa: Od Globalne Arhitekture do Serverless Aplikacija, Sveobuhvatno Unapredite Vaše Cloud Veštine
AWS Praksa: Od Globalne Arhitekture do Serverless Aplikacija, Sveobuhvatno Unapredite Vaše Cloud Veštine
AWS (Amazon Web Services) je postao lider u oblasti cloud computing-a, i velike kompanije i start-up-ovi koriste različite AWS servise za izgradnju i implementaciju aplikacija. Iz diskusija na X/Twitter-u, možemo videti da AWS obuhvata veoma širok spektar oblasti, uključujući infrastrukturu, bezbednost, AI/ML, DevOps i Serverless aplikacije. Ovaj članak će kombinovati ove diskusije kako bi vam pružio sveobuhvatniji vodič za AWS praksu, pomažući vam da unapredite svoje cloud veštine i bolje iskoristite AWS platformu.
1. Razumevanje AWS Globalne Infrastrukture: Ključ Visoke Dostupnosti i Otpornosti na Greške
Ovladavanje AWS globalnom infrastrukturom je osnova za izgradnju aplikacija visoke dostupnosti i otpornosti na greške. AWS globalna infrastruktura se sastoji od sledećih ključnih komponenti:
- Region (Region): Nezavisna geografska oblast, svaki region sadrži više Availability Zone. Prilikom izbora regiona, potrebno je uzeti u obzir latenciju, zahteve usklađenosti i troškove.
- Availability Zone (Zona Dostupnosti): Izolovana lokacija unutar regiona, svaka zona dostupnosti se sastoji od jednog ili više data centara. Implementacijom aplikacija u različitim zonama dostupnosti, može se poboljšati otpornost na greške.
- Edge Location (Lokacija na Ivici): Keš serveri distribuirani širom sveta, koji se koriste za ubrzavanje isporuke sadržaja. AWS CloudFront koristi lokacije na ivici za keširanje statičkog i dinamičkog sadržaja, poboljšavajući korisničko iskustvo.
Praktični Saveti:
- Implementacija u Više Zona Dostupnosti: Implementacija kopija aplikacije u različitim zonama dostupnosti može sprečiti nedostupnost aplikacije usled kvara jedne zone dostupnosti.
- Izbor Odgovarajućeg Regiona: Izaberite odgovarajući region na osnovu lokacije korisnika i zahteva usklađenosti.
- Iskoristite CloudFront za Ubrzavanje Isporuke Sadržaja: Koristite CloudFront za keširanje statičkog i dinamičkog sadržaja, poboljšavajući korisničko iskustvo.
2. IAM Najbolje Prakse: Princip Najmanjih Privilegija
Identity and Access Management (IAM) je srž AWS bezbednosti. IAM vam omogućava da kontrolišete ko može da pristupi vašim AWS resursima i koje operacije mogu da izvrše. Osnovni koncepti IAM-a uključuju:
- Users (Korisnici): Predstavljaju pojedince ili aplikacije, koji se koriste za pristup AWS resursima.
- Roles (Uloge): Mogu se dodeliti AWS servisima ili EC2 instancama, omogućavajući im pristup drugim AWS resursima.
- Groups (Grupe): Koriste se za organizovanje korisnika, radi lakšeg upravljanja dozvolama.
- Policies (Politike): Definišu dozvole korisnika, uloga ili grupa.
Najbolje Prakse:
- Princip Najmanjih Privilegija (Least Privilege): Dodelite korisniku ili ulozi samo minimalne privilegije koje su im potrebne. Izbegavajte korišćenje
AdministratorAccesspolitike, već kreirajte prilagođene politike na osnovu stvarnih potreba. - Koristite Roles umesto IAM Korisnika: Pokušajte da koristite Roles za dodeljivanje EC2 instancama ili Lambda funkcijama dozvole za pristup drugim AWS resursima, izbegavajući skladištenje Access Key ID i Secret Access Key u kodu.
- Omogućite MFA (Multi-Factor Authentication): Omogućite MFA za sve IAM korisnike, poboljšavajući bezbednost naloga.
- Redovno Revidirajte IAM Dozvole: Redovno revidirajte IAM dozvole, kako biste bili sigurni da nema prekomernog ovlašćenja.
Primer Politike:
Sledeća politika omogućava korisniku da izvrši GetObject i PutObject operacije u S3 storage bucket-u my-bucket u us-east-1 regionu.
{
"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. DevOps automatizacija: Korišćenje Bash skripti i GitHub Actions
Diskusija na X/Twitter-u je pomenula DevOps Bash skript repozitorijume i GitHub Actions, koji su važni alati za implementaciju DevOps automatizacije.
- Bash skripte: Možete koristiti Bash skripte za automatizaciju različitih DevOps zadataka, kao što su implementacija aplikacija, konfigurisanje servera, nadgledanje sistema itd.
- GitHub Actions: GitHub Actions je CI/CD alat koji može automatski da gradi, testira i implementira aplikacije.
Praktični saveti:
- Iskoristite Bash skripte za automatizaciju uobičajenih zadataka: Na primer, možete koristiti Bash skripte za automatsku implementaciju Lambda funkcija ili EC2 instanci.
- Koristite GitHub Actions za izgradnju CI/CD pipeline-a: Možete koristiti GitHub Actions za automatsko izgradnju, testiranje i implementaciju aplikacija.
- Kontrola verzija: Čuvajte Bash skripte i GitHub Actions konfiguracije u sistemu za kontrolu verzija, kao što je Git.
Primer GitHub Actions workflow-a:
Sledeći GitHub Actions workflow će automatski izgraditi, testirati i implementirati Lambda funkciju svaki put kada se kod pošalje na main branch.
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. Serverless aplikacije: AWS Lambda + S3 + DynamoDBДискусије на X/Твитеру су поменуле пример изградње Serverless X (Twitter) Quote Bot-а користећи AWS Lambda, S3 и DynamoDB. Ово показује моћ Serverless архитектуре.
- AWS Lambda: Serverless сервис за рачунање, који може да покреће код без потребе за управљањем серверима.
- Amazon S3: Сервис за складиштење објеката, који се користи за складиштење различитих типова података.
- Amazon DynamoDB: NoSQL сервис базе података, који се користи за складиштење структурираних и полуструктурираних података.
Кораци за изградњу Serverless апликације:
- Изаберите одговарајући окидач: Изаберите догађај који ће покренути Lambda функцију, као што су HTTP захтеви, отпремање S3 објеката, ажурирање DynamoDB података итд. // Одаберите догађај који покреће Lambda функцију.
- Напишите код Lambda функције: Напишите код Lambda функције да обради догађај окидача и изврши одговарајуће операције. // Напишите код за обраду догађаја и извршавање операција.
- Конфигуришите IAM улогу: Конфигуришите IAM улогу, дајући Lambda функцији дозволу за приступ другим AWS ресурсима, као што су S3 и DynamoDB. // Доделите дозволе за приступ другим AWS ресурсима.
- Распоредите Lambda функцију: Распоредите Lambda функцију на AWS. // Поставите Lambda функцију на AWS.
- Тестирајте Lambda функцију: Тестирајте Lambda функцију да бисте били сигурни да ради исправно. // Проверите да ли функција ради како треба.
Предности Serverless апликације:
- Нема потребе за управљањем серверима: Нема потребе за управљањем серверима, што смањује оптерећење операција.
- Аутоматско скалирање: Аутоматски се скалира у зависности од количине захтева, без потребе за ручном конфигурацијом.
- Плаћање по потреби: Плаћајте само за стварно коришћене рачунарске ресурсе, смањујући трошкове.
5. AI/ML апликације: Bedrock и LLM пракса
Дискусије на X/Твитеру су такође поменуле прилику за стажирање у AWS AI Lab-у за LLM (Large Language Model) и примену Bedrock-а. AWS нуди богат скуп AI/ML услуга које вам могу помоћи да изградите различите AI/ML апликације.
- Amazon Bedrock: Услуга која пружа низ основних модела високих перформанси од водећих AI компанија.
- AWS AI Lab: Фокусиран на AI/ML истраживање и пружа могућности за стажирање студентима.
Правци праксе:
- Користите Bedrock за изградњу AI апликација: Можете користити основне моделе које пружа Bedrock за изградњу различитих AI апликација, као што су генерисање текста, препознавање слика, препознавање говора итд. // Користите Bedrock за креирање AI апликација.
- Обратите пажњу на LLM меморију и континуирано учење: Обратите пажњу на најновији напредак у истраживању LLM-а, као што су LLM меморија и континуирано учење, што вам може помоћи да изградите интелигентније AI апликације. // Пратите напредак у LLM истраживању.
6. Безбедност и усклађеност: Обратите пажњу на прекиде AWS услуга
Дискусије на X/Твитеру су поменуле инциденте прекида AWS услуга, што нас подсећа да обратимо пажњу на безбедност и усклађеност AWS-а.
- Распоређивање у више региона: Распоређивање апликација у различитим AWS регионима може избећи недоступност апликација узроковану кваром једног региона.
- Надзор и упозорење: Подесите надзор и упозорење да бисте благовремено открили проблеме и предузели мере.
- Резервна копија и опоравак: Редовно правите резервне копије података и тестирајте процес опоравка.
- Усклађеност: Разумејте и придржавајте се релевантних захтева за усклађеност, као што су GDPR, HIPAA итд.





