+ All Categories
Home > Documents > CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW...

CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW...

Date post: 25-May-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
20
Transcript
Page 1: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi
Page 2: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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)

Page 3: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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

Page 4: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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

Page 5: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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

Page 6: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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.

Page 7: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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

Page 8: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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

Page 9: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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

Page 10: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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].

Page 11: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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

Page 12: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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

Page 13: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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.)

Page 14: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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

Page 15: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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-

Page 16: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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

Page 17: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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

Page 18: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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.

Page 19: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

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

Page 20: CFC SYSTEMS Ocado Smart Platform (OSP)itmatch.pl/wp-content/uploads/2018/02/ocadozespoly.pdfW środku tej maszyny 24h/dobę porusza się kilka tysięcy koszyków z to-warami zamówionymi

Recommended