Co to jest produkcja?

Rozmawiałem z wieloma kolegami praktykami analityki, którzy są przekonani, że chcą, aby ich zespół nigdy nie dotykał „produkcji”. Chociaż istnieją powody, aby zachować ostrożność przy wprowadzaniu zmian, które mogą mieć wpływ na klientów, uważam, że w miarę jak oprogramowanie staje się coraz bardziej oparte na danych, krytyczne jest znalezienie bezpiecznych sposobów na umożliwienie zespołom analitycznym budowania i wdrażania aplikacji opartych na danych.

Co to jest produkcja?

Po pierwsze, kilka definicji pojęć. „Produkcja” to środowisko. Powszechnie istnieje kilka środowisk, w których kod może być uruchamiany (w kolejności progresji):

  • Lokalny rozwój
  • Rozwój zdalny
  • Staging / QA
  • Produkcja

Każda „aplikacja” będzie miała wiele środowisk, z których jedno będzie tym, z którym będą się stykać użytkownicy niebędący programistami. Środowisko, z którym mają do czynienia użytkownicy niebędący programistami, jest zwykle nazywane „produkcyjnym”.

Tutaj moja teza: Krytyczne jest, aby zespoły analityczne miały wpływ na aplikacje skierowane do klienta1 Istnieją oczywiście wyjątki od tej tezy, a różne typy aplikacji będą miały różne „stopnie” napędzania danymi. Z historycznego punktu widzenia, niektóre firmy wahały się przed uczynieniem swoich aplikacji bardziej sterowanymi danymi, ponieważ ich inżynierowie oprogramowania nie posiadali umiejętności w zakresie danych i obawiali się pozwolić zespołowi analityków na wpływ na aplikację. Powinieneś oczywiście podejmować decyzje o dodawaniu nowych funkcji w oparciu o to, jak bardzo będą one wartościowe, a nie tylko dlatego, że jakiś bloger ci o tym powiedział. Jeśli nie jest możliwe, aby umożliwić to w bezpieczny sposób, to powinieneś zmodyfikować swoją aplikację skierowaną do klienta w taki sposób, aby to umożliwić.

Jeśli uważasz, że ten ostatni akapit jest szokujący, mam zamiar zdmuchnąć twoje skarpetki: wszyscy twoi analitycy wdrażają się do produkcji każdego dnia, już. Pozwól, że przeprowadzę cię przez moją ulubioną2 i najbardziej obrzydliwą. Ludzie uwielbiają mnie na przyjęciach. linia pytań:

  • Narzędzie BI, które konfigurujesz, aby dostarczać raporty użytkownikom w firmie – czy to nie jest produkcja?
  • Skrypt R, który zbiera dane, czyści je i dostarcza wizualizacje do pliku PPT, który jest wysyłany e-mailem do zespołu kierownictwa – czy to nie jest produkcja?
  • Plik Excela (wypełniony kodem), który jest używany do podejmowania decyzji o inwentaryzacji wartej wiele milionów dolarów – czy to nie jest produkcja?

Pamiętaj: tylko dlatego, że nie masz środowiska programistycznego nie oznacza, że twoje środowisko skierowane do użytkownika nie jest produkcyjne!

W przypadku wielu startupów, ludzie używają „produkcji” jako skrótu w odniesieniu do ich aplikacji webowej skierowanej do użytkownika (w zależności od etapu firmy, może to być lub nie być nadal monolit railsowy). Poza powiedzeniem, że powinieneś przestać używać takich niejasnych terminów, chcę opowiedzieć się za tym, aby zastanowić się, dlaczego możesz chcieć umożliwić analitykom i naukowcom nie będącym inżynierami wdrażanie aplikacji skierowanej do klienta. Na koniec przedstawię kilka strategii, jak można to wykorzystać.

Why Empower the Analytics Team to Impact Customers?

