Jestem całkiem nowy w całym stosie Netflix OSS i ogólnie wdrożeniach. Jako tło dla mojego obecnego poziomu wiedzy, moją główną rolą jest jako inżynier aplikacji front-end. Jednak podoba mi się strona operacyjna rzeczy, dlatego próbuję skonfigurować nową strategię wdrażania i narzędzia do nowego projektu.
Nasze cele
- Bardzo łatwe wdrożenia (chcemy nacisnąć przycisk, aby zaktualizować produkcję)
- Zautomatyzowane wdrożenia w środowiskach testowych (za pomocą Jenkins)
- Łatwość konserwacji (mamy aplikację do napisania, nie chcemy spędzać czasu na majstrowaniu przy problemach produkcyjnych)
- Możliwość obsługi architektury zorientowanej na usługi (wiele małych aplikacji, różnych języków i magazynów danych)
- Wystarczająca elastyczność, aby zapewnić, że nie będziemy musieli zmieniać strategii w najbliższym czasie (już próbujemy uciec od RightScale)
Jesteśmy w porządku z nieco większym czasem początkowej konfiguracji, jeśli to pozwoli nam zaoszczędzić trochę problemów w przyszłości.
Tak więc, słuchając podcastów, oglądając rozmowy Ops i czytając mnóstwo postów na blogu, w oparciu o nasze cele i to, co uważałem za najlepsze praktyki, zaczęliśmy tworzyć plan, używając Asgard, zwijamy naszą paczkę do słoika i zwijamy to w AMI.
Mieliśmy to wszystko zaplanowane i podoba nam się zalety procesu w porównaniu z użyciem serwera szefa kuchni i konwergencji instancji w locie (czuliśmy, że jest to podatne na błędy, biorąc pod uwagę nasz ograniczony harmonogram i brak zrozumienia wokół przepływu pracy serwera szefa kuchni). Jednak współpracownik rozejrzał się trochę i czuł, że Elastyczna Fasolka szparagowa spełnia nasze potrzeby.
Przyjrzałem się temu i stworzyłem środowisko testowe z plikiem WAR i dołączoną bazą danych RDS. Wydaje się, że wszystko działa i uważam, że możemy zautomatyzować wdrażanie w środowisku testowym przy użyciu Jenkins za pośrednictwem interfejsu AWS API. Wydaje się dość proste ... może zbyt proste.
Zastanawiam się, jaki jest haczyk? Jeśli Elastic Beanstalk jest tak prosty i skuteczny, dlaczego nie mówi się o nim więcej? Trudno mi znaleźć wystarczającą liczbę obiektywnych opinii i faktów na temat dwóch różnych strategii wdrażania, więc pomyślałem, że zapytam.
Czy używasz Elastic Beanstalk? Jeśli tak, to dlaczego i jakie czynniki prowadzą do tej decyzji? Co lubisz a czego nie lubisz?
Jeśli nie używasz Elastycznej Fasoli, ale zastanawiasz się, co używasz i dlaczego nie użyłeś Elastycznej Fasoli?
Jakie są zalety i wady strategii wdrażania opartej na elastycznej fasoli dla SOA? To znaczy, czy Elastic Beanstalk działa dobrze z wieloma małymi aplikacjami, które działają w oparciu o siebie nawzajem?
źródło
Widzę sens utraty kontroli, ale niekoniecznie widzę nakazaną bezpaństwowość. Wszystko, co naprawdę robi eb, to wdrażanie automatyzacji, która, nawiasem mówiąc, jest niesamowita. Widzę sens dużego repozytorium. Ogólnie myślę, że rozdzielenie logicznych funkcji aplikacji na osobne aplikacje bean, a następnie posiadanie środowisk „staging” i „prod” pod spodem, jest naprawdę fajne. Mamy środowiska modułów, takie jak uploader, nie robi to wiele i teoretycznie powoduje to duże koszty, ale wtedy używasz mniejszych instancji tylko więcej. Prowadzimy scentralizowany nginx i musieliśmy napisać wiele niestandardowych uchwytów komunikatów sns, aby powiadomić ngnix o zmianach w polityce automatycznego skalowania. Innym dużym problemem eb jest niezdolność do równoważenia obciążenia turd, ponieważ używamy ngnix, dlaczego? elb nie obsługuje websocket.
źródło