Робота з AWS.
Основи роботи з Linux. -> Початок роботи.
Робота з AWS.
Встановлення terraform
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install terraform
Встановлення cdktf
sudo npm install --global cdktf-cli
cdktf - це SDK для terraform. На мові HCL HashiCorp Configuration Language можна створювати конфігурацію серверів, як і у форматі JSON.
Можна створити JSON для підтримуваної мови Python, TypeScript, Java і т.д.
Далі маємо можливість використовувати цей JSON під час запуску команд Terraform.
Створення оточення
mkdir myprj
cd myprj
cdktf init --template="python" --local
На найвищому рівні маємо команду
$ cdktf deploy
Яка здійснює установку системи.
$ cdktf synth
Цією командою створюємо JSON конфігурацію з коду, написаного на Python, наприклад.
Конфігурація створюється у папці cdktf.out.
cdktf.out ├── manifest.json └── stacks └── learn-cdktf ├── cdk.tf.json └── plan
manifest.json
{
"version": "0.7.0",
"stacks": {
"blog": {
"name": "blog",
"constructPath": "blog",
"workingDirectory": "stacks/blog",
"synthesizedStackPath": "stacks/blog/cdk.tf.json",
"annotations": []
}
}
}
sdk.tf.json
{
"//": {
"metadata": {
"version": "0.7.0",
"stackName": "blog",
"backend": "local"
}
}
}
main.py
#!/usr/bin/env python
from constructs import Construct
from cdktf import App, TerraformStack
class MyStack(TerraformStack):
def __init__(self, scope: Construct, ns: str):
super().__init__(scope, ns)
# define resources here
app = App()
MyStack(app, "blog")
app.synth()
Застосовуємо JSON
cd cdktf.out/stacks/blog && terraform apply
Насамперед нам необхідно встановити 2 змінні в оточення
export AWS_ACCESS_KEY_ID=AAAAAA
export AWS_SECRET_ACCESS_KEY=AAAAA
Ідемо сюди http://aws.amazon.com/
Заходимо у консоль.
Установки облікового запису
Генерим секрети.
Вставляємо у .bashrc
Додаємо провайдера cdktf.json
"terraformProviders": [
"hashicorp/aws@~> 3.42"
],
Встановлюємо.
$ cdktf get
Основи роботи з Linux. -> Безсерверні технології.
Безсерверні технології
Це архітектура, що дозволяє відокремити вихідний код серверного оточення.
Весь програмний код оформляється всередині функції, яка за тригером може запускатися.
Безсерверна архітектура - це наступний етап еволюції хмарних платформ у напрямку повністю хмарного машинного коду. З безсерверною архітектурою розробники виявляються ближчими до бізнес-логіки і при цьому можуть не турбуватися про інфраструктуру. Це шаблон, який не має на увазі “ні сервера”, а “менше сервера”. Безсерверний код керується подіями. Код може запускатися будь-чим - від традиційних веб-запитів HTTP до таймера або результату передачі файлу. Інфраструктура без сервера дозволяє миттєво масштабуватися відповідно до еластичним вимогам і пропонує мікро-виставлення рахунків, щоб дійсно “платити за те, що ви використовуєте”.
AWS надає сервіси на вимогу. Ви отримуєте стільки сервісів або серверів, скільки хочете і можете легко розширювати структуру.
Технологія революційна і її використовують.
AAWS представила спеціальні AWS Lambda функції у 2014 році.
AWS Lambda — найбільш опрацьована та широко використовувана FaaS-платформа, заснована на моделі «функція як послуга» або Стійка функція.
Поширення таких систем, як Azure Functions та Google Cloud Functions
Переваги:
Довговічність. Безпека. Продуктивність.
Також надає свободу вибору архітектури та підходу використання цих функцій.
Якщо раніше розробники налаштовували сервери і клали туди логіку програми, то тепер хмарні провайдери самі розвертають для нас сервери і дають можливість на них запускати “віртуальні функції”. Отже різко скорочується кількість ресурсів, т.к. раніше нам потрібно було платити за всі сервери, а зараз ми робимо маленький сервер (для активації сайту і віддачі сторінок), і всередині використовуємо лямбда функції для обчислень всього, що потрібно на хмарі.
Стійкі функції
Стійкі функції спрощують створення робочих процесів з відстеженням стану, що складаються з дискретних дій, що довго виконуються, в безсерверному середовищі. Стійкі функції можуть відстежувати хід виконання робочих процесів і періодично створювати контрольні точки у журналі виконання, тому вони надають можливості реалізації деяких цікавих шаблонів.
Використання сервісів замість коду клієнта.
Безсерверні програми зазвичай містять кілька AWS сервісів та логіки, яка укладена в лямбда функції.
Функції Лямбда можуть бути інтегровані в багато AWS сервісів.
Обчислення: AWS Lambda
Зберігання даних: Amazon S3, Amazon DynamoDB, Amazon RDS
API: Amazon API Gateway
Програми для інтеграції: Amazon EventBridge, Amazon SNS, Amazon SQS
CloudWatch Events - планувальник завдань
Amazon SNS (simple notification services) - нотифікація по емейлі, смс і т.д.
Інструментальні засоби: AWS Step Functions
Стрімінг та аналіз даних: Kinesis
Авторизація: AWS Cognito
CloudWathc Logs - Логи
Патерни, що підтримуються.
Черги
Шина подій
Видавець/передплатник
Оркестрація (Ланцюжок функцій, Асинхронні API HTTP, Спостереження)
Еволюція хмарних платформ.
До появи хмарних платформ існувала чітка межа між розробкою та використанням. Для розгортання програми доводилося піклуватися про налаштування сервера та всіх залежностей проекту.
На щастя, з появою технології віртуалізації (наприклад, Hyper-V) та віртуальних машин виникла концепція інфраструктури як послуги (IaaS).