Работа с 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 и т.д.

start page

Дале имеем возможность использовать этот 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

start page

Прежде всего нам необходимо установить 2 переменные в окружение

export AWS_ACCESS_KEY_ID=AAAAAA
export AWS_SECRET_ACCESS_KEY=AAAAA

Идем сюда http://aws.amazon.com/

Заходим в консоль.

Настройки аккаунта

start page

Генерим секреты.

Вставляем в .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 - Логи

start page

Поддерживаемые паттерны.

Очереди

Шина событий

Издатель/подписчик

Оркестрация (Цепочка функций, Асинхронные API HTTP, Наблюдение)

Эволюция облачных платформ.

До появления облачных платформ существовала четкая граница между разработкой и использованием. Для развертывания приложения приходилось заботится о настройке сервера и всех зависимочтей проекта.

К счастью, с появлением технологии виртуализации (например, Hyper-V) и виртуальных машин возникла концепция инфраструктуры как услуги (IaaS).

start page