Przez jakiś czas byłem tego ciekawy. Co dokładnie oznacza „gotowy do produkcji” lub jego warianty? Ostatnio szukałem informacji o sqlite i znalazłem ten wątek , w którym wiele osób sugeruje, że sqlite nie jest gotowy do produkcji.
Znam różnicę między rozwojem / testowaniem a produkcją; moja definicja produkcji to wszystko, co jest dostarczane klientowi lub będzie wykorzystywane przez osoby niebędące programistami.
Wydaje się jednak, że istnieje wiele przedmiotów, które nie są zdefiniowane jako gotowe do produkcji. Ale w rzeczywistości mogą być idealnie dopasowane, a ludzie po prostu mają przed nimi predujice, np. Sqlite, python, produkty inne niż MS itp.
Małe biuro czy przedsiębiorstwo? Jeden użytkownik czy wielu użytkowników? Klient kontra serwer? Gdzie rysujesz linię?
źródło
Odpowiedzi:
Zależy, kim jesteś.
Definicja programisty „gotowy do produkcji”:
Definicja zarządzania „gotowa do produkcji”:
Przepraszam, że powtórzyłem to stare pytanie, ale natknąłem się na to i po prostu nie mogłem się oprzeć.
źródło
Ogólnie rzecz biorąc, „X nie jest gotowy do produkcji” oznacza, że występują problemy z brakującymi funkcjami, stabilnością i / lub skalowalnością, dzięki czemu można go stosować w mniej wymagających scenariuszach, ale może się nie powieść w przypadku wdrożeń na dużą skalę (wdrożenia na poziomie korporacyjnym i internetowym).
źródło
Istnieje wiele definicji, które można wykorzystać do „gotowości do produkcji”.
Moje osobiste są wymienione poniżej - i wszystkie są nieco praktyczne i bardzo zależne od kontekstu - w niektórych kontekstach to samo dokładne rozwiązanie można uznać za „gotowe do produkcji”, podczas gdy w innym kontekście to samo rozwiązanie - czasami dosłownie - będzie „ produkcja gotowa nad moim martwym ciałem ".
Wszystkie poniższe definicje zakładają, że „produkcja” ma kontekst „poważny wynik zależy od pomyślnego uruchomienia produktu”.
Innymi słowy, oprogramowanie prowadzące bezpłatne forum „najlepsze storczyki do uprawy w Nevadzie”, które zarabia 3 USD miesięcznie w przychodach AdSense, wykracza daleko poza kontekst produkcyjny, podczas gdy oprogramowanie układowe Space Shuttle jest mocno w tym kontekście.
Wszystko inne w skali, z niektórymi elementami nieco szarymi (np. Niektóre oprogramowanie prowadzące badania akademickie - z jednej strony nie ma oczywistego wpływu na produkcję, jeśli załamie się w ogólnej sytuacji; z drugiej strony decyzje polityczne o wartości wielu bilionów dolarów są dokonywane przez rządy na podstawie konkretnych badań).
Dwie definicje, które mogę teraz wymyślić, to:
Może być stosowany do celów, które, gdy coś się psuje, pociągają za sobą straty materialne, zgodnie ze standardową analizą ryzyka.
Nie oznacza to gwarancji braku uszkodzeń / błędów - żadne oprogramowanie tego nie potrafi - ale rozsądny poziom pewności stabilności dla zamierzonego celu.
Np. Korzyść wynikająca z zastosowania tego rozwiązania przewyższa wielkość potencjalnych strat spowodowanych pęknięciem pomnożoną przez prawdopodobieństwo jej złamania.
Dlatego też niesławne zastrzeżenie Javy „nie do użytku w elektrowniach jądrowych”.
Można zasadnie oczekiwać, że twoi rówieśnicy przeszli należytą staranność.
Na przykład, jeśli w przypadku procesu sądowego zostanie zapytany zestaw N losowych ekspertów z danej dziedziny „biorąc pod uwagę te szczegóły, czy ta produkcja była gotowa?”, Masz całkowitą pewność, że większość takich ekspertów zgodzi się z tobą, że tak było. gotowy, w oparciu o wysiłki dochodzeniowe i robocze, które można było rozsądnie podjąć w danych okolicznościach. Jeśli nie napisałeś więcej niż 10% przypadków testowych, nie przejdziesz należytej staranności. Jeśli twój program zawiódł z powodu wcześniej nieznanego błędu w kompilatorze gcc, prawdopodobnie nie zawiodłeś, chyba że w twoim oprogramowaniu działało coś ważnego dla życia, co uzasadniało poziom kontroli niezbędny do wykrycia nawet tego błędu.
źródło
SQLite nie należy używać do produkcyjnych baz danych, ponieważ jest jawnie zaprojektowany bez wielu funkcji uważanych za „wymagane”. Na przykład, blokady wpływają na całą bazę danych, nie ma kluczy obcych, a do SQLite3 nie było nawet żadnych typów danych.
Mówiąc bardziej ogólnie, oznacza to, że system, który działa dobrze dla bardzo małej liczby użytkowników (1-5) w fazie rozwoju, ulega awarii i pali się, gdy jest narażony na większe obciążenia.
Powinienem wspomnieć, że zależy to również od środowiska, w którym aplikacja jest używana. Wracając do przykładu SQLite, jest idealny do użytku w produkcji, jeśli jest tylko jeden klient. Mac OS X używa SQLite w szerokim zakresie za pośrednictwem platformy CoreData - wierzę, że obsługuje on takie rzeczy, jak baza muzyczna iTunes użytkownika i skrzynka pocztowa iMail. Tylko nie próbuj używać go jak prawdziwej bazy danych klient-serwer.
źródło
Jak sugerujesz w drugiej części pytania, „Gotowy do produkcji” niekoniecznie jest definicją rozmiaru wdrożeń, ale raczej pasuje do jego zamierzonego zastosowania i wymagań. Na przykład dla aplikacji klienckiej dla jednego użytkownika SQLite może być gotowy do produkcji. Rynek docelowy najczęściej decyduje o tym, czy aplikacja lub system jest gotowy do produkcji w zakresie korzystania z aplikacji lub systemu.
źródło
Nasza wewnętrzna definicja kompilacji, która zostanie wysłana do produkcji, jest bardzo prosta ...
Decyzja KS jest podejmowana przeze mnie i jedną inną osobę.
źródło
Cóż, moje podejście do produkcji jest gotowe, zostało podpisane przez kierownictwo. Działa, spełnia wymagania lub jego skalowalność itp. Są już spełnione, zanim będziemy mogli wypowiedzieć słowo p. Wylogowanie się jest wspólnie uzgodnionym punktem wyjścia z punktu widzenia zarządzania. Ps. Nie będę uważał, że wszystko jest gotowe do produkcji, ponieważ pozostało 7 błędów.
źródło