Case study: wdrożenie Perforce w CD PROJEKT RED

 „Przed oprogramowaniem Perforce, wersjonowanie było ciągłą walką. Walczyliśmy z klientem, z oprogramowaniem i często marnowaliśmy większą część dnia na zadania, które były całkowicie niezwiązane z naszą codzienną pracą. Kiedy zdaliśmy sobie sprawę, że możemy odzyskać ten stracony czas, Perforce stał się oczywistym wyborem”

Jakub Kutrzuba

DevOps Lead w CD PROJEKT RED

Profil Firmy

•              Twórca wielokrotnie nagradzanej serii gier RPG “Wiedźmin”
•              Siedziba główna w Warszawie, studio w Krakowie
•              Klient Perforce od 2008 r.
•              Liczba użytkowników: 450+
•              Wielkość bazy danych: 205 GB
•              Wielkość repozytorium: 10 TB
•              Liczba plików: 15 mln i cały czas rośnie

Krótki przegląd

Od momentu powstania w 2002 roku, CD PROJEKT RED stał się jednym z liderów w branży tworzenia gier. W portfolio studia są takie gry jak: „Wiedźmin”, „Wiedźmin 2: Zabójcy Królów” oraz „Wiedźmin 3: Dziki Gon”. Obecnie CD PROJEKT RED pracuje nad grą GWINT: Wiedźmińska Gra Karciana oraz Cyberpunk 2077.

Kluczowe problemy

  • Możliwość identyfikowania zmian
  • Praca z olbrzymią ilością danych – do 50-60 GB dziennie
  • Przesyłanie danych w wielu lokalizacjach
  • Sprostanie potrzebom dynamicznie rosnącego studia tworzącego gry wideo

Prawie 14-letnie doświadczenie w tworzeniu gier sprawiło, że CD PROJEKT RED doskonale zna swoje potrzeby odnośnie systemów kontroli wersji, oraz wie jakie są korzyści płynące z ich używania. Te, które są szczególnie ważne dla studia to: przejrzystość i możliwość śledzenia wszystkich zmian w jednym miejscu oraz posiadanie “jednego źródła prawdy”.

„W przeszłości, gdy tworzyliśmy buildy, zdarzało się, że jeden kompilował się pomyślnie, podczas gdy drugi, powstający niewiele później, nie chciał działać. Próbując rozwiązać problem, stwierdziliśmy, że dane nie były przechowywane na platformie kontroli wersji, a w systemie nie było żadnej historii czy walidacji.”

Znalezienie intuicyjnego, możliwego do zastosowania przez programistów oraz projektantów rozwiązania, nie było łatwym zadaniem, a część dostępnych rozwiązań zmniejszała ogólną produktywność zespołu wprowadzając ograniczenia – od braku możliwości tworzenia „gałęzi” i niskiej wydajności, po możliwość obsługi tylko lekkich plików tekstowych.

“Niektóre procesy nie wymagają zastosowania złożonego oprogramowania”, mówi Jakub Kutrzuba, DevOps Leader w CD PROJEKT RED. „Jednakże, jeśli spodziewasz się, że skala tego, co robisz będzie rosnąć, inwestowanie w produkt, który się nie skaluje jest po prostu stratą czasu i środków.”

Na pewnym etapie rozwoju studia, pozbycie się ograniczeń stało się dla CD PROJEKT RED warunkiem koniecznym. Studio wymagało systemu kontroli wersji, który mógłby towarzyszyć mu na dłuższą metę.

Dlaczego Perforce?

  • Skalowalność i wydajność
  • Rozproszone workflow (DVCS)
  • Intuicyjność oraz łatwość w użyciu
  • Integracje
  • Automatyzacja

Skalowalność

„Kiedy pracujesz nad wielkim projektem i przetwarzasz masę danych; kiedy twój projekt to setki użytkowników pracujących na tych samych danych, kluczowym wyróżnikiem staje się to, jak twoje oprogramowanie wykorzystuje sprzęt” — mówi Kutrzuba.

Baza użytkowników CD PROJEKT RED wzrosła z 60 do ponad 450. Dodatkowo, firma otworzyła drugą lokalizację w Polsce, w Krakowie. Wyzwanie, przed którym stanęły osoby odpowiedzialne za stworzenie infrastruktury, obsługującej studio to dostarczenie tych samych danych do wielu użytkowników w różnych lokalizacjach, bez obniżania wydajności. Niemałe wyzwanie, kiedy mamy do czynienia z plikami o rozmiarze od kilku do 50/60 GB. Firma użyła do tego rozwiązania Perforce do synchronizacji wszystkich danych z instancją na serwerze dodatkowym.

“Większość innych rozwiązań martwi się tylko o twoje pliki tekstowe, natomiast one są dość łatwe do zarządzania. Kiedy zaczynasz pracę z dużymi plikami, zdajesz sobie sprawę, że musisz rozważyć rozwiązanie, które nie ugnie się pod ciężkimi plikami i złożonością danych”

Po raz kolejny Perforce udowodnił, że jest najbardziej niezawodnym narzędziem do pracy. Jakub i jego współpracownicy nigdy nie mieli problemów z pobieraniem danych od i do użytkowników, bez względu na to gdzie oni się znajdują.

Automatyzacja

W celu zwiększenia produktywności i zmniejszenia ryzyka, CD PROJEKT RED automatyzuje procesy testowania i tworzenia buildów. Studio w pełni zintegrowało system budowania z serwerem Perforce do monitorowania zmian, uruchamiania testów i kompilowania. Studio generuje również raporty z tych procesów oraz rozwija integrację Perforce z Jira, aby automatycznie przesyłać wyniki do Jira.

Generowana w Jira analiza błędów, jest połączona z Perforce, aby umożliwić dostarczenie ewentualnych poprawek. Studio wkrótce będzie w stanie automatycznie zamykać błędy, kiedy stworzone zostaną poprawki, które pomyślnie się zbudują.

Rozgałęzianie pozwala na zorganizowanie tworzenia buildów oraz testowanie każdego projektu, oferując wyższy poziom bezpieczeństwa oraz większą stabilność. W chwili obecnej studio używa oddzielnych repozytoriów dla każdej ze swoich gier. Ich największe repozytorium posiada ponad 30 gałęzi do rozwoju nowych funkcjonalności gier oraz zapewnienia brak błędów w kodzie, który jest dodawany do głównej linii.

Perforce także bezproblemowo synchronizuje się z repozytorium, gdzie CD PROJEKT RED przechowuje swoje buildy, przesyła co najmniej 50 GB dziennie; czasem więcej niż jeden raz.

“Dzięki Perforce podnieśliśmy skalowalność, wydajność i automatycznie testujemy do kilku razy dziennie” mówi Kutrzuba.

Perforce współpracuje z Deviniti, autoryzowanym partnerem Perforce w Polsce w celu zapewnienia stałego wsparcia firmie CD PROJEKT RED.

Radosław Kosiec

Radosław is Partner Product Department Director in Deviniti spaceship. He’s been supporting Deviniti in many areas since 2011. He advises companies about tools for DevOps, service desk, customer service, task and project management, and more! He is proud to be a Deviniti astronaut because the company follows the principles he has always believed in. He is a great Capitan of his crew!

Więcej od tego autora