Czy DevOps jest ograniczony do firm oferujących produkty SaaS?


26

Praktyki opisujące DevOps, takie jak ciągła dostawa, automatyzacja itp. Dotyczą produktów zapewniających ciągłą obsługę, takich jak produkty SaaS.

Na przykład firma zajmująca się tworzeniem oprogramowania, która głównie wykonuje projekty dla innych klientów, może nigdy nie zostać utrzymana po zakończeniu projektu. Projekty klientów nie są udostępniane innym klientom, ponieważ są nieistotne.

Czy DevOps dotyczy nawet firm, które opracowują wiele projektów, które są jednorazowe? Jakie praktyki DevOps mają zastosowanie w tym przypadku, jeśli w ogóle?

Odpowiedzi:


32

Absolutnie nie!

DevOps polega na rozbiciu tradycyjnych silosów (działów) w celu zwiększenia wydajności.

Lepsza komunikacja między zespołami, lepsza widoczność oraz niezawodny i zautomatyzowany proces to sposoby na uzyskanie lepszego produktu.

Pracowałem dla dużej firmy medialnej, w której wspieraliśmy wewnętrzne narzędzie i rozwijaliśmy publiczne witryny.

Korzyści DevOps w naszym przypadku były następujące:

  • Poprzez ciągłe budowanie informujemy zespół programistów wcześniej niż później, jeśli występują problemy z integracją lub kompilacją kodu. Mogą naprawiać problemy, podczas gdy ich umysł wciąż pracuje nad fragmentem kodu, który właśnie popełnił.
  • Dzięki ciągłym testom i dostawom (do kontroli jakości) umożliwiliśmy zespołowi kontroli jakości wcześniejsze znajdowanie problemów i zgłaszanie ich wcześniej. Skróciło to czas potrzebny na znalezienie i poprawienie błędów, a także zmniejszyło złożoność tego dochodzenia.
  • Dzięki naszym narzędziom do gromadzenia i agregowania dzienników daliśmy programistom dostęp do czegoś, na co zwykle nie patrzyli (bardzo chętnie debugowali :) - zrozumienie, w jaki sposób dzienniki są widziane i wykorzystywane przez inne zespoły, poprawiło ogólną jakość dzienników
  • Często dzieliliśmy się informacjami i tworzyliśmy dokumentację w celu dzielenia się wiedzą między zespołami, próbując zburzyć mury. Rozumiejąc potrzeby Ops, tworzymy kilka przewodników, o których zawsze należy pamiętać podczas ładowania aplikacji (gdzie / jak zarządzać właściwościami itp.). Rozumiejąc rzeczywistość Dev (kod więcej funkcji, szybciej, gogogogo!) Mogliśmy sprawić, że operatorzy stworzyli serwery i klastry, które byłyby lepiej dostosowane do potrzeb dewelopera.
  • Znacząco poprawiono także ogólną jakość wdrożeń. Wdrożenia były obsługiwane przez nasz zespół, więc mieliśmy doskonałą widoczność zarówno w Ops, jak i Dev. To wyeliminowało wiele problemów związanych z „przekazaniem kodu”, w którym programista przekazałby pakiet i jednostronicowy dokument operatorom mówiącym „Zainstaluj to!”.

Ogólnie rzecz biorąc, powiedziałbym, że bez względu na to, czy aktualizujesz środowisko produkcyjne raz dziennie, czy raz w miesiącu i niezależnie od liczby klientów lub modelu biznesowego, każde przedsiębiorstwo może korzystać z lepszej komunikacji, lepszych narzędzi, lepszej widoczności, szybszej informacji zwrotnej, itp.


1
Rzeczywiście, DevOps można zastosować do praktycznie każdej organizacji programistycznej SW, nawet do dużych produktów z zaledwie kilkoma publicznymi wydaniami rocznie - dzięki ciągłemu dostarczaniu w ramach procesu rozwoju nadal mogą czerpać pewne korzyści DevOps: lepszą jakość, redukcję kosztów, przewidywalność wydania itp.
Dan Cornilescu

Odpowiedź przypomina SaaS, tak naprawdę nie wyjaśnia dobrze, w jaki sposób produkt lub usługa inna niż SaaS może skorzystać z tych praktyk.
Evgeny

Produkty, nad którymi pracowałem, nie były SaaS (wręcz przeciwnie). Ale uzasadnienie pozostaje takie samo, nie ma znaczenia, czy jesteś SaaS, czy nie, DevOps próbuje ulepszyć produkt w nietradycyjny sposób. Nie mogłem nic wiedzieć o naszym modelu cenowym ani ofercie, nie miałoby to większego znaczenia.
Alexandre

13

Mój zespół i ja jesteśmy odpowiedzialni za opracowanie „jednorazowych” produktów, które po zakończeniu są przekazywane klientowi do utrzymania lub w niektórych przypadkach są zarządzane przez nas za opłatą.

