AWS na przykładzie

Piotr Woszczyk @ 2019

Kiedy?

  • Zmienne obciążenie
  • Możliwe skalowanie
  • Generowanie obciążenia
  • Wysokie HA

Po co?

  • Oszczędność $
  • Brak ograniczeń
  • Wysoka jakość
  • Ekologia

Przykład

  • Webserwer, np. nginx
  • Runtime, np. PHP
  • Baza relacyjna, np. MySQL
  • Baza noSQL, np. Redis
  • Storage

Założenia

  • Docker
  • Szybkie skalowanie
  • Łatwa implementacja
  • Użycie gotowych usług

Plan

Wymagania wstępne

ALB - load balancer

Co to?

  • Load balancer od AWS
  • Wbudowany HealthCheck
  • Obsługa wielu AZ

Jak?

  • Wybieramy protokół, port i AZ
  • Wybieramy certyfikat SSL
  • Określamy ustawienia bezpieczeństwa
  • Określamy "target group"
  • Rejestrujemy "target"

ALB - nazwa, port, AZ

ALB - target group

ECR

Co to?

  • Prywatne repozytorium obrazów Docker

Jak?

  • Tworzymy repozytorium w ECR
  • Logujemy się do ECR przez AWS CLI
  • Budujemy obrazy
  • Wypychamy obrazy do ECR

ECR

ECR

# Logowanie z użyciem AWS CLI
$(aws ecr get-login --no-include-email --region eu-west-1)

docker build --tag $NGINX_REPOSITORY:$TAG --file nginx/Dockerfile  .
docker build --tag $PHP_REPOSITORY:$TAG --file php/Dockerfile  .

docker push $NGINX_REPOSITORY:$TAG
docker push $PHP_REPOSITORY:$TAG

ECR

ECS: Fargate - orchestration

Co to?

  • "Orchestration" do AWS dla Docker
  • Skaluje kontenery uruchomione w ramach klastra
  • Fargate to prosztsza wersja bez konieczności wybierania typów maszyn czy ustawiania sieci
  • Współpracuje z innymi usługami, np. Cloud Watch

Jak?

  • Tworzymy "cluster"
  • Tworzymy "task definition"
  • Tworzymy "service"

ECS: Fargate - cluster

ECS: Fargate - task def.

ECS: Fargate - task def.

ECS: Fargate - service

ECS: Fargate - service

ECS: Fargate - service

ECS: Fargate

RDS - baza danych

Co to?

  • Usługa oferująca różne silniki baz danych, np. MySQL, PostgreSQL, MSSQL
  • Oferuje autorski silnik Aurora kompatybilny z MySQL lub PostgreSQL, który jest kilkukrotnie szybszy
  • Oferuje usługi serverless

Jak?

  • Wybieramy silnik, wersję i lokalizację
  • Określamy sposób działania (predefiniowane instancje vs serverless)
  • Ustawiamy dostępy i replikację
  • Określamy polityke backupów

RDS

RDS

RDS

RDS

Ile to kosztuje?!

Co?

  • Bardzo prosta aplikacja z minimalnym obciążeniem
  • ALB + ECS:Fargate + RDS + ElasticCache

Ile?!

  • Około 50zł /miesiąc przy użyciu free tier
  • Około 200zł / miesiąc bez free tier

Co dalej?

  • Analiza i optymalizacja
  • Włączanie dodatkowych usług
    • Code Pipeline
    • Cloud Watch
    • Batch
    • SES
  • Optymalizacja kosztów, np. reserved instance, spot instance

Linki

Dziękuję za uwagę!

Made with Slides.com