Building data-driven applications is table-stakes for modern software engineering and product development. Aplikacje jutra będą miały dane zintegrowane od łodygi do rufy i jeśli istnieje ściana między ekspertami od danych a programistami aplikacji, będziesz mieć zły czas.

Oto kilka przykładów produktów opartych na danych, które możesz chcieć zbudować:

  • Implement Thompson sampling for multi-armed bandit testing site variants
  • Cluster customers for targeted marketing emails or landing page variants
  • Predict customers likely to churn and give only those customers a coupon code
  • Introduce product recommendation / search ranking algorithms

Jeśli chcesz zbudować te napędzane danymi produkty, będziesz chciał, aby twoi eksperci od danych pracowali nad nimi. Oto kilka powodów, dla których warto pomyśleć o zatarciu granicy między twoimi Analytics3Jak zwykle, w tym poście używam terminu „Analytics” i „analitycy” w możliwie najszerszy sposób, w tym naukowcy zajmujący się danymi, analitycy danych i inni eksperci od danych. zespół i reszta twojego zespołu inżynierii oprogramowania:

  • Naukowcy zajmujący się danymi są twoimi ekspertami od algorytmów, a ciągła integracja jest ważna
  • Chcesz, aby twoja aplikacja była zasilana danymi!
  • Analitycy znają dane najlepiej, więc są mniej skłonni do popełniania błędów
  • Produkowanie cudzej pracy to gówniana robota
  • Blokowanie iteracji analityki za pomocą priorytetyzacji zaangażowania spowalnia wszystkich i prowadzi do frustracji

Pozwalanie menedżerom produktu lub projektantom na wdrażanie nowych treści do witryny za pomocą CMS jest niekontrowersyjne. Jeśli obsługuje on markdown, to również powinno być banalne. Można też pozwolić analitykom zmieniać wagi algorytmów poprzez CMS, więc dlaczego nie pozwolić im wdrażać modelu tak długo, jak model ten jest zgodny z dowolnym API, którego oczekuje aplikacja? Oczywiście, ponieważ zespół analityków może nie mieć wszystkich narzędzi lub umiejętności do pracy nad złożoną aplikacją internetową, należy upewnić się, że mogą oni wprowadzać te zmiany w sposób, który jest zarówno bezpieczny, jak i skuteczny (tzn. mogą używać narzędzi, które znają, a inne części są abstrakcyjne).

Jak upoważnić zespół analityków do wpływania na klientów?

Teraz, gdy omówiliśmy, dlaczego może to być dobry pomysł, możemy porozmawiać o sposobach, aby to zrobić bezpiecznie i skutecznie. Oto kilka przykładów, które widziałem w przeszłości (i chciałbym usłyszeć o więcej, jeśli znasz jakieś dobre wzorce):

  • Mikro usługi
    • Algorytm rankingu produktów może żyć za API, tak że zespół analityków może wdrożyć zmiany bez dotykania reszty aplikacji
  • Profile użytkowników
    • Możesz utrzymywać kluczowe atrybuty użytkownika w tabeli, do której twoja aplikacja internetowa ma dostęp (np.g., przez cache redis), która jest zarządzana przez zespół analityków (ETL, ML, cokolwiek, tak długo jak API się nie zmienia)
  • Wagi / Wyniki
    • Jeśli masz model, który działa na podstawie wag lub atrybutów, aby stworzyć „wynik” (np, wynik ryzyka oszustwa), to możesz przechowywać te wagi w tabeli, do której zespół analityków może mieć dostęp w trybie zapisu

Pisałem już wcześniej o wzorcu projektowym code-as-configuration i ogólnie jest to świetny wzorzec dla umożliwienia osobom nie będącym inżynierami oszczędnego wdrażania kodu do środowisk produkcyjnych. Przyjaciel bloga Harlan Harris napisał również o używaniu języków specyficznych dla domeny, aby ułatwić testowanie, koordynowanie i wdrażanie modeli uczenia maszynowego w produkcji.

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.