Projektowanie i wdrażanie aplikacji w chmurze

Meteorologia

(gr. metéōron (μετέωρον) - unoszący się w powietrzu, lógos (λόγος)- słowo, wiedza) - nauka zajmująca się badaniem zjawisk fizycznych i procesów zachodzących w atmosferze, szczególnie w jej niższej warstwie - troposferze. Bada, jak te procesy wpływają na przebieg procesów atmosferycznych i stan pogody na danym obszarze.

Klasyfikacja chmur

  • IaaS - Infrastructure as a Service
  • PaaS - Platform as a service
  • SaaS - Software as a service

Konteneryzacja a Wirtualizacja

Kontener

zazwyczaj metalowa skrzynia, o zunifikowanych wymiarach i konstrukcji, służąca do przewozu drobnicy (zapakowanej zazwyczaj w opakowania kartonowe, paczki, skrzynie, worki, czasami dodatkowo umieszczonych na europaletach).

Kontener = chroot + cgroups + namespaces

jedno bardzo, ale to bardzo ważne pytanie...

Subtitle

Dostępność

Availability % Downtime per year Downtime per month
 
Downtime per week
 
Downtime per day
90% ("one nine") ​36.5 days ​72 hours ​16.8 hours ​2.4 hours
99% ("two nines") 3.65 days 7.20 hours 1.68 hours 14.4 minutes
99.9% ("three nines") 8.76 hours 43.8 minutes 10.1 minutes 1.44 minutes
99.99% ("four nines") 52.56 minutes 4.38 minutes 1.01 minutes 8.66 seconds
99.999% ("five nines") 5.26 minutes 25.9 seconds 6.05 seconds 864.3 milliseconds
99.9999% ("six nines") 31.5 seconds 2.59 seconds 604.8 milliseconds 86.4 milliseconds
99.99999% ("seven nines") 3.15 seconds 262.97 milliseconds 60.48 milliseconds 8.64 milliseconds
99.999999% ("eight nines") 315.569 milliseconds 26.297 milliseconds 6.048 milliseconds 0.864 milliseconds
99.9999999% ("nine nines") 31.5569 milliseconds 2.6297 milliseconds 0.6048 milliseconds 0.0864 milliseconds

Trochę akronimów

  • SLA
  • MTTF
  • MTTR
  • MTBF 
  • Availability = MTBF/ (MTBF + MTTR)
  • High Availability
  • Fault Rolerance
  • RTO
  • RPO

Wdrażanie aplikacji

,, WinSCP mogą Państwo tak skonfigurować, żeby od razu kopiował pliki edytowane Notatnikiem++ na serwerze - nie jedna duża strona już tak powstała"

anonimowy wykładowca na szkoleniu PHP a.d. 2008

,,​Kiedś wystarczyło wrzucić wszystko do /var/www i działało''

anonimowy administrator sieci a.d. 2015

Text

Heroku - przykład PaaS

Jak działa Heroku?

 

Anatomia

  • Loadbalancery
  • Dyna
  • git hooks
  • Buildpacki
  • Procfile
  • Heroku toolbelt
  • Addons

Anatomia Buildpacka

  • bin/detect
  • bin/compile
  • bin/release

 

12 elementów

  • jedno repozytorium - wiele środowisk/wdrożeń
  • jawne deklarowanie zależności
  • przechowywanie konfiguracji w zmiennych środowiskowych
  • wszystkie serwisy wspierające traktowane jednakowo
  • ścisłe przestrzeganie cyklu życia aplikacji 
  • aplikacja jest bez stanowa
  • aplikacja komunikuje się ze światem przez porty
  • architektura aplikacji przewiduje skalowanie horyzontalne
  • aplikacja szybko się uruchamia i kończy swoją prac
  • środowisko deweloperskie powinno być maksymalnie podobne do produkcyjnego
  • deleguj zarządzanie logami
  • narzędzia administracyjne powiinny być uruchamiane w środowisku aplikacji

Trzoda a Zwierzęta domowe

Ansible - pies pasterski

Terraform - menadżer stadniny


resource "aws_security_group" "default" {
  name = "eip_example"
  description = "Used in the terraform"
  ingress {
    from_port = 22
    to_port = 22
    protocol = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
resource "aws_instance" "web" {
  instance_type = "t2.micro"
  key_name = "${var.key_name}"
  security_groups = ["${aws_security_group.default.name}"]
  }
}

Immutable Server 

Unikernels

[citation needed] 

https://aws.amazon.com/ec2/sla/

https://cloud.google.com/compute/sla

https://www.reddit.com/r/sysadmin/comments/3yv2db/aws_ebs_volume_data_loss_usgovcloudwest1a

https://cloud.google.com/compute/docs/tutorials/robustsystems

http://www.weibull.com/hotwire/issue79/relbasics79.htm

http://www.banyanops.com/blog/analyzing-docker-hub/

http://martinfowler.com/bliki/PhoenixServer.html

http://martinfowler.com/bliki/ImmutableServer.html

http://12factor.net/

https://gun.io/blog/PaaS-under-the-hood-episode-1-kernel-namespaces/
http://www.meetup.com/publiccloudpl/