Nadal musimy utrzymywać solidny ciąg rozwoju, aby obsługiwać ciągłe informacje zwrotne od naszych klientów, aby zapewnić, że dostarczamy im coś niezawodnego i sprawdzonego w działaniu.

Chociaż klient nie dba o DevOps (w większości przypadków), nadal jest dla nas pomocny. Dzięki DevOps możemy szybko wypuszczać nowe wersje, dzięki czemu klienci mogą zobaczyć opinie w ciągu kilku minut, a nie godzin, a także jesteśmy w stanie wykryć wszelkie błędy / błędy dzięki naszym testom za pośrednictwem Jenkins / Travis.

Aby zapewnić, że nasze strategie wdrażania są takie same we wszystkich projektach, koncentrujemy się na konteneryzacji naszych aplikacji. Korzystając z Dockera, możemy łatwo przekazać aplikację naszym klientom.

Koszt zaoszczędzony przez DevOps jest trudny do ustalenia. Mamy dodatkowe koszty w postaci oprogramowania, które wybieramy do instalacji (Travis, Jenkins, Puppet, co masz), ale oszczędzamy również czas i pieniądze, naprawiając błędy / szybko informując klientów. Nasz szybki czas reakcji sprawia, że ​​nasi klienci są zadowoleni, a nasze portfele są zadowolone.


Czy możesz podać powody i korzyści, dlaczego jest to ważne? Czy klienci rzeczywiście troszczą się o Twój rurociąg, czy tylko ukończony projekt w obiecanym terminie i cenę, którą muszą zapłacić? Czy możesz obniżyć koszty, nie robiąc tych wszystkich rzeczy „devops-y”? Czy możesz poświęcić więcej czasu na projekt, nie robiąc tych rzeczy i zdobyć więcej pieniędzy na projekty (ponieważ jest on dłuższy)?
Evgeny

1
@Evgeny DevOps pomaga ukończyć projekt na czas i budżet z powodów wyjaśnionych w mojej odpowiedzi. Ograniczając DevOps, ograniczyłbyś również korzyści, które wyjaśniłem. Budowanie i testowanie często pomaga w utrzymaniu budżetu i terminowości. Znalezienie błędu później kosztuje więcej pieniędzy i zajmuje więcej czasu, aby go naprawić, zostało udowodnione w kółko. Klient nie dba o rurociąg, ale im dłużej będziesz czekać na jego opinie, tym bardziej kosztowne i czasochłonne będzie przepisywanie.
Alexandre

Czy to nie tylko zwinne oprogramowanie dla deweloperów?
Evgeny

@Evgeny Zaktualizowałem swoją odpowiedź, aby wyjaśnić. Używamy Agile, ale to nie znaczy, że nie możemy mieć mentalności DevOps ..
Turtle

1
@Evgeny prawdopodobnie możesz zaoszczędzić trochę, nie utrzymując testów jednostkowych i testów akceptacyjnych, ale to buduje dług techniczny, który jest anty-wzorcem DevOps. Możesz sobie z tym poradzić przez kilka tygodni lub miesięcy, ale wkrótce skończysz (prawdopodobnie) z trudnym do utrzymania bałaganem, którego nie można przetestować.
Steve Button

3

Pracowałem dla firm produkujących oprogramowanie jako produkty z folią termokurczliwą, jako w pełni zainstalowane i obsługiwane wdrożenia oraz jako kod osadzony w urządzeniach. We wszystkich tych firmach DevOps zapewnia niezbędne wsparcie dla rozwoju:

  • Zautomatyzowane, powtarzalne kompilacje oprogramowania ze znanymi, kontrolowanymi konfiguracjami kompilatorów, bibliotek i innych narzędzi do kompilacji.
  • Zautomatyzowane, powtarzalne testy systemowe do testów regresji i nowych testów funkcjonalności.
  • Inne zautomatyzowane i regularne działania (na przykład stale aktualizowane przykładowe zrzuty ekranu dostępne we wszystkich obsługiwanych językach, dla tłumaczy do weryfikacji i dla autorów technicznych do włączenia do podręczników użytkownika).

We wszystkich przypadkach są to rzeczy, które indywidualni programiści mogliby robić jednorazowo, ale nie byłoby to dobre wykorzystanie czasu programisty, ani nie mieliby takiej samej kontroli konfiguracji, jaką mają zautomatyzowane kompilacje.


Automatyzacja nie jest devops. Te same komentarze, co w końcu odpowiedź Davida Bocka (przepraszam, mój komentarz zaginął w czasie, gdy głosowałem, po prostu to zauważyłem)
Tensibai,

3

Działania związane z opracowywaniem i wdrażaniem oprogramowania wcześniej nie wymagały głębokiej integracji między działami. Ale na dzień dzisiejszy konieczna jest ścisła współpraca wszystkich działów (Rozwój, Operacje IT, Zapewnienie jakości itp.).

