2
CFC SYSTEMSPhoenix FMS - CorePhoenix Testing ToolsPhoenix FMS - OUTBOUNDPhoenix Stations - Kudu / Phoenix Stations - OryxCFC OSP Adaptation Layer
DATABusiness Planning System (BPS)Data Platform TeamData Engineering OSP
BUSINESS SUPPORT SYSTEMSEmployee Management Systems (EMS) -> UK
AUTOMATION CONTROLHawk Scada Team
OPERATIONS AND INFRASTRUCTUREForgeCore Services (Panda Team)YACHTCall Centre Systems
nasze zespoły
E-Commerce (UK Live)Green (PL)Indigo (PL)Olive (PL)Pink (PL)
Ocado Smart Platform (OSP) Machine Learning ServicesE-Commerce (OSP)Fulfillment Management (OSP)Logistics Planning (OSP)Pricing & Promotions (OSP & UK Live)Retail Services (OSP)Range Management Systems (OSP)Employee Planning Systems (OSP)Content Management System (OSP)
3
Classic CFC Systems
Przed Tobą znajduje się wielka maszyna, która zajmuje kilka pięter, ma kilkaset metrów szerokości i głębokości. W jej wnętrzu znajdują się kilo-metry podajników rolkowych i taśmociągów, znajduje się coś co można sobie wyobrazić jako mechaniczną listę list list (LinkedList<LinkedList<Linke-dList<Item>>>>) w której znaleźć można wszystko poczynając od zapałek, przez pomarańcze na kawiorze kończąc.
W środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi przez klientów, które jeżdżą między piętrami, nie-które jeżdżą w temperaturze 20ºC, inne -20ºC.
• Ktoś musi to kontrolować.• Ktoś musi pilnować by koszyk nie skręcił w złym kierunku.• Ktoś musi zapewnić, że w czasie mniejszym niż 200ms koszyk
będzie wiedział gdzie ma skręcić.• Ktoś musi zapewnić, aby towar który właśnie został przywiezio-
ny zostanie właściwie rozpakowany i odłożony na właściwą półkę w odpowiednim czasie.
• Ktoś musi połączyć tysiące zamówień klientów tak by na końcu koszyki jadące do klientów mieszkających w tej samej okolicy tra-fiły na ten sam samochód w tej samej chwili.
CFC SYSTEMSsystemy zarządzające pracą zautomatyzowanych magazynów
Tym kimś możesz być Ty, a dokładniej software który będziesz pomagać tworzyć i utrzymywać.
By do nas dołączyć musisz znać:• Java (na poziomie na którym fakt, że różnice w implementacji Ha-
shMap między różnymi wersjami Javy mogą sprawić problemy, nie powoduje u Ciebie palpitacji serca)
• SQL (nie bój się, staramy się wszystko trzymać w pamięci, a bazy danych są dla nas miejscem do trzymania danych w razie restartu)
Mogą być przydatne:• Behave• Scala• AngularJS
4
Phoenix FMS - Core
Wyobraź sobie magazyn wielkości kilku boisk piłkarskich. W środku prawie nie ma ludzi. Magazyn dzieli się na kilka samo zarządzających się sekcji. Sekcje nie komunikują się między sobą inaczej jak tylko przez Phoenix Core. Teraz wyobraź sobie, że w magazynie jest mnóstwo kon-tenerów. Tak dużo, że zapełnienie magazynu pustymi kontenerami trwa kilka miesięcy!
Dodaj do tego kilka tysięcy zamówień dziennie. Każde zamówienie ge-neruje ruch kilkunastu kontenerów. W tym samym czasie magazyn przyj-muje dostawy i wykonuje szereg innych procesów. Towary przenoszone są z kontenera do kontenera. Tysiące kontenerów przemierzających ma-gazyn! Ile potrzeba komunikatów, aby to obsłużyć?
Teraz przypomnij sobie, że w magazynie prawie nie ma ludzi, a żadna z tych operacji nie dzieje się bez wiedzy Phoenix Core.
Podoba Ci się perspektywa współtworzenia tego projektu? Jeśli jeszcze nie czujesz się przekonany to co powiesz na: Apache Camel-a, Java 8, Postgres, ActiveMQ, New Relic...
Phoenix Testing Tools
Zespół tworzy system służący do przeprowadzania testów akceptacyj-nych magazynów CFC na podstawie predefiniowanych scenariuszy biz-nesowych (symulacje różnych wariantów stanu magazynu i zamówień
klientów). Testy takie prowadzone są na rzeczywistym sprzęcie w maga-zynie, zaś system powinien być obsługiwany wyłącznie przez użytkowni-ków z działów biznesowych (operations management).
Projekt jest przeznaczony dla nowych magazynów - integracja z sytema-mi platformy Phoenix (CFC replatforming).
Technologie:• Java 8• Gradle• BDD/JBehave• Spring Framework 4• AngularJS• Go (continuous delivery)• OpenShift• ... lista wciąż się powiększa
Phoenix FMS - OUTBOUND
Tworzymy zestaw aplikacji odpowiedzialnych za realizację procesów biz-nesowych w nowych magazynach Ocado. Co zapakować dla klienta, gdzie później to wysłać i co zrobić jak coś się nie uda - to są mniej więcej zadania, które rozwiązuje nasz kod.
Rozwijamy kilka aplikacji, m. in:• Customer Order Processor (obsługa zamówień klientów)• Frame Positioning (rozkład koszyków we frame-ie)
zespoły / CFC SYSTEMSzespoły / CFC SYSTEMS
5
• Route Sequencing (rozkład frame-ów w ciężarówie)• Purge Processor (obsługa produktów po dacie ważności)• Sku Service (informacje o dostępnych produktach w magazynie)
Każdy z powyższych serwisów posiada lub będzie posiadał również GUI administracyjne. Serwisy komunikują się ze sobą po HTTP i / lub po JMS.
Buzzwords:• Asynchronous• Event driven• Asynchronous• TDD• Asynchronous• HTTP
Technologie:• Java :P• Scala • Akka• Spray• Cassandra• Camel• Docker
Phoenix Stations - Kudu / Phoenix Stations - Oryx
Nasze systemy zajmują się obsługą wszystkich stacji (stanowisk) znajdu-jących się w magazynach. Stacja to miejsce pracy pracownika magazy-nu, np. przyjmowanie towarów od dostawców lub pakowanie zakupów dla klienta. Wydajność każdej stacji ma duże znaczenie, dlatego system musi zarówno sprawnie zarządzać ruchem kontenerów (koszyków) prze-chodzących przez stację, jak i zapewniać przejrzysty i intuicyjny interfejs użytkownika (UX). Cały backend systemu ma dodatkowo specyficzne wymagania wydajnościowe.
Technologie:W tym momencie prototyp rozwiązania jest w Scali z użyciem Akki i Spraya. Do testów używamy TestKita i scalatest. Całość jest budowana do image’a dockerowego. Frontend budujemy za pomocą React.js, Ba-con.js i Playa.
CFC OSP Adaptation Layer
CFC (Custmer Fullfilment Center) - Wyobraź sobie zautomatyzowany magazyn, ogromny magazyn, wielkości kilku boisk piłkarskich. W środku prawie nie ma ludzi. Teraz wyobraź sobie, że w magazynie jest mnóstwo kontenerów. Tak dużo, że zapełnienie magazynu pustymi kontenerami trwa kilka miesięcy! Dodaj do tego kilka tysięcy zamówień dziennie. To właśnie jest CFC!
Systemy CFC współpracują z wieloma innymi systemami miedzy innymi z Webshop (aplikacja webowa dla klientów), interfejsy tych systemów wymagają dostosowania do siebie, transformacji danych, ciągłego moni-toringu i to jest właśnie miejsce dla Adaptation Layer.
zespoły / CFC SYSTEMS
6
Jeżeli chcesz zmierzyć się z wyzwaniami wydajnościowymi i wysokiej do-stępności, chcesz zapewnić skuteczną integrację systemów, monitoring i szybkie identyfikowanie problemów na ich styku, to jest to zespół zde-cydowanie dla Ciebie.
Technologie:• Java 8• Spring Framework 4• AngularJS• Apache Kafka• Cassandra • Apache Camel
DATA
Business Planning System (BPS)
Sukces Ocado w dużej mierze zależy od trafności przewidywań doko-nywanych przez analityków. To oni są odpowiedzialni zarówno za dłu-gofalowowe plany (np. czy na 2 lata będziemy już potrzebować nowego magazynu), średnio-terminowe (np. czy za kilka miesięcy potrzebujmy nowych vanów?) oraz plany operacyjne (np ile osób potrzebujemy jutro w magazynie na jakich zmianach i o której godzinie powinni zacząć pra-cę).
Celem projektu BPS jest stworzenie aplikacji wspierającej pracę business analityków. W ich pracy zmiany dokonane w jednym obszarze mają ol-brzymi wpływ na inne plany, np. zmiana przewidywanej ilości zamówień wpływa niemal na wszystkie aspekty planowania w Ocado. Aplikacja ma dostarczyć nie tylko narzędzia dla planowania, ale także dostęp do całej historii zmian dokonywanych przez użytkowników. Ma to ułatwić anality-kom analizę dokonywanych zmian, dzięki czemu w łatwy sposób mogą uczyć się na swoich błędach.
System docelowo ma być zintegrowany z innymi aplikacjami Ocado (HR, Webshop, CFC, etc)
Aplikacja znajduje się w chmurze amazonowej.
7
Technologie w skrócie: • Forntend: AngularJs + Bootstrap• Backend: Java, Spring, SpringBoot, AWS (DynamoDB, S3,
Elasticache)• Build: Webpack, npm (front-end), Gradle• Test: Spock, Cucumber, Karama, Jasmine
Data Platform Team
Świat wokół nas się zmienił. W terabajtowej teraźniejszości nie ma już miejsca na stare triki bazodanowe. RDBMS? Hadoop? To wszystko już pieśń przeszłości. W nowych realiach potrzeba nam nowych narzędzi. Ocado doskonale to rozumie i dlatego powołało do życia nasz zespół: Data Platform.
Stworzone przez nas aplikacje są obecne na każdym etapie drogi, jaką pokonują dane w swojej podróży przez chmurę:
• Event Processor jest jak Kopciuszek na sterydach. Uwija się wśród eventów, kategoryzując je i odkładając na należne im miejsce. I robi to naprawdę szybko!
• QueryManager to swoista pracownia alchemiczna, przy pomocy której Data Scientists i Data Engineers raz po raz zmieniają dane w złoto (w funty złota!).
• DataRegistry - Indeks i biblioteczka w jednym. Tu dowiesz się, gdzie dane leżą, a także odszukasz receptury, według których łą-czą się ze sobą.
• Cloud Bucket Sync - Nasze okno na świat Amazona. No bo nie samym Googlem żyje człowiek.
zespoły / DATA
• Data Harbor - Jak sama nazwa wskazuje, jest to port, do którego wysyłamy dane na eksport. Statki towarowe retailerów-klientów Ocado mogą stąd zabrać zapakowane i posegregowane dane.
Jeszcze szybki rzut oka pod maskę. Napędzają nas takie technologie jak BigQuery, DataFlow, DataProc czy Cloud MachineLearning (wszystko od Google’a), a równomierną pracę zapewniają Java, Python i Scala. Brzmi interesująco? Zapraszamy!
Data Engineering OSP
Wyobraź sobie, że jesteś w łódce na jeziorze, pod Tobą pływają terabajty danych, różnych rodzajów i kształtów. Na brzegu czeka rzesza konsu-mentów, mająca ochotę na specyficzny rodzaj informacji pochodzących z różnych zakamarków jeziora. Twoim zadaniem jest wyselekcjonować dokładnie te dane, które są im niezbędne, zapakować je w zgrabne paczki i regularnie dowozić na brzeg, nie rzadziej niż 15 minut. Częścią Twojej pracy jest też uzgadnianie z producentami danych czego jeszcze w je-ziorze brakuje. W międzyczasie budujemy też kuter, którym łatwiej nam przemieszczać się po jeziorze.
Na co dzień pracujemy z produktami Google Cloud Platform oraz narzę-dziami dostarczanymi przez Data Platform Team.
Używane technologie:• Google Big Query• Google Cloud Storage• Google Data Flow
• Java 8• Python 2.7.1• JUnit / TestNG• GO Continuous Delivery
8
Employee Management Systems (EMS) [UK]
Od strony biznesowej nasz zespół zajmuje się szeroko pojętymi systema-mi HR’owymi. Obecnie rozwijamy systemem wspomagający prowadze-nie rekrutacji dla pracowników magazynów, punktów przeładunkowych oraz kierowców (ok. 60k aplikacji rocznie). Utrzymujemy także aplika-cję typu self-service dla pracowników pracy zmianowej (ok. 7k), która pozwala im zarządzać swoim czasem pracy. W najbliższej przyszłości będziemy tworzyć aplikację nadzorującą umiejętności i potrzeby szkole-niowe naszych pracowników. Rozwiązanie będzie częścią OSP (Ocado Smart Platform), platformy sprzedażowej typu SaaS.
Na co dzień nasz zespół korzysta z Kanbana, praca definiowana jest poprzez ‘taski’ na poziomie biznesowym. Każdy członek zespołu jest zaangażowany w rozwój produktu na każdym jego etapie, od definicji problemu po wdrożenie na środowisko produkcyjne. Dbamy o jakość naszych rozwiązań, korzystamy z testów automatycznych jednostko-wych i integracyjnych, rewizji kodu typu ‘hot-seat’ oraz dwuetapowego systemu demonstracji funkcjonalności. Kodowanie odbywa się na jed-nej gałęzi (master), wdrożenia produkcyjne odbywają się codziennie i są w pełni zautomatyzowane.
BUSINESS SUPPORT SYSTEMS
Technologie i narzędzia w użyciu: • AngularJS, Karma, Jasmine• Java8, Spring (REST), JUnit• AWS (ElasticBeanstalk, DynamoDB, S3, SES)• GWT, Guice• Jenkins / Go
9
Hawk Scada team
Tworzymy system pozalający na zdalne monitorowanie i kontrolowanie sprzętu w magazynie (fachowy akronim - SCADA). Strumień wiadomości z urządzeń trafia do naszego aktorowego systemu (Java+AKKA+Spring), który wylicza status poszczególnych komponentów i powiadamia podłą-czonych klientów (WebSocket).
Aplikacje kliencką (CoffeeScript+AngularJS+d3) wyposażyliśmy w zaawan-sowany edytor graficzny, który pozwala łatwo budować nowe widoki oraz parser plików stl (ANTLR) do szybkiej aktualizacji zmian w konfiguracji mo-nitorowanych urządzeń.
Poza tym pozwalamy tworzyć raporty i sprawdzać historię alarmów na pod-stawie zebranych danych (Cassandra+ElasticSearch). Sami zaś nieustannie rozbudowujemy metryki dające nam wgląd w stan aplikacji (Prometheus +NewRelic).
Nad stroną biznesową czuwa nasz drogi PO, a nad wyglądem i ogólnym odbiorem aplikacji nieoceniony UX Designer.
AUTOMATION CONTROL
10
Forge
Forge (\ˈfȯrj\) czyli kuźnia, dostarcza niezbędnych narzędzi ułatwiających funkcjonowanie zespołów w podejściu Continuous Delivery. Codziennie z naszych rozwiązań korzystają dziesiątki zespołów programistycznych we wszystkich lokalizacjach.
Dostarczane narzędzia są nieustannie hartowane, aby dostarczyć jak największą jakość i zadowolenie naszym użytkownikom. W tym celu For-ge inwestuje czas, aby ich produkty były pokryte setkami testów au-tomatycznych, zaś proces ich dostarczenia do użytkowników był cał-kowicie zautomatyzowany i powtarzalny. Jakość oferowanych usług jest nieustannie monitorowana takimi serwisami jak NewRelic.
Proces wykuwania prowadzony jest w duchu metodyki Agile, dzięki cze-mu każdy członek zespołu Forge ma realny wpływ na ciągłe jego uspraw-nianie. Naszym młotem i kowadłem w głównej mierze są technologie związane z funkcyjnym językiem Scala, m.in.
• Play Framework, • Spray, • Akka, • ScalaTest, • SBT, • Gradle
OPERATIONS AND INFRASTRUCTURE
W kuźni przydatna jest także wiedza z zakresu wykuwania w architek-turze microservices oraz podstawowa znajomość AngularJS, Python, AWS.
W portfolio produktów znajdują się m.in.:• Scotty - narzędzie ułatwiające deployment na AWS• AppRegistry - katalog wszystkich aplikacji w Ocado Technology• Change System - narzędzie wspomagające wprowadzanie zmian
na produkcji
Core Services (Panda Team)
Zespół Panda jest odpowiedzialny za karmienie, opiekę oraz rozwijanie Pandy. Panda, jak sama nazwa wskazuje, jest odpowiedzialna za chro-nienie dostępu do wszelkiego rodzaju zasobów. Innymi słowy jest to system do autentykacji i autoryzacji, który swoim zasięgiem obejmuje całą firmę, od użytkowników biurowych przez magazyn po kierowców. Dlatego bardzo ważne jest, aby Panda była silna oraz było jej dużo [high availability].
Panda jest na tyle rozgarnięta, że jak raz zobaczy użytkownika, to już wie że do innego zasobu może go dopuścić [single sign in].
11
Na naszym zespole ciąży duża odpowiedzialność, ale dzięki odpowied-niej opiece Panda była niedostępna tylko przez około 3 godziny w ciągu ostatnich dwóch lat
W chwili obecnej zespół dbający o naszego pupila składa się z czterech developerów, inżyniera jakości (QA) oraz brygadzisty. W naszej okolicy można znaleźć zarówno zdjęcia czarno-białego niedźwiadka panda jak również małe czerwone pandy. W całym Ocado każdy wie co robi Pan-da, oraz że lepiej z nią nie zadzierać.
Technologicznie Panda stoi na Javie (1.8). Stos technologiczny obejmuje Spring, Spring Boot. W użyciu są serwery Redis oraz Hazelcast. UI wy-stępujący wewnątrz aplikacji jest minimalny.
Panda porozumiewa się z użytkownikami za pomocą dwóch protoko-łów - OAuth2 oraz SAML. Panda występuje zarówno na wewnętrznych maszynach jak również w chmurze AWS oraz Openstack. Dbamy o to, aby ścieżki jej dotarcia w te miejsca były jak najprostsze. Jest to możliwe dzięki użyciu takich narzędzi jak Go, Jenkins, Docker czy puppet.
Zakres naszej odpowiedzialności będzie się rozszerzał na obszary zwią-zane z zarządzeniem tożsamością (IDM) gdzie umiejętności związane z UI będą przydatne.
YACHT
YACHT to zespół odpowiedzialny za Google Cloud w Ocado. To miejsce dla osób, którzy Google kojarzą z czymś więcej niż tylko z przeglądarką i pocztą elektroniczna.
Bezpiecznie - Skutecznie - Elegancko - to 3 wartości zespołu, które idealnie wpisują się w nasz główny cel - uprodukcyjnianie projektów na platformie Google’owej. Bezpieczeństwo ponad wszystko. Pomagamy zespołom developerskim w zaadresowaniu takich aspektów bezpie-czeństwa jak kontrolowany dostęp wg zasady ‘least privilege’, cloudowe backupy, audytowalność zmian czy monitoring. Przeprowadzamy audyty bezpieczeństwa. Uświadamiamy użytkowników platformy o potencjal-nych zagrożeniach i promujemy dobre praktyk.
Tworzymy i rozwijamy narzędzia, które skutecznie realizują cele wspo-mniane wyżej. Codziennie mierzymy się z wyzwaniami skali. O ile za-gadnienie backupow może brzmieć trywialnie, to w przypadku danych liczonych w petabajtach i milionach tabel ujawnia się klasa problemów wcześniej nieznanych. ‘Divide and Conquer’ to nasz chleb powszedni!
Luźno powiązane projekty spinamy w ramy organizacji. Staramy się zau-tomatyzować wszystko co się rusza. Zapewniamy przekrojowe raporty zużycia zasobów dzięki czemu umożliwiamy optymalizację kosztów plat-formy.
I w końcu - elegancko. Chcemy, aby to co tworzymy było wysokiej jako-ści. W tym celu musimy dbać o nasz craft. W ramach praktykowanego przez nas tzw ‘Autonomy Day’ każdy członek zespołu ma przestrzeń na rozwój własnego craftu oraz czas na badania i prototypowanie.
Trzymamy rękę na pulsie jeśli chodzi o trendy i nowości cloudowe. Dzięki bliskiej współpracy z Googlem uczestniczymy w programach alpha i beta rozwiązań, które dopiero wejdą na platformę GCP. Dzieląc się feedbac-kiem i naszymi wymaganiami mamy realny wpływ na ostateczny kształt produktu oraz jego roadmapę.
zespoły / OPERATIONS AND INFRASTRUCTURE
12
Technologie:• Google Cloud Platform (BigQuery, Cloud Storage, StackDriver,
AppEngine, Deployment Manager)• Python• Ansible• IntelliJ/PyCharm• Git• Jenkins
Jeśli do nas dołączysz, zostaniesz wtajemniczony w rozwinięcie chwytli-wego akronimu YACHT.
Call Centre Systems
Zespół CCS jest odpowiedzialny za rozwój i utrzymanie najlepszych na świecie systemów obsługi klienta wykorzystywanych zarówno wewnętrz-nie przez Ocado jak i zewnętrznie przez Morrisons Ltd. Tworzymy nie-banalne rozwiązania wspierające wyjątkowe procesy zakupów interneto-wych w Ocado. Wyjątkowe rozwiązanie wymaga wyjątkowego zespołu, i dlatego szukamy teraz wyjątkowych osób posiadających wyjątkowe umiejętności. :)
Najważnieszym projektem jest webowa aplikacja działająca na serwe-rach w firmie, używana między innymi do obsługi kontaktów z klienta-mi - wspiera telefony, maile, SMS-y, media społecznościowe, czaty itp. Systemy obsługi klienta są zintegrowane z większością wewnętrzych systemów firmowych, dlatego nie ominie Cię żadna większa zmiana jaką Ocado lub Morrisons wprowadzają dla swoich klientów. Pracując w CCS będziesz miał szerokie spojrzenie na całość procesu bizneso-wego. Obecnie budujemy również podobną aplikację do obsługi nowej
platformy działającą w chmurze. Niedawno zainicjowaliśmy pracę nad nowym projektem do oceny jakości pracy Customer Care. Pracujemy również nad aplikację używaną do wyświetlania statystyk i informacji dla pracujących w Contact Centre agentów i menadżerów. Nasze aplikacje releasujemy często - co kilka dni, idąc w kierunku continuous delivery.
Technologie:
• Java 8• Kotlin• React.js + Redux• Node.js• Angular• GWT• Oracle• Amazon Kinesis
• Google Pub/Sub• BigQuery• REST• Spring• AWS i serwery wewnętrzne• GitLab• GoCD• Docker
Jesteśmy zespołem dojrzałym, autonomicznym, mającym duży wpływ na to co i jak robimy. W ciągu 3 lat pracy zbudowaliśmy zaufanie naszego klienta, teraz to my drajwujemy zmiany. Regularnie testujemy narzędzia, które pomagają nam rozwijać się indywidualnie oraz jako zespół (np. Test Belbina, Test Gallup-a), który lubi ze sobą pracować. Tutaj nie ma kor-po-spotkań, to o czym wspólnie dyskutujemy jest faktycznie wdrażane w projektach.
zespoły / OPERATIONS AND INFRASTRUCTURE
13
Interdyscyplinarne (backend, frontend, QA, PO) zespoły deweloperskie (4 w Krakowie + 2 w Hatfield + 1 w Lublinie) zajmujące się rozwojem i utrzymaniem sklepów internetowych https://www.ocado.com oraz https://groceries.morrisons.com. Dodatkowo samodzielny zespół UX w Krakowie (architekci i projektanci).
• integracja z kilkunastoma wewnętrznymi systemami Ocado, np. Identity Management, Range Management (asortyment produk-tów), Order Management, Slot Booking (rezerwacje dostaw), Pay-ments, Recommentadions)
• integracja z zewnętrznych serwisów, m.in. Google Tag Manager, Google Analytics, Optimizely, HookLogic
• analiza wpływu poszczególnych zmian w interfejsie użytkownika sklepu na zachowania klientów
Technology stack:• Backend: Java 8, Spring, Spring MVC, Struts, Tomcat 7; CI: Team-
City/Selenium; Cloud: AWS, Google Compute/App Engine• Frontend: React/Redux, ES6, Node.js, Mocha, Webpack, SCSS
i inne
E-COMMERCE (UK LIVE)
Green [PL]
Różne zadania związane z rozwojem funkcjonalności i infrastruktury webshopa. Obecnie:
• Usprawnienia w deploymencie aplikacji - wdrożenie blue/green deployments
• Obsługa rejestracji i logowania użytkowników ( w tym Single Sign--On i logowanie przy pomocy innych serwisów np. PayPal’a, przy użyciu SpringSocial)
• Fraud detection• personalizacja - dostosowywanie wyników wyszukiwania i zawar-
tości katalogów produktów do preferencji użytkowników (np. we-getarianie, matki z dziećmi, sportowcy itd.)
14
Indigo [PL]
• Raven - migracja rozwiązania RWD na React/Redux; “odświeże-nie” i “wyczyszczenie” całego stosu technologicznego w warstwie UI
• Budowa nowego interfejsu użytkownika zoptymalizowanego pod kątem urządzeń mobilnych (zarówno telefony, jak i tablety). Interfejs ciągle bardzo mocno rozbudowywany pod względem funkcjonal-ności, docelowo zastąpić ma także obecny system dostępny na przeglądarkach desktopowych.
• Projekt wymieniony ostatnio przez Google na swoich konferen-cjach jako przykład wzorowej implementacji RWD (Responsive Web Design).
• FOP - komponenty służące do prezentacji produktów w wynikach wyszukiwania i katalogach
• optymalizacja SEO
Olive [PL]
• Shopping lists - rozwiązanie służące do tworzenia i zarządzania listami zakupów, zintegrowane z katalogiem przepisów kulinarnych
• One-click - serwis umożliwiający dodawanie produktów do istnie-jącego zamówienia za pomocą jednego kliknięcia; używany m.in. przez aplikacje Ocado na Apple Watch
Pink [PL]
• obsługa płatności przy pomocy kard kredytowych i innych dostaw-ców rozwiązań płatniczych np. PayPal
• serwis do obsługi kodów promocyjnych Voucher Webservice (Tom-cat, Jersey, Spring, Hystrix)
• Ocado Reserved - rodzaj subskrypcji pozwalający użytkownikowi na definiowanie zamówień, które będą automatycznie i cyklicznie składane w jego imieniu; rozwiązanie oparte na AWS i SpringBoot
zespoły / E-COMMERCE
15
Machine Learning Services
Już od jakiegoś czasu dużo mówi się o Machine Learningu. Nie mogłaś/mogłeś o nim nie słyszeć. To właśnie rozwiązania z obszaru uczenia ma-szynowego stoją za rozpoznawaniem głosu w Twoim telefonie, automa-tycznym tagowaniem zdjęć na Facebooku czy tłumaczeniem Twojego ojczystego języka na tysiące innych. Algorytmy ML już teraz pokonają Cię w klasycznej grze w Go, a wkrótce poprowadzą Twój przyszły sa-mochód. Machine Learning ma potencjał, aby zmienić każdą dziedzinę naszego życia, zrewolucjonizować sposób, w jaki żyjemy. To ogromna szansa dla tysięcy firm na całym świecie, ale i ogromne ryzyko. Kto nie zacznie inwestować w ML już teraz, za kilka lat może znaleźć się za burtą postępu.
Ocado dobrze to rozumie. Nasza firma od wielu lat wspiera wewnętrzne projekty i inicjatywy oparte o ML, czego efekty są dostrzegalne na każ-dym kroku - począwszy od strony internetowej naszego sklepu, która dostosowuje się do preferencji klienta (poprzez rekomendacje produk-tów, lepszy mechanizm wyszukiwania, itd) do wszelakich optymalizacji biznesowych, dzięki którym zaoszczędziliśmy miliony funtów (ML poma-ga lepiej rozmieścić towar w magazynach, planuje optymalne trasy dla samochodów dostawczych, a nawet czyta maile przychodzące do Cen-trum Obsługi Klienta, aby sprawniej pomagać naszym użytkownikom). To tylko część obszarów, w których wykorzystujemy ML. Lista zastosowań tej technologii w Ocado jest o wiele dłuższa i stale się powiększa.
OCADO SMART PLATFORM (OSP)
Istotne jest, aby uświadomić sobie, że samo stworzenie inteligentnego modelu to tylko część sukcesu. Potrzebna jest także infrastruktura, która pozwala na łatwe eksperymentowanie z danymi i modelami we wczesnej fazie rozwoju projektu oraz na bezproblemowe utrzymanie systemu ML na produkcji w późniejszym etapie.I tu na scenie pojawia się zespół Machine Learning Services. Naszym zadaniem jest stworzenie platformy deweloperskiej do ML i jednocześnie edukacja naszych kolegów i koleżanek w taki sposób, aby wszyscy w Ocado mogli na własną rękę użyć Machine Learningu w swoich aplika-cjach. Mówiąc “wszyscy” naprawdę mamy na myśli wszystkich. Dosłow-nie. Nie musisz posiadać zaawansowanej wiedzy z obszaru matematyki, żeby tworzyć i utrzymywać modele - wystarczy, że otrzymasz odpowied-nie narzędzia, które Ci to umożliwią. To z tego powodu motto naszego zespołu brzmi: “smarts for all!”.
Aby osiągnąć ten cel, zespół Machine Learning Services ma na pokła-dzie osoby o różnorodnej wiedzy i doświadczeniu w takich dziedzinach jak matematyka, inżynieria oprogramowania, Data Science czy Big Data. Rozmawiamy bezpośrednio z naszymi współpracownikami z innych działów firmy, aby wraz z nimi zidentyfikować obszary gdzie użycie Ma-chine Learningu przyniesie dużą wartość. Gdy się to uda, nie boimy się zakasać rękawów i własnoręcznie zaatakować problemu. Analizujemy dostępne dane i znajdujemy odpowiednie rozwiązanie ML, które na-
16
stępnie wdrażamy i utrzymujemy na produkcji. Z każdym dostarczonym modelem budujemy jednocześnie fragment wszechstronnej platformy deweloperskiej do ML. Dzięki takiemu stylowi pracy jesteśmy pewni, że budujemy odpowiednie narzędzia o wysokiej jakości, jako że każda rzecz jaką tworzymy, jest w pierwszej kolejności testowana przez nas.
Jeśli dołączysz do nas, będziesz miał/miała szansę pracować z najlep-szymi technologiami dostępnymi na rynku:
• AWS (Kinesis / Elastic BeanStalk)• Google Cloud Platform (BigQuery / DataFlow / DataStore /
CloudML)• Docker• Pandas, scikit-learn• TensorFlow• GitLabCI
Piszemy w Pythonie i Javie. Do zobaczenia!
E-Commerce (OSP)
Zespoły (w Krakowie znajdują się 2 z 4 ) pracują nad przeniesieniem na-szej aplikacji webowej (Webshop) do środowiska opartego o mikroser-wisy działające na chmurze Amazonu. Projekt rozwijany jest od same-go początku przez nasze zespoły, bierzemy czynny udział w procesie wymyślania architektury. Tworząc nową platformę mamy dużo okazji do integrowania się z serwisami innych zespołów jak i do testowania i wy-boru rozwiązań, które pozwolą nam na efektywne monitorowanie (New Relic, LogStash) i dostarczanie nowych funkcjonalności (MVP, continous delivery).
Technology stack• Java 1.8, Spring, Spring boot, Jersey, Hystrix, AWS, duży nacisk
na rozwiązania dedykowane mikroserwisom. • frontend: JQuery, backbone, marionette, grunt, node.js
Fulfillment Management (OSP)
Fulfillment to po angielsku “realizacja zamówienia”. Ale w jaki sposób? Przecież realizacja zamówienia to “wszystko”. Każdy informatyk z pew-nością fascynował się kiedyś wzorcami projektowymi. Jednym z nich jest mediator, czyli ktoś kto siedzi w centrum, odbiera jedne zdarzenia / ko-munikaty i na ich podstawie przesyła dane / komunikaty o inne miejsca.
Otóż zamówienia mogą być zrealizowane poprzez nasz własny transport (Ocado-Vans), ale także zewnętrznych kontrahentów (czyli kurierów lub paczkomaty (Click&Collect)). Z drugiej strony jeżeli zaczynamy współpra-cę z kolejnym dostawcą (np. kurierem) to chcemy, aby dla innych syste-mów, które korzystają z naszego serwisu wprowadzenie obsługi nowego kuriera było niewidoczne. Analogicznie wygląda wysłanie zamówienia do realizacji zanim zostanie pobrane do dostarczenia do klienta. Zamówie-nie może pochodzić z naszego magazynu, naszego sklepu albo z ma-gazynu obsługiwanego przez innego kontrahenta, gdzie trzeba wysłać informacje o dacie kiedy dany towar ma być przygotowany do odbioru przez nasz “transport”.
Reasumując, inne systemy mogą u nas tworzyć zamówienia, sprawdzać czy zostały dostarczone (lub odrzucone przez klienta), ale nie zajmują się szczegółami kto i w jaki sposób ma zamówienie dostarczyć (bo zajmuje-my się tym my).
zespoły / OCADO SMART PLATFORM
17
Technologie i narzędzia, z których korzystamy:• Java 8 (czyli lambdas)• Spring MVC• Spring Security• JUnit, Spring Test• NoSQL• AWS (DynamoDB, S3, ElasticBeantalk, SQS/SNS)• Swagger jako nasze GUI to REST-Serwice-ów• pewnie kiedyś GUI oparte na bibliotekach JavaScript
Logistics Planning (OSP)
Logistics Planning to nowy system, będący częścią działającej w chmurze AWS platformy OSP (Ocado Smart Platform).
Skompletowane zamówienie musi przebyć drogę między magazynem (CFC) a domem klienta. Pierwszy etap tej podróży odbywa się dużą ciężarówką, która zabiera zamówienia z Magazynu (CFC) i przewozi je do mniejszych placówek (zwanych Spoke’ami) rozmieszczonych w rożnych częściach UK. Spoke jest bazą, z której vany Ocado wyruszają w drogę do domów klientów.
Zadaniem zespołu jest napisanie aplikacji wspomagającej pracę Specjalistów od Planowania Operacji (Ops Planning). To oni, na podstawie aktualnego zapotrze-bowania, ustalają rozkład jazdy ciężarówek oraz planują liczbę tras vanów. Dane te są następnie wykorzystywane przez inne systemy, jak Routing systems (odpo-wiedzialny za optymalizację tras vanów) czy Slot booking service (udostępniają-cy informację o wolnych terminach dostawy dla Sklepu) dzięki udostępnionemu przez nas REST-owemu API.
zespoły / OCADO SMART PLATFORM
18
Technologie i narzędzia, z których korzystamy:• AngularJS, Karma, Jasmine, Protractor, JSHint• Java8, Jersey, Arquillian, JUnit• jOOQ + PostgreSQL (with JSON functions)• AWS
Pricing & Promotions (OSP & UK Live)
Projekt dla tych, którzy lubią liczyć pieniądze, a przy okazji są otwarci, aby te pieniądze liczyć używając Scali :) Tworzymy grupę serwisów utrzymy-wanych w chmurze Amazona (Spray/Akka), odpowiedzialnych za oblicze-nia cen i promocji. W skrócie, dostajemy koszyk produktów i zwracamy ten koszyk z cenami, promocjami i innymi zniżkami jak np. vouchery. Na-sze serwisy są używane przy każdej zmianie w koszyku zakupów w skle-pie internetowym jak i podczas kompletowania zamówienia w magazynie. Istotną częścią naszej pracy jest zabawa z algorytmami, które pozwalają efektywnie implementować logikę promocji. Operacje zmian w koszyku są częste, a możemy mieć do czynienia z tysiącami dostępnych promocji, co stawia nam wysokie wymagania wydajnościowe.
Oprócz serwisów tworzymy UI służący do definiowania promocji z uży-ciem AngularJS.
Technologie, które używamy:• Scala/Akka• Spray• Scala Guice• AWS (DynamoDB, Elasticache, SQS)• Testy: scalatest, cucumber, specs2
Retail Services (OSP)
Zespół (a właściwie skład - zespół samoorganizujący się na wzór Spo-tify) tworzy mikroserwisy odpowiedzialne za zarządzanie użytkownikami platformy Atmosphere, dostarczanie podstawowej konfiguracji związanej z retailerem (de-facto klientem platformy) oraz wyświetlanie interfejsu użytkownika, który jest punktem wejścia do całej platformy.
Zarządzanie użytkownikami obejmuje uwierzytelnianie, zarządzanie ha-słami, szyfrowanie danych identyfikujących osoby (PII). Serwis ten inte-gruje się z systemem Single Sing-on platformy Atmosphere, dla którego jest źródłem informacji o użytkownikach. W przyszłości najprawdopo-dobniej zostanie dodane bardziej zaawansowane zarządzanie rolami. Podobnie planowane jest rozbudowanie interfejsu użytkownika. Używane technologie:
• Spring Boot• AWS (DynamoDB, Kinesis, S3)• Angular.js• Gradle• Spock dla testów
Range Management Systems (OSP)
Sklep internetowy z pewnością nie mógłby działać bez… asortymen-tu produktów :) Tym właśnie zajmuje się Range Management, tj. prze-chowywaniem, przetwarzaniem i udostępnianiem danych o produktach, które Sprzedawca (Retailer) ma w swojej ofercie. “Range” w nazwie od-nosi się do “zakresu” asortymentu, oznacza też proces wprowadzania danego produktu do oferty.
19
Baza danych produktów to pozornie prosta rzecz. W rzeczywistości jed-nak na produkt składa się znacznie więcej danych niż tylko jego cena, nazwa czy zdjęcie. Marketingowcy będą zainteresowani tym jak produkt wygląda, jak jest opisany i czy dobrze prezentuje się na stronie. Magazyn z kolei potrzebuje dokładnych informacji na temat np. rozmiarów i wagi produktu, tego jak jest pakowany i jak powinien być przechowywany. Re-gulacje prawne wprowadzają ograniczenia w sprzedaży pewnych rodza-jów produktów, jak np. leków czy papierosów i to też nasz system musi respektować i w jakiś sposób obsługiwać. Generalnie różne wymagania sprawiają, że na produkt składa się bardzo wiele różnych detali i atrybu-tów.
System RMS udostępnia RESTowe API jak i webową aplikację GUI, które umożliwiają kompleksowe zarządzanie produktami.
Employee Planning Systems (OSP)
Employee Planning to system do zarządzania zasobami ludzkimi, w któ-rym przechowywane są najważniejsze dane na temat obecności oraz czasu pracy pracowników.
System pozwala operatorom konfigurować dostępnych pracowników oraz tworzyć dla nich grafiki pracy w oparciu o długoterminowe prognozy z osobnej aplikacji (Business Planning Systems). Employee Planning za-pisuje także informacje na temat faktycznego rozpoczęcia i zakończenia pracy (poprzez integrację z zegarami zmiany) i w oparciu o zasady usta-lone przez operatora porównując plan i rzeczywiste wydarzenia tworzy płatne lub bezpłatne elementy zmian, które są następnie wykorzystywa-ne przez inne aplikacje do płatności pracownikom.
Content Management System (OSP)
Celem projektu jest zbudowanie intuicyjnej aplikacji do zarządzania tre-ściami prezentowanymi na stronie sklepu oraz w aplikacjach mobilnych Ocado Smart Platform. Aplikacja ma umożliwić łatwe zarządzanie treścią nie wymagające umiejętności technicznych takich jak: html, css, a jed-nocześnie dać możliwość zaawansowanej edycji treści dla developerów.
Projekt składa się z:• systemu backendowego dostarczającego treść dla aplikacji sklepu• Systemu frontendowego pozwalającego na zarządzanie treścią
i konfigurację sklepu• Tworzymy zespół interdyscyplinarny, bezpośrednio pracuje z nami
PO, UX i QA.
Używane technologie:• Java8• Spring Boot• AWS (DynamoDB, Kinesis, S3)• Frontend: React.js, Redux, Webpack, Node.js• Gradle