AWS Практика: Од глобална архитектура до Serverless апликации, сеопфатно подобрување на вашите облачни вештини
AWS Практика: Од глобална архитектура до Serverless апликации, сеопфатно подобрување на вашите облачни вештини
AWS (Amazon Web Services) стана лидер во областа на cloud computing, без разлика дали се големи компании или стартапи кои ги користат различните услуги што ги нуди AWS за да градат и распоредуваат апликации. Од дискусиите на X/Twitter, можеме да видиме дека областите во кои е вклучен AWS се многу широки, вклучувајќи инфраструктура, безбедност, AI/ML, DevOps и Serverless апликации. Оваа статија ќе ги комбинира овие дискусии за да ви обезбеди поопсежен водич за AWS практиката, за да ви помогне да ги подобрите вашите облачни вештини и подобро да ја користите платформата AWS.
1. Разбирање на глобалната инфраструктура на AWS: Клучот за висока достапност и толеранција на грешки
Совладувањето на глобалната инфраструктура на AWS е основа за градење апликации со висока достапност и толеранција на грешки. Глобалната инфраструктура на AWS се состои од следниве клучни компоненти:
- Region (Регион): Независен регион во географска локација, секој регион содржи повеќе Availability Zone. При изборот на регион, треба да се земат предвид латентноста, барањата за усогласеност и трошоците.
- Availability Zone (Зона на достапност): Изолирана локација во регион, секоја зона на достапност се состои од еден или повеќе центри за податоци. Со распоредување на апликации во различни зони на достапност, може да се подобри толеранцијата на грешки.
- Edge Location (Локација на работ): Кеш сервери дистрибуирани низ целиот свет за да се забрза дистрибуцијата на содржината. AWS CloudFront користи локации на работ за да кешира статична и динамична содржина, подобрувајќи го корисничкото искуство.
Практични совети:
- Распоредување во повеќе зони на достапност: Распоредувањето копии од апликацијата во различни зони на достапност може да спречи недостапност на апликацијата поради дефект на една зона на достапност.
- Изберете соодветен регион: Изберете соодветен регион врз основа на локацијата на корисникот и барањата за усогласеност.
- Користете CloudFront за да ја забрзате дистрибуцијата на содржината: Користете CloudFront за да кеширате статична и динамична содржина, подобрувајќи го корисничкото искуство.
2. IAM најдобри практики: Принцип на минимални привилегии
Identity and Access Management (IAM) е срцето на безбедноста на AWS. IAM ви овозможува да контролирате кој може да пристапи до вашите AWS ресурси и кои дејства можат да ги извршуваат. Основните концепти на IAM вклучуваат:
- Users (Корисници): Претставуваат поединци или апликации кои се користат за пристап до AWS ресурси.
- Roles (Улоги): Може да се доделат на AWS услуги или EC2 инстанци, дозволувајќи им да пристапат до други AWS ресурси.
- Groups (Групи): Се користат за организирање на корисници, олеснувајќи го управувањето со дозволите.
- Policies (Политики): Дефинираат дозволи за корисници, улоги или групи.
Најдобри практики:
- Принцип на минимални привилегии (Least Privilege): Доделете му на корисникот или улогата само минималните дозволи потребни. Избегнувајте користење на
AdministratorAccessполитиката, треба да креирате прилагодени политики според вистинските потреби. - Користете Roles наместо IAM корисници: Обидете се да користите Roles за да им дадете на EC2 инстанците или Lambda функциите дозвола да пристапат до други AWS ресурси, избегнувајќи складирање на Access Key ID и Secret Access Key во кодот.
- Овозможете MFA (Multi-Factor Authentication): Овозможете MFA за сите IAM корисници за да ја подобрите безбедноста на сметката.
- Редовно ревидирајте ги IAM дозволите: Редовно ревидирајте ги IAM дозволите за да се осигурате дека нема прекумерна авторизација.
Пример политика:
Следната политика им овозможува на корисниците да извршуваат GetObject и PutObject операции во S3 bucket my-bucket во регионот 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. DevOps автоматизација: Користење Bash скрипти и GitHub Actions
Дискусиите на X/Twitter споменуваат DevOps Bash складишта за скрипти и GitHub Actions, кои се важни алатки за имплементација на DevOps автоматизација.
- Bash скрипти: Bash скриптите може да се користат за автоматизирање на различни DevOps задачи, како што се распоредување апликации, конфигурирање сервери, мониторинг на системи итн.
- GitHub Actions: GitHub Actions е CI/CD алатка која може автоматски да гради, тестира и распоредува апликации.
Практични совети:
- Користете Bash скрипти за автоматизирање на вообичаени задачи: На пример, може да се користи Bash скрипта за автоматско распоредување на Lambda функција или EC2 инстанца.
- Користете GitHub Actions за градење CI/CD канали: Може да се користи GitHub Actions за автоматско градење, тестирање и распоредување на апликации.
- Контрола на верзии: Чувајте ги Bash скриптите и конфигурациите на GitHub Actions во систем за контрола на верзии, како што е Git.
Пример за GitHub Actions workflow:
Следниот GitHub Actions workflow автоматски ќе гради, тестира и распоредува Lambda функција секогаш кога кодот ќе биде внесен во 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. Serverless апликации: AWS Lambda + S3 + DynamoDBДискусија на X/Twitter спомна пример за градење на 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 функцијата за да ги обработите настаните на тригерот и да ги извршите соодветните операции.
- Конфигурирајте IAM улога: Конфигурирајте IAM улога, давајќи ѝ на Lambda функцијата дозвола за пристап до други AWS ресурси, како што се S3 и DynamoDB.
- Распоредете ја Lambda функцијата: Распоредете ја Lambda функцијата на AWS.
- Тестирајте ја Lambda функцијата: Тестирајте ја Lambda функцијата за да се осигурате дека работи правилно.
Предности на Serverless апликација:
- Нема потреба од управување со сервери: Нема потреба од управување со сервери, што го намалува товарот на операциите.
- Автоматско проширување: Автоматско проширување според обемот на барања, без потреба од рачна конфигурација.
- Плаќање според потреба: Плаќајте само за пресметковните ресурси што реално се користат, што ги намалува трошоците.
5. AI/ML апликации: Bedrock и LLM практики
Дискусијата на X/Twitter исто така спомна можност за стажирање во 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 апликации, како што се генерирање текст, препознавање слики, препознавање говор итн.
- Фокусирање на LLM меморија и континуирано учење: Следење на најновите истражувања за LLM, како што се LLM меморија и континуирано учење, може да ви помогне да изградите поинтелигентни AI апликации.
6. Безбедност и усогласеност: Фокусирање на прекини на AWS услуги
Дискусијата на X/Twitter спомна настани со прекини на AWS услуги, што нè потсетува да се фокусираме на безбедноста и усогласеноста на AWS.
- Распоредување во повеќе региони: Распоредување на апликации во различни AWS региони, може да спречи недостапност на апликацијата поради дефект во еден регион.
- Мониторинг и предупредување: Поставување на мониторинг и предупредување, за навремено откривање на проблеми и преземање мерки.
- Резервна копија и обновување: Редовно правете резервна копија на податоците и тестирајте ги процесите за обновување.
- Усогласеност: Разберете ги и почитувајте ги релевантните барања за усогласеност, како што се GDPR, HIPAA итн.