Dla programistów zmiana jest tym, za co otrzymują zapłatę. Biznes zawsze potrzebuje zmian, które pasują do współczesnego świata. To zrozumienie popycha programistów do wprowadzenia maksymalnej możliwej liczby zmian. Specjaliści IT mają inne rozumienie, w którym zmiana jest szkodliwa. Każdy z nich uważa, że ​​działa poprawnie, z korzyścią dla firmy. Rzeczywiście, jeśli rozważymy je osobno, obie mają rację.

Wszyscy pracownicy muszą zrozumieć, że są częścią jednego procesu. DevOps kultywuje myślenie, co pozwala uświadomić sobie, że osobiste decyzje i działania każdego powinny być ukierunkowane na realizację jednego celu. Sukces należy mierzyć w odniesieniu do całego cyklu rozwoju od dostawy, a nie od sukcesu poszczególnych ról. W wyniku ścisłej współpracy między programistami i specjalistami ds. Konserwacji powstaje nowa generacja inżynierów, którzy wykorzystują najlepsze osiągnięcia obu dyscyplin i łączą je z korzyścią dla użytkownika. Przejawia się to w pojawieniu się zespołów wielofunkcyjnych z doświadczeniem w projektowaniu, zarządzaniu konfiguracją, zarządzaniu bazami danych, testowaniu i zarządzaniu infrastrukturą.

Metodologia jest więc przydatna nie tylko w SaaS.


0

Ani trochę. Chociaż w tym wątku są już świetne przykłady, chciałbym podzielić się własną anegdotą. W 2001 roku odziedziczyłem projekt oprogramowania z wydaniem, które wymagało stworzenia płyty CD. Dokumentacja procesu wydania zawierała 40 (!) Kroków udokumentowanych przez poprzedniego inżyniera, w tym kilka śmiesznych odręcznych instrukcji, takich jak „otwórz ten plik konfiguracyjny i zmień nazwę pliku .jar w wierszu 41, aby uwzględnić numer wersji nowa wersja ”.

Agresywnie zautomatyzowaliśmy każdy etap tego procesu kompilacji, zastępując ręcznie pisane instrukcje takimi rzeczami, jak „łatka” skryptowana przez bash. Musieliśmy nawet otworzyć bilety u naszego zewnętrznego dostawcy narzędzia instalacyjnego, aby pliki ich projektów były łatalne.

Po zautomatyzowaniu tego procesu kupiliśmy „CD Jukebox”. Każdej nocy po przejściu testów maszyna do tworzenia automatycznie tworzy nową instalacyjną płytę CD. Nasi testerzy mogli przyjść następnego dnia rano, wziąć dysk i upewnić się, że wszystko można zainstalować.

Z pewnością mamy ściślejsze sprzężenia zwrotne, gdy możemy wdrożyć oprogramowanie jako usługę, ale obowiązują podstawowe zasady automatyzacji, sprzężenia zwrotnego, czasu cyklu, małych wydań itp.


Jest to związane z automatyzacją, ale w żaden sposób nie powiązane z organizacją devops, nie widzę nigdzie żadnego odniesienia do zespołu dyscyplin plury, po prostu automatyzuje rzeczy, które dziedziczą
Tensibai

To był rok 2001 ... na długo przed DevOps. To nie była tylko automatyzacja, uważam, że usprawniło to zarządzanie projektem w dokładnie ten sam sposób, który ostatecznie został nazwany „Kulturą” DevOps. Jako taki jest przykładem postawy DevOps poza organizacją SaaS.
David Bock,

DevOps nie dotyczy automatyzacji ani zarządzania projektami. Chodzi o rozbicie organizacji opartej na silosach u podstaw. Przepraszam, nie sądzę, aby ta odpowiedź naprawdę dotyczyła pytania (nie oznacza to, że jest nieciekawa, ale po prostu nie we właściwym miejscu IMO i nie widzę, gdzie mogłaby być na miejscu, może przyjść później)
Tensibai,

Spróbuję jeszcze raz wyjaśnić - dzięki tak konsekwentnemu i szybkiemu wycinaniu płyty CD możemy uzyskać informacje zwrotne z kontroli jakości znacznie szybciej niż wcześniej. To zmniejszyło silos. Nie wyeliminowało go, ponieważ zajęło to kolejny rok lub dwa, zanim wyłączyliśmy lenno wokół scentralizowanych budżetów na działania, ale z pewnością był to decydujący krok w podejmowaniu działań. Wiedzieliśmy też znacznie wcześniej, kiedy proces wydania został przerwany. Uważam wiele takich rzeczy za moją osobistą ścieżkę do DevOps.
David Bock,

Ten ostatni komentarz nadaje więcej sensu tej odpowiedzi pod tym pytaniem, należy ją edytować, aby ją dołączyć, nadal uważam, że to nie pasuje do tego formatu, ale wydaje się, że moja pozycja jest błędna, gdy obserwuję ogólną ewolucję w tej prywatnej wersji beta, ... to zależy od Ciebie. Nie mogę usunąć mojej opinii bez edycji informacji
Tensibai
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.