docker - realne zastosowanie

1
aurel napisał(a):

Oczywiście, można hardkodować. Ale można też postawić dockera ;)
Docker będzie lepszym rozwiązaniem tam, gdzie praca jest bardziej "dynamiczna", a założenia są uściślane w trakcie pracy. Niestety mam z tym do czynienia dość często. Rozmowy w stylu:

  • Ej, a jak mam niby wyświetlić to, bez tamtego?
  • Ano fakt, czekaj, to zaraz dorobię
  • Dlaczego przestało działać to a tamto?
  • Aaa bo tu się nazwa parametru zmieniła

Wychodzi na to, że w takim razie docker rozwiązuje problemy procesowo-organizacyjne, a nie programistyczne. :)

Pozostaje współczuć:

  • programistom frontendu - domyślam się, że jak im nagle backend przestaje działać, to jest to raczej frustrujące;
  • programistom backendu - bo frontendowcy wiecznie czegoś chcą, co jest raczej frustrujace;
  • użytkownikom - bo chaos podczas wytwarzania softu zazwyczaj skutkuje chaosem w działaniu aplikacji.

Poza tym, frontend nie tylko wyświetla dane z backendu, ale czasem też coś do backendu wysyła. Oprogramowując wysyłanie danych muszę uwzględnić też sytuacje błędne (czyli np. api nie odpowiada; i w sumie przy wyświetlaniu też). Jak się uprzeć, to też można to hardkodować. Mi jednak wygodniej pracować z prawdziwym systemem.

A w czym system z dockera jest prawdziwszy od takiego postawionego na serwerze testowym?

0

@wiewiorek: piszesz "aplikacja ASP.Net MVC" i myślisz właśnie o jednej aplikacji odpalane pod IIS. Czy w takim przypadku używanie dockera daje wyraźne korzyści? Raczej nie, co nie znaczy że jest to powodem by go odrzucać. Natomiast "aplikacja" to dosyć często system, a więc coś co składa się z kilku/kilkunastu/kilkudziesięciu aplikacji, API, Windows services i aplikacji konsolowych. W takim przypadku używanie kontenerów właśnie rozwija skrzydła i znacznie ułatwia zarządzanie deploymentami, konfiguracją i load balancingiem.

4

@somekind: Raczej w miarę regularnie frontendowieć musi zrobić rzeczy które lepiej zrobić na lokalnej bazie/środowisku, a nie na teście np.

  • Dodaje 100 kont administratora i patrzy jak się wyświetla?
  • Zapycha kolejke 50.000 requestami i patrzy czy wygenerowany raport odpowiednio wygląda?
  • Chce sprawdzić czy komunikat ostrzegająćy przed skasowaniem zbyt wielu orderów działa?

W wielu przypadkach warto mieć możliwość postawienia sobie lokalnego backendu, żeby nie smiecić na teście, i nie przeszkadzać innym osobm które najcześciej korzystając z testu mogą nie spodziewać się że ktoś im nagle skasuje ordera którego oni zrobili. (Nawet jeżeli powinni się tego spodziewać, dokładnie z tego pwodu że nie jest to środowisko lokalne...)

Jasne że da się inaczej. W końcu każdy może sobie odaplić skrypt który wszystko instaluje, ale własnie chyba po to mamy używać dockera żeby było prościej i żeby nie było problemów w styłu "u mnie działa".

Każdemu polecam zaznajomienie się z dockerem, a potem jeżeli ktoś w swoim projekcie nie widzi żadnego zysku z jego używania, to niech go nie używa, proste.

0

Jezeli uzywacie CI/CD to jest szereg plusow:
-latwiej puszczac testy (docker z n unitem)
-latwiej puszczac buildy (docker z msbuildem)
-latwiej zachowac dynamicznosc tworzenia srodowisk (VM jest duza i ciezka, a kontener nie i stawia sie 'on demand', gdy jest potrzebny)
-standaryzacja plikow (infrastructure as code), pipeline (jenkinsfile + dockerfile), plik jest latwy do odtworzenia, latwo sledzic zmiany itd.

Sa tez inne tematy - deploy gotowych obrazow, osczednosc zasobow itd.

0
Noozen napisał(a):

@somekind: Raczej w miarę regularnie frontendowieć musi zrobić rzeczy które lepiej zrobić na lokalnej bazie/środowisku, a nie na teście np.

  • Dodaje 100 kont administratora i patrzy jak się wyświetla?
  • Zapycha kolejke 50.000 requestami i patrzy czy wygenerowany raport odpowiednio wygląda?
  • Chce sprawdzić czy komunikat ostrzegająćy przed skasowaniem zbyt wielu orderów działa?

@Noozen: podoba mi się Twoja argumentacja, chociaż nie do końca do mnie trafia.
Pierwsza sprawa jest taka, że backendowiec też może mieć potrzebę dodania wiele danych do systemu i sprawdzenia, czy nadal działa. No i jak te dane są już dodane przez backendowca, to frontendowiec może z nich też skorzystać.

W wielu przypadkach warto mieć możliwość postawienia sobie lokalnego backendu, żeby nie smiecić na teście, i nie przeszkadzać innym osobm które najcześciej korzystając z testu mogą nie spodziewać się że ktoś im nagle skasuje ordera którego oni zrobili. (Nawet jeżeli powinni się tego spodziewać, dokładnie z tego pwodu że nie jest to środowisko lokalne...)

Zawsze mnie to zastanawia - w jakiej branży można w ogóle kasować zamówienia? Co na to księgowość i skarbówka?

1

@somekind:

backendowiec też może mieć potrzebę dodania wiele danych do systemu i sprawdzenia, czy nadal działa. No i jak te dane są już dodane przez backendowca, to frontendowiec może z nich też skorzystać.

po co się uzależniać?

2

@somekind: Nie rozumiem, produkujesz się tu pod określoną tezę że "docker w sumie jest niepotrzebny"? Czy jak źle zinterpretowałem Twoje komentarze?:D Tam chyba przypadkiem nawet trafnie podsumowałeś, tak Docker w w cholerę ułatwia rozwiązywać zadania procesowo-organizacyjne. Mówisz o zdalnym środowisku testowym, dzięki Dockerowi odpalasz takie środowisko lokalnie w ciągu 20 sekund. Nie musisz się męczyć z instalacją Postgresa, Redisa, nginx, 40 zależoności backendu i frontu. Jedna komenda i całe środowisko masz ustawione i działające z gwarancją odtworzenia gdziekolwiek chcesz beż żadnego problemu. O tym jak to usprawnia CI/CD nawet nie będę się rozwodził bo po co mówić o kwestiach oczywistych? Oczywiście Docker nie zastępuje środowiska testowego o którym mówisz, ale pomaga lepiej z nim pracować i przewidywać szybciej ewentualne problemy. Konteneryzacja pozwala zachować porządek i stabilność, ułatwia skalowalność i kontrolę nad wszystkimi komponentami tworzonego systemu.

1
cmd napisał(a):

@somekind: Nie rozumiem, produkujesz się tu pod określoną tezę że "docker w sumie jest niepotrzebny"?

Nie, nie stawiam tu żadnych ogólnych tez. Wierzę, że Wam pomaga i jest potrzebny. :)
U mnie w pracy się go nie stosuje, więc nie mam doświadczeń i po prostu zastanawiam, czy jego używanie rozwiązałoby jakieś moje problemy. Dlatego tak dopytuję wszystkich, i szukam dziury w całym, bo może coś mi umyka w tym wszystkim, gdyż jak na razie nie widzę zastosowania u siebie.

Mówisz o zdalnym środowisku testowym, dzięki Dockerowi odpalasz takie środowisko lokalnie w ciągu 20 sekund. Nie musisz się męczyć z instalacją Postgresa, Redisa, nginx, 40 zależoności backendu i frontu.

O - i np. 20 sekund brzmi super, to zapewne dla wielu osób jest świetny argument "za".
Ale ja używam środowiska testowego, które już istnieje. Właśnie dzięki temu nie muszę się męczyć z instalowaniem wszystkiego lokalnie. To pod tym względem docker mi nie pomoże.

Jedna komenda i całe środowisko masz ustawione i działające z gwarancją odtworzenia gdziekolwiek chcesz beż żadnego problemu.

Jak rozumiem "gdzie chcę" oznacza albo u mnie lokalnie, albo na jakimś serwerze, czy to testowym, czy produkcyjnym. Dla mnie de facto ogranicza się to do chmury, a tam wszystko i tak idzie z gotowych obrazów.

O tym jak to usprawnia CI/CD nawet nie będę się rozwodził bo po co mówić o kwestiach oczywistych?

No właśnie dla mnie nie jest to oczywiste, bo mimo braku dockera nie mam problemów ani z CI ani z CD.

Tak sobie myślę, że ja po prostu trafiłem do firmy, która od dawna ma już własne zbyt zaawansowane narzędzia i procesy rozwiązujące te problemy, które u Was rozwiązuje docker, dlatego nie zauważam dla niego miejsca. To pewnie jest pomocne w firmach, które jeszcze nie miały okazji ogarnąć sobie takiego środowiska, a teraz mogą po prostu skorzystać z darmowego rozwiązania zamiast tworzyć własne.

6
somekind napisał(a):

Zawsze mnie to zastanawia - w jakiej branży można w ogóle kasować zamówienia? Co na to księgowość i skarbówka?

Uprawiasz demagogię. U was zamówienia się nie zmieniają? Użytkownikom nie zmieniają się prawa. Batchy nocnych i żadnych procesów nie macie?
Pracujecie na danych w ROMie czy tez wyrytych na kamiennych tablicach?

Generalnie docker umożliwia do pewnego stopnia pozbycie się chorych koncepcji typu stage DEV, INT, Q, PREPROD itd
Co by nie wciskać o jakiś problemach organizacyjnych, to jednak w normalnym świecie (poza sf somekinda),

  • ludzie zmieniają dane w systemach. Przez to pracowicie tropione heisenbugi szlag może trafić,
  • ludzie wgrywają nowe wersje i (o zgrozo) robią bugi (przez to juz np. od 2 tygodni nie mogę przetestować e2e procesu w jednym banku, bo angażuje około 15 systemów i jeszcze nie było dnia żeby w jakimś bug się nie objawił, w jednym naprawią to w drugim zepsują, a to dlatego, że własnie mają tam takiego pielęgnowanego INTa),
  • utrzymanie takich INT, DEV kosztuje, a zawsze się okazuje, że może przydać się kolejne (typowo np. na testy wydajnościowe... i co wtedy? w jednej firmie ładnie pisali, że dziś nie wolno korzystać z INT bo testy wydajnościowe :-) , cudo :-) )
  • są ludzie, którzy potrzebują pracować z pociągów i samolotów - na razie takich VPNów, żeby do dobrze działało nie ma,

Dlatego, a) używam mocków do częsci systemów, b) te które potrzebuje fizycznie (i mogę to wymusić) staram się dostać dockerem (buildy tez mogą robi image dockerowe). Odpada jakieś konfigurowanie itp. Z tego samego powodu wolę programy instalować z .msi lub pakietu .deb niż ręcznie wgrywać pliki.

U obecnych klientów ząłatwia mi to możliwośc zdalnej pracy, oraz trzymanie specyficznych przypadków testowych.

W idealnej sytuacji, ale widziałem to tylko w jednej firmie, cały system można postawić "prawie jednym klikiem" (ale nie było to kilka sekund, kilkadziesiąt aplikacji z bazami danych itd trochę trwa zanim wszystkie ruszą, nie mówiąc o tym, że nawet na moim lapku nie miały szansy ruszyć wszystkie (nawet nie próbowałem) ).

Jak do tej pory jedyni ludzie, którym nigdy te INT, DEVy itd nie przeszkadzały i nie widzieli problemu to byli niemieccy architekci. Nie musieli się w tym grzebać, a z wieży problemów nie widać.
Tak, że tego... tu pisze do somekinda. Jak uważasz, że jest fajnie to może spójrz w dół i zobacz, czy nie siedzisz za wysoko.

Żeby nie było, docker rozwiązuje jedne problemy, za to wprowadza tony innych, logi, security, zarządzanie deploymentem. Nagle się okazuje, że potrzebujesz tony kolejnych tooli :-(.
Można tu utkwić w niekończącej się toolizacji :-( Utrzymanie "dockera" też kosztuje, nawet IMO więcej niż typowy DEV, INT i Q raczem wzięte. Dopiero przy większej ilości i tworzonych ad hoc środowisk widać jakiś zysk dla ludzi z infrastuktury. Dla programistów ulga jest dość szybko.

0

Docker separuje w kontenerze pewne usługi od reszty systemu i danych. Uruchamiajac daną usługę w dockerze, separujesz od reszty systemu, nie tworząc jednocześnie wirtualki. Z jednej strony to kiepskie, z drugiej nie masz dodatkowego narzutu wydajnościowego, co przy ograniczonym budżecie jest ważne (tak, tak, duże firmy mają budżet na serwer co pociągnie n maszyn, ale nie zawsze firma IT jest dużą firmą). Jedyne co żałuję, to że dockera nie ma na windowsa.

0
somedev napisał(a):

Jedyne co żałuję, to że dockera nie ma na windowsa.

Korzystam w pracy z dockera na windows (10) :-) Ostatnio jest nawet całkiem ok.

2

@somekind no generalnie tak, jak nie widzisz potrzeby, to prawdopodobnie nie potrzebujesz. Jeśli ktoś jednak miałby dzisiaj wybierać, jak rozwiąże dane problemy, to użyłby raczej gotowego narzędzia, zamiast pisać własne. Tym bardziej, że docker jest darmowy, a chmura jednak raczej płatna.

Tak dodam jeszcze, że ja w pracy to akurat tego nie używam, choć widzę miejsca, gdzie by się przydał. Przydałby się w pracy międzyzespołowej, bo teraz często jest tak, że czekam tydzień, aż mi postawią środowisko testowe (nie dlatego, że tyle to trwa, tylko dlatego, że mają taką kolejkę zadań).

Tak naprawdę dockera doceniłam jak wpadłam na pomysł, by zrobić coś w coyote ;) Instrukcja instalacji na githubie mocno zniechęcała. Jakiś czas wcześniej podjęłam próbę instalacji z instrukcji, ale po kilku godzinach różnych błędów stwierdziłam, że tyle czasu to ja nie mam na zabawę. Fakt, że na pierwszą konfigurację dockera też straciłam sporo czasu, bo było to dla mnie całkiem nowe zagadnienie, ale jak już się raz skonfigurowało, to teraz sobie nie wyobrażam robić tego inaczej.

1

@jarekr000000: pytanie na serio. Zalozmy ze hostujesz rozwiazanie z Dockerem na Windowsie. Co w przypadku Windows Updatow ? Nie ma przez to problemow ze system padnie (bo kilka rebootow, albo performance lezy bo sie patche dociagaja) ?

I jeszcze dwa komentarze:

  • jak sie chce faktycznie testowac performance to musi byc oddzielne srodowisko.
  • jak sie pracuje na cloudzie (np. AWS) i jest ogarniety Devops ktory stworzyl np. skrypty Ansible, to nowe srodowisko mozna bardzo szybko postawic albo sklonowac w razie potrzeby.
0
WhiteLightning napisał(a):
  • jak sie pracuje na cloudzie (np. AWS) i jest ogarniety Devops ktory stworzyl np. skrypty Ansible, to nowe srodowisko mozna bardzo szybko postawic albo sklonowac w razie potrzeby.

O właśnie. Jak dla mnie, to nie docker jest taki fajny, tylko te koncepcje stałych, pielęgnowanych środowisk, których nie da się łatwo zamrozić, kopiować są męczące (nieefektywne).

Nie do końca o dockerze, ale to jest chyba prezentacja, która swego czasu zainspirowała paru kolegów z paru firm do zmian. (chyba, bo nie mam czasu teraz przejrzeć czy to na pewno ta, ale autor i tytuł się chyba zgadza ).

1

@somekind: Nie będę Cię męczył żeby coś tu udowadniać bo w pełni rozumiem że Docker w wielu miejscach nie musi być ani super użyteczny ani wykorzystywany, ale odniosę się do jednej rzeczy jeszcze.

Ale ja używam środowiska testowego, które już istnieje. Właśnie dzięki temu nie muszę się męczyć z instalowaniem wszystkiego lokalnie. To pod tym względem docker mi nie pomoże.

Ok masz swoje środowisko testowe zdalne. Załóżmy teraz że próbujesz dodać jakiś nowy serwis do systemu. Weźmy przykład zmiany silnika DB z MySQL na Postgre (przejaskrawiony mocno) I teraz pytanie co robisz?

  1. Jesteś również opsem który pilnuje funkcjonowania środowiska testowego, bierzesz się za mozolną instalacje i konfiguracje
  2. Nie jesteś opsem, zlecasz zadanie odpowiednim osobom i czekasz
  3. Zazwyczaj coś przy okazji się wykrzaczy = środowisko testowe nie działa i to nie tylko dla mnie ale dla całego zespołu
  4. Poprawki poprawki
  5. No zaskoczyło

Ja dzięki Dockerowi mogę zrobić to samo nie będąc opsem, nie utrudniając innym pracy na środowisku testowym. Sam jako dev mogę przygotować odpowiedni setup lokalnie, przetestować go czy wszystko działa i łączy tam gdzie powinno, i najzabawniejsze mogę zaktualizować całe środowisko testowe jednym poleceniem z klawiatury i mieć gwarancję że zaraz po tym jak się to zaktualizuje będzie działać tak jak oczekuje. Dzisiaj są takie czasy że klienci chcą od nas jak najszybciej dostać produkt. Właśnie po to stworzono Scrum, Agile, wymyślono koncepcję MVP. I dlatego też Docker jest popularny. Usprawnia ten proces, przyśpiesza go, pozwala zaoszczędzić czas na walce ze środowiskami na których pracujemy. Tylko tyle i aż tyle. Oczywiście nie twierdze że wszyscy go mają stosować bo tak, ale jego popularność nie wzięła się z nikąd ;)

1
jarekr000000 napisał(a):

Uprawiasz demagogię.

Nie uprawiam demagogi, opisuję swoją sytuację i podejście, które z powodzeniem sprawdza się w mojej pracy. Oczywiście można mi nie wierzyć, albo najlepiiej w ogóle stwierdzić, że jestem głupi. Nic nie poradzę.

U was zamówienia się nie zmieniają?

Generalnie po tym jak zamówienie zostało złożone, to potem może zostać potwierdzone, opłacone, skompletowane i wysłane. Może też zostać w jakiś sposób poprawione (np. przez zmianę jakichś parametrów albo produktów), może też zostać anulowane. Ale anulowane też przecież zostaje w bazie, po prostu zmienia się mu status. No i to też jest zdarzenie księgowe, bo klient niekoniecznie dostanie pieniądze z powrotem.

Użytkownikom nie zmieniają się prawa.

Nie, jest tylko jeden rodzaj uzytkowników - klienci, ich prawa to robienie zakupów i zarządzanie własnym profilem.

Batchy nocnych i żadnych procesów nie macie?

Mamy, ale to jest tylko odczyt danych. I nie na środowiskach zespołowych.

Pracujecie na danych w ROMie czy tez wyrytych na kamiennych tablicach?

Głównie na AWS, cholera wie co oni mają tam pod spodem.

Co by nie wciskać o jakiś problemach organizacyjnych, to jednak w normalnym świecie (poza sf somekinda),

Nie nazywałbym fikcją czegoś, co po prostu działa.
I nie twierdzę, że może działać wszędzie, i wszędzie ma sens. Pokazuję tylko inne możliwe podejście. Ktoś może potraktować to jako inspirację, ktoś inny jako ciekawostkę, ktoś jako okazję do kłótni i pokazywania wyższości, no cóż, co kto woli.

  • ludzie zmieniają dane w systemach. Przez to pracowicie tropione heisenbugi szlag może trafić,

Owszem, jeśli są jakieś współdzielone dane, to jest takie ryzyko. U mnie takiego nie ma.

  • ludzie wgrywają nowe wersje i (o zgrozo) robią bugi (przez to juz np. od 2 tygodni nie mogę przetestować e2e procesu w jednym banku, bo angażuje około 15 systemów i jeszcze nie było dnia żeby w jakimś bug się nie objawił, w jednym naprawią to w drugim zepsują, a to dlatego, że własnie mają tam takiego pielęgnowanego INTa),

No to jest straszne. Kiedyś pracowałem z takimi środowiskami integracyjnymi, na których wszystkie zespoły dłubały jednocześnie, to prawie nigdy nie działało w pełni. Bardzo się cieszę, że tego nie mam teraz.

  • utrzymanie takich INT, DEV kosztuje, a zawsze się okazuje, że może przydać się kolejne (typowo np. na testy wydajnościowe... i co wtedy? w jednej firmie ładnie pisali, że dziś nie wolno korzystać z INT bo testy wydajnościowe :-) , cudo :-) )

U nas właściwie w testach wydajnościowych najlepiej sprawdza się produkcja. Nie dość, że ludzie testują obciążenie, to jeszcze za to płacą. :)

Jak do tej pory jedyni ludzie, którym nigdy te INT, DEVy itd nie przeszkadzały i nie widzieli problemu to byli niemieccy architekci. Nie musieli się w tym grzebać, a z wieży problemów nie widać.
Tak, że tego... tu pisze do somekinda. Jak uważasz, że jest fajnie to może spójrz w dół i zobacz, czy nie siedzisz za wysoko.

Ja jestem zwykłym programistą. Ale teraz mam wrażenie, że to Ty siedzisz za wysoko. Tak wysoko, że nie widzisz nawet literek w moich postach. Ja nic o żadnych INTach i DEVach nie pisałem. Niezależne środowiska dla zespołów są bardzo daleko od scentralizowanych na poziomie całego projektu DEV i INT.

aurel napisał(a):

@somekind no generalnie tak, jak nie widzisz potrzeby, to prawdopodobnie nie potrzebujesz. Jeśli ktoś jednak miałby dzisiaj wybierać, jak rozwiąże dane problemy, to użyłby raczej gotowego narzędzia, zamiast pisać własne. Tym bardziej, że docker jest darmowy, a chmura jednak raczej płatna.

Pełna zgoda, nie warto pisać własnych narzędzi, jeśli już istnieją. Mój pech, że trafiłem do zbyt bogatej firmy, dla której IT jest biznesem, a nie kosztem, a swoje problemy zaczęli rozwiązywać na długo przed powstaniem dockera. :)

0
somekind napisał(a):

Ja jestem zwykłym programistą. Ale teraz mam wrażenie, że to Ty siedzisz za wysoko. Tak wysoko, że nie widzisz nawet literek w moich postach. Ja nic o żadnych INTach i DEVach nie pisałem. Niezależne środowiska dla zespołów są bardzo daleko od scentralizowanych na poziomie całego projektu DEV i INT.

Trochę mnie to ciekawi jak to działa. Jak zaleźności od innych zespołów - macie wgrane na swoje środowisko wszystkie systemy od kórych zależycie, z bazami, konfigami itp, i nie jest to oparte o jakieś kontenery?
Jak wygląda instalacja tych innych systemów, zależności itp?
A najbardziej mnie dziwi, że sobie w zespole nie przeszkadzacie, niedawno u jednego klienta musiałem mocno zainwestować w lokalnego DEVa (czyli odpalanie wszystkiego z podłączeniem do serwisów zewntrznych z maszyny developerskiej).

Generalnie 95% prac było możliwe lokalnie (dzięki mockom), w zespole są 3 osoby. I te 5% robione na wspólnym devie robiło konflikty (3 osoby) i przestoje (pechowo wszyscy pracowaliśmy nad branchami rozpierdalatorami, które wymagały sprawdzania faktycznej integracji - robiliśmy rozpoznanie walką, bo w XXI wieku umiejętność dokumentowania serwisów zanikła). Jak usłyszałem tekst tylko nie wrzucaj nic na DEVa.. . to jednak stwierdziłem, że nie... takich rzeczy sobie w XXi wieku nie robimy.

Pełna zgoda, nie warto pisać własnych narzędzi, jeśli już istnieją. Mój pech, że trafiłem do zbyt bogatej firmy, dla której IT jest biznesem, a nie kosztem, a swoje problemy zaczęli rozwiązywać na długo przed powstaniem dockera. :)

O dobrze wiedzieć. Jeśli firma ma zbyt wiele kasy, to ja chętnie przyjmę prawie każdą ilość gotówki i pomogę rozwiązać ten problem, a i sam na tym skorzystam jakoś. Symbioza! Tak, że liczę, że szepniesz słówko gdzie trzeba.

0

Tego brakowało w tym temacie, że ktoś poruszył faktyczne wady Dockera

jarekr000000 napisał(a):

Żeby nie było, docker rozwiązuje jedne problemy, za to wprowadza tony innych, logi, security, zarządzanie deploymentem. Nagle się okazuje, że potrzebujesz tony kolejnych tooli :-(.
Można tu utkwić w niekończącej się toolizacji :-( Utrzymanie "dockera" też kosztuje, nawet IMO więcej niż typowy DEV, INT i Q raczem wzięte. Dopiero przy większej ilości i tworzonych ad hoc środowisk widać jakiś zysk dla ludzi z infrastuktury. Dla programistów ulga jest dość szybko.

Niestety to co wrzucił Jarek to w sumie pikuś

Why I don't use Docker much anymore

Docker in Production: An Update

Docker in Production: A History of Failure

Bez dodatkowych tooli do orkiestracji typu Kubernetes może być ciekawie :D

0
cmd napisał(a):

Ok masz swoje środowisko testowe zdalne. Załóżmy teraz że próbujesz dodać jakiś nowy serwis do systemu. Weźmy przykład zmiany silnika DB z MySQL na Postgre (przejaskrawiony mocno) I teraz pytanie co robisz?

No ja nic nie robię, od tego są devopsi, ale co zrobią, to mniej więcej:

  1. Przygotują nowe AMI z Postgresem.
  2. Dodadzą do konfiguracji środowiska nowy serwer bazujący na tym AMI.
  3. Puszczą deployment bazy na tę konfigurację.
  4. Teraz pewnie trzeba zmienić connection stringi w serwisach korzystających z nowej bazy.
  5. Jak wszystko jest już przełączone, to można usunąć serwer ze starą bazą.

W żadnym momencie nie ma czegoś takiego, że całe środowisko nie działa ani, że zespół nie może pracować.

Dzisiaj są takie czasy że klienci chcą od nas jak najszybciej dostać produkt.

No, to jest chyba ta główna różnica, ja nie pracuję w software housie, software nie jest naszym produktem. Klienci używają naszego softu, żeby coś od nas kupić.

jarekr000000 napisał(a):

Trochę mnie to ciekawi jak to działa. Jak zaleźności od innych zespołów - macie wgrane na swoje środowisko wszystkie systemy od kórych zależycie, z bazami, konfigami itp, i nie jest to oparte o jakieś kontenery?

Tak.

Jak wygląda instalacja tych innych systemów, zależności itp?

Procesowo wygląda to tak, że co jakiś czas aktualizuje się zależności innych zespołów, albo jeśli to coś ważnego, to zespół odpowiedzialny aktualizuje swój serwis na innych środowiskach.
Technicznie to kliknięcie guzika w TeamCity, a pod spodem skrypty PowerShella, które przez API Amazona konfigurują w razie potrzeby AWS, a potem zbierają artefakty Builda i konfigurację deploymentu i wrzucają binarki na serwer, konfigurując wg potrzeb IIS.

A najbardziej mnie dziwi, że sobie w zespole nie przeszkadzacie, niedawno u jednego klienta musiałem mocno zainwestować w lokalnego DEVa (czyli odpalanie wszystkiego z podłączeniem do serwisów zewntrznych z maszyny developerskiej).

Generalnie 95% prac było możliwe lokalnie (dzięki mockom), w zespole są 3 osoby. I te 5% robione na wspólnym devie robiło konflikty (3 osoby) i przestoje (pechowo wszyscy pracowaliśmy nad branchami rozpierdalatorami, które wymagały sprawdzania faktycznej integracji - robiliśmy rozpoznanie walką, bo w XXI wieku umiejętność dokumentowania serwisów zanikła). Jak usłyszałem tekst tylko nie wrzucaj nic na DEVa.. . to jednak stwierdziłem, że nie... takich rzeczy sobie w XXi wieku nie robimy.

Nie mamy skomplikowanych przepływów biznesowych, w których bierze udział wielu użytkowników, nie mamy np. edycji dokumentów, nie mamy hierarchii użytkowników z setkami ról i delegowaniem uprawnień. My tylko sprzedajemy ziemniaki. :) Pod tym względem biznes jest prosty, bo każdy klient po prostu ma swoje konto, i w ramach niego edytuje adresy, płatności, ma historię zakupów. Ja mam swoje konto do testów, koledzy mają swoje, testy integracyjne swojego.
Problemy się zdarzają jak jakiś tester manualny wpadnie na pomysł testu zmiany hasła użytkownika na tym od testów integracyjnych.

Nie mamy też jakichś wielkich zmian na raz i big bang deploymentów, CD przede wszystkim, więc i branche niezbyt wielkie.

2

Nie pracuję u Ciebie, więc nie mam powodu zakładać, że Ci to nie działa jednak dla mnbie jest to bardzo dziwne. Tu nie chodzi o dockera zupełnie. Tylko o brak własnego wyizolowanego środowiska uruchomieniowego aplikacji.
Własnego -w takim sensie, ze można pracować praktycznie 100% niezależnie od wszystkich, najlepiej nawet offline.
Przy wspólnym środowisku - jeśli jakiś inny zespół może jednym klikiem updatować swój serwis na waszym środowisku, to to zrobi. I potem masz jest smutek (chwilę temu to działało).
Czasem robi się debugi. Trudno zrobić debug jak koledzy muszą w tym momencie powstrzymać się od prac.
Czasem się robi profiling.
Czasem się robi jakieś testy wydajnościowe. (Tak wiem, że klienci robią. Byłem też w firmie, że klienci robili beta testy, ale nie każdy może sobie na taki komfort pozwolić. ).
Czasem mamy testy e2e. Jest słabo jak co drugie fajlują, bo akurat ktoś robił update.
Czasem się robi błędy.
Czasem się korzysta z baz danych i schematy się zmieniają. Co wtedy jak np. kolega pracuje juz nad rozszerzonym i zapuści migrację, a ja mam nadal starą wersję? Muszę w środku mojego zadania
przerywać pracę i mergować jego zmiany?

0
jarekr000000 napisał(a):

Własnego -w takim sensie, ze można pracować praktycznie 100% niezależnie od wszystkich, najlepiej nawet offline.

Ja nie mam problemu z pracą offline, nie potrzebuję działającego środowiska do pisania kodu, czytania dokumentacji, analizowania.
Wiem, można powiedzieć, że to odbiera mi elastycznosć i wolność, ale w praktyce jakoś tego bardzo nie odczuwam.

Przy wspólnym środowisku - jeśli jakiś inny zespół może jednym klikiem updatować swój serwis na waszym środowisku, to to zrobi. I potem masz jest smutek (chwilę temu to działało).

No tak się nie dzieje, że ktoś nagle, bez uzgodnienia i ostrzeżenia robi jakiś deployment na cudzym środowisku.
Ale fakt, jeśli akurat puszczę testy integracyjne, a gdzieś tam coś jest updatowane, to może pójśc jakiś timeout i testy się wywala. Muszę tylko mieć to szczęście, i akurat puścić je wtedy, gdy gdzieś idzie ten deploy.

Czasem robi się debugi. Trudno zrobić debug jak koledzy muszą w tym momencie powstrzymać się od prac.
Czasem się robi profiling.

Co masz na myśli?
Debuguję i profilulję swój kod w swoim IDE na swoim laptopie, koledzy w tym nie przeszkadzają.

Czasem się robi jakieś testy wydajnościowe. (Tak wiem, że klienci robią. Byłem też w firmie, że klienci robili beta testy, ale nie każdy może sobie na taki komfort pozwolić. ).

Do testów wydajnościowych odpalam np. 1000 requestów jakiegoś tam rodzaju, to trwa ileś minut. Myślę, że to, że ktoś w międzyczasie wyśle jakiś request od siebie na to samo środowisko jakoś bardzo wyników nie zaburza.

Czasem mamy testy e2e. Jest słabo jak co drugie fajlują, bo akurat ktoś robił update.

Na takie pełne e2e wszystkich komponentów jest oddzielne środowisko.

Czasem się korzysta z baz danych i schematy się zmieniają. Co wtedy jak np. kolega pracuje juz nad rozszerzonym i zapuści migrację, a ja mam nadal starą wersję? Muszę w środku mojego zadania
przerywać pracę i mergować jego zmiany?

No to byłby ból. Dobrze, że schematy się nie zmieniają.

2

No, a schemat się nie zmienia od dawna, bo firma już od dawna istnieje i działa, a towar się nie zmienia. - @somekind 10 minut temu

Dało mi to do myślenia.
Siedzę teraz w firmie, która działa od (prawie) połowy XIX wieku. Ciągle zmieniają schematy:-( Nie wiem, czy nie powinienem zasugerować, żeby się wreszcie ustatkowali i na coś zdecydowali. 160 lat - chyba już mieli dość czasu? Ile to u was trwało?

1 użytkowników online, w tym zalogowanych: 0, gości: 1