Jestem fanem Heroku od najwcześniejszych dni. Ale podoba mi się fakt, że AWS Elastic Beanstalk daje ci większą kontrolę nad właściwościami instancji. Jedną z rzeczy, które uwielbiam w Heroku, jest fakt, że mogę wdrożyć aplikację i nie martwić się o nią. Ja zakładając Heroku jest zapewnienie wszystkie aktualizacje zabezpieczeń OS są terminowo stosowane. Muszę tylko upewnić się, że moja aplikacja jest bezpieczna.
Moje wstępne badania nad Beanstalk pokazują, że chociaż tworzy i konfiguruje instancje dla ciebie, potem przechodzi do bardziej ręcznego procesu zarządzania. Aktualizacje zabezpieczeń nie będą automatycznie stosowane do instancji. Wydaje się, że istnieją dwa obszary obaw:
- Nowe wersje AMI - Gdy nowe wersje AMI uderzą, wydaje się, że chcielibyśmy uruchomić najnowsze (prawdopodobnie najbezpieczniejsze). Ale moje badania wydają się wskazywać, że musisz ręcznie uruchomić nową konfigurację, aby zobaczyć najnowszą wersję AMI, a następnie utworzyć nowe środowisko, aby korzystać z tej nowej wersji . Czy istnieje lepszy automatyczny sposób obracania instancji w nowe wersje AMI?
- Pomiędzy wydaniami pojawią się aktualizacje bezpieczeństwa dla pakietów. Wygląda na to, że chcemy je również ulepszyć. Moje badania wydają się wskazywać, że ludzie instalują polecenia, aby od czasu do czasu uruchomić mniam aktualizację. Ale ponieważ nowe instancje są tworzone / niszczone na podstawie użycia, wydaje się, że nowe instancje nie zawsze będą miały aktualizacje (tj. Czas między utworzeniem instancji a pierwszą aktualizacją yum). Od czasu do czasu będziesz mieć instancje, które nie są załatane. Będziesz także miał instancje ciągle się łatające, dopóki nie zostanie zastosowana nowa wersja AMI. Moją drugą obawą jest to, że być może te aktualizacje zabezpieczeń nie przeszły własnej recenzji Amazon (podobnie jak wersje AMI) i może to uszkodzić moją aplikację, aby automatycznie je zaktualizować. Wiem, że Dreamhost miał kiedyś 12-godzinną przerwę, ponieważ stosowali aktualizacje Debiana całkowicie automatycznie, bez recenzji. Chcę się upewnić, że to samo mi się nie przydarzy.
Więc moje pytanie brzmi: czy Amazon zapewnia sposób oferowania w pełni zarządzanego PaaS, takiego jak Heroku? A może AWS Elastic Beanstalk to po prostu więcej niż skrypt instalacyjny, a potem jesteś sam (oprócz narzędzi do monitorowania i wdrażania, które zapewniają)?
źródło
Odpowiedzi:
Po pierwsze, aby być jasnym, żadna elastyczna fasolka szparagowa nie jest PaaS w sposobie, w jaki myślisz o tym. Po rozbiciu na części jest to bardziej wirtualne szablony instancji i automatyzacja wdrażania aplikacji, np. Marionetka lub szef kuchni. Wraz z tym otrzymujesz automatyczny dostęp do usługi równoważenia obciążenia awe oraz monitorowanie obserwowania w chmurze, które umożliwiają uruchamianie nowych serwerów aplikacji lub zamykanie istniejących na podstawie metryk.
To, co sprawia wrażenie PaaS, polega na tym, że głównym punktem sprzedaży jest system wdrażania aplikacji, który pobiera kod i kopiuje go na wszystkie serwery aplikacji w klastrze.
Jedną z reklamacji niektórych osób na temat PaaS jest to, że dostawca PaaS podejmuje decyzje dotyczące środowiska aplikacji. Wydaje mi się to propozycją wartości PaaS: jako klient możesz skoncentrować się na funkcjonalności aplikacji i pozostawić wszystkie inne szczegóły dostawcy PaaS. Płacisz za kogoś, kto zarządza infrastrukturą i zapewnia administrację systemu. Za tę prostotę płacisz im premię, tak jak w przypadku Heroku, który obsługuje swoją infrastrukturę również na ec2, tylko w sposób dla ciebie przejrzysty.
Amazon naprawdę oferuje Elastic Beanstalk na Ec2 i ich interfejsy REST, i nie stara się ukryć tego przed tobą. Wynika to z tego, że zarabiają pieniądze za pośrednictwem IaaS, a EB po prostu organizuje konfigurację grupy zasobów ec2, które możesz skonfigurować samodzielnie, biorąc pod uwagę czas i wiedzę.
Teraz, jeśli chodzi o specyfikę AMI, znowu AMI są jednym z wielu elementów ec2, które są stosowane w celu ułatwienia EB. W EB AMI nie ma nic magicznego - to po prostu Amazon linux ami wstępnie skonfigurowany do pracy z EB. Jak każdy inny interfejs AMI, możesz go uruchomić w EC2, dostosować go i uzyskać nowy dostosowany interfejs AMI z działającej instancji. Amazon Linux to w zasadzie skrzyżowanie Centos i Fedory, z łatami parawirtualizacji i wstępnie skonfigurowanymi repozytoriami mum utrzymywanymi przez Amazon.
Jak zapewne wiesz, Amazon Linux jest już skonfigurowany do instalowania łatek bezpieczeństwa podczas uruchamiania. Jednak działające instancje nie różnią się niczym od innych serwerów pod względem łatania. Patchowanie może przerwać obsługę. Jeśli jesteś bardzo zaniepokojony łataniem zabezpieczeń, zawsze możesz użyć polecenia kontenera i skonfigurować crona do uruchomienia aktualizacji yum - bezpieczeństwo z pewną częstotliwością.
Możesz również użyć interfejsu API EB, aby zmienić konfigurację EB lub zautomatyzować tworzenie nowego środowiska EB, możesz następnie zamienić je na gotowe, gdy jest ono gotowe i gotowe, a następnie zamknąć stare. Jest to opisane tutaj: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html
Podobnie jak reszta AWS, istnieje sposób programowego dostępu i kontrolowania każdej funkcji innej niż SaaS, więc nic nie stoi na przeszkodzie, aby tworzyć poprawione AMI, które są następnie wykorzystywane do tworzenia nowych środowisk EB i ich wdrażania. EB nie będzie wymuszał na tobie specyficznych wymagań konfiguracyjnych ani nie zapewnia grupy administracyjnej systemu do utrzymania infrastruktury.
źródło
Od kwietnia 2016 roku Elastic Beanstalk obsługuje automatyczne aktualizacje platformy:
https://aws.amazon.com/about-aws/whats-new/2016/04/aws-elastic-beanstalk-introduces-managed-platform-updates/
źródło
Wszystkie aplikacje i środowiska Beanstalk można konfigurować za pomocą plików EBEXTENSIONS spakowanych wraz z pakietem wdrażania aplikacji (np. Plik WAR dla aplikacji Java) z konfiguracją opartą na YAML w celu aktualizacji lub rekonfiguracji dowolnej części aplikacji, kontenera, systemu operacyjnego itp. Beanstalk jest PaaS, ponieważ jest to platforma, która umożliwia wdrażanie aplikacji bez martwienia się o podstawowy IaaS. Wszyscy dostawcy PaaS pod koniec dnia zaciemniają podstawowy IaaS poprzez jakąś formę automatyzacji. Ponieważ jednak chodzi o informatykę, o której mówimy, nie ma jednego optymalnego stanu dla wszystkich aplikacji i bez możliwości dostosowania IaaS w ramach PaaS, jesteś na łasce dostawcy usług PaaS, aby zapewnić, że Twoje aplikacje działają płynnie, szybko i bezpiecznie.
Heroku działa na AWS przy użyciu innej warstwy zarządzania, to wszystko. Jednak staje się to bolesne w tyłek, gdy musisz robić rzeczy, takie jak zabezpieczenie aplikacji. Chociaż dokładają wszelkich starań, aby efektywnie zarządzać swoim rozwiązaniem i utrzymywać bezpieczeństwo itp., Nie mogą i nie podejmą ryzyka i konsekwencji podatności na zagrożenia w Twojej aplikacji na koniec dnia. Chcą, aby ich usługi były jak najbardziej obcinające pliki cookie.
Możliwość ulepszenia IaaS leżącego u podstaw platformy jest siłą i atrakcyjnością Beanstalk IMO.
źródło