Робота з 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 надає сервіси на вимогу. Ви отримуєте стільки сервісів або серверів, скільки хочете і можете легко розширювати структуру.

Технологія революційна і її використовують.

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 - Логи

start page

Патерни, що підтримуються.

Черги

Шина подій

Видавець/передплатник

Оркестрація (Ланцюжок функцій, Асинхронні API HTTP, Спостереження)

Еволюція хмарних платформ.

До появи хмарних платформ існувала чітка межа між розробкою та використанням. Для розгортання програми доводилося піклуватися про налаштування сервера та всіх залежностей проекту.

На щастя, з появою технології віртуалізації (наприклад, Hyper-V) та віртуальних машин виникла концепція інфраструктури як послуги (IaaS).

start page