Работа с 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 предоставляет сервисы по требованию. Вы получаете столько сервисов или серверов сколько хотите и можете легко расширять структуру.
Технология революционная и многие ее используют.
AWS представила специальные 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).