POIT #138: Software development dla urządzeń typu SMART na przykładzie Amazon Ring

Witam w sto trzydziestym ósmym odcinku podcastu „Porozmawiajmy o IT”. Tematem dzisiejszej rozmowy jest software development dla urządzeń typu SMART na przykładzie Amazon Ring.

Dziś moim gościem jest Grzegorz Paciorkiewicz – software engineering manager w Amazon Ring w Gdańsku. Ukończył Politechnikę Gdańską na wydziale elektroniki i automatyki. Posiada wieloletnie doświadczenie w kierowaniu zespołami zajmującymi się programowaniem zwinnym. Z Amazonem związany od 2018 roku, swoją karierę w firmie zaczynał jako software development manager. Wcześniej swoje doświadczenie zdobywał m.in. w ThyssenKrupp System Engineering, Intel-u i Grouponie. Wolne chwile spędza na sporcie i wciąganiu w sportowe pasje swoich dzieci. Latem uprawia kitesurfing, a przez cały rok gra w piłkę nożną oraz gry planszowe.

W tym odcinku rozmawiamy o:

  • co to są urządzenie typu SMART i gdzie mają swoje zastosowanie?
  • czym jest Amazon Ring?
  • w jakie aspekty Amazon Ring Grzegorz jest zaangażowany?
  • czym się charakteryzuje software development na urządzenia IoT i co go odróżnia od innych gałęzi tworzenia oprogramowania?
  • jakie jest znaczenie security w obszarze urządzeń SMART?
  • jakie rozwiązanie security są wbudowane w Ring?
  • jak testuje się takie oprogramowanie?
  • jak skala tworzonych w Amazon rozwiązań odbija się na satysfakcji z codziennej pracy?
  • jaki jest impact biznesowy rozwiązań w obszarze SMART tworzonych przez polskich inżynierów?
  • czy praca nad software’em urządzeń SMART w tak dużej firmie jak Amazon daje możliwość proponowania własnych rozwiązań?
  • jakie technologie wykorzystuje się do tworzenia oprogramowania na urządzenia SMART?
  • czy praca w tej branży polega bardziej na kreowaniu czy dostosowywaniu istniejących rozwiązań?
  • co przyciągnęło Grzegorza do Amazon?

Subskrypcja podcastu:

Linki:

Wsparcie na Patronite:

Wierzę, że dobro wraca i że zawsze znajdą się osoby w bliższym lub dalszym gronie, którym przydaje się to co robię i które zechcą mnie wesprzeć w misji poszerzania horyzontów ludzi z branży IT.

Patronite to tak platforma, na której możesz wspierać twórców internetowych w ich działalności. Mnie możesz wesprzeć kwotą już od 5 zł miesięcznie. Chciałbym oddelegować kilka rzeczy, które wykonuję przy każdym podcaście a zaoszczędzony czas wykorzystać na przygotowanie jeszcze lepszych treści dla Ciebie. Sam jestem patronem kilku twórców internetowych i widzę, że taka pomoc daje dużą satysfakcję obu stronom.

👉Mój profil znajdziesz pod adresem: patronite.pl/porozmawiajmyoit

Pozostańmy w kontakcie:

 

Muzyka użyta w podcaście: „Endless Inspiration” Alex Stoner (posłuchaj)

Transkrypcja podcastu

To jest 138. odcinek podcastu Porozmawiajmy o IT, w którym z moim gościem rozmawiam o software developmencie dla urządzeń typu smart na przykładzie Amazon Ring.

Przypominam, że w poprzednim odcinku rozmawiałem o języku Kotlin.

Wszystkie linki oraz transkrypcję dzisiejszej rozmowy znajdziesz pod adresem porozmawiajmyoit.pl/138.

Ocena lub recenzja podcastu w Twojej aplikacji jest bardzo cenna, więc nie zapomnij poświęcić na to kilku minut.

Nazywam się Krzysztof Kempiński, a moją misją jest poszerzanie horyzontów ludzi z branży IT. Środkiem do tego jest między innymi ten podcast. Zostając patronem na platformie Patronite, możesz mi w tym pomóc już dziś. Wejdź na porozmawiajmyoit.pl/wspieram i sprawdź szczegóły. Jednocześnie bardzo dziękuję moim obecnym patronom.

A teraz życzę Ci już miłego słuchania.

Odpalamy!

Cześć! Mój dzisiejszy gość to software engineering manager w Amazon Ring w Gdańsku. Ukończył Politechnikę Gdańską na Wydziale Elektroniki i Automatyki. Posiada wieloletnie doświadczenie w kierowaniu zespołami zajmującymi się programowaniem zwinnym. Z Amazonem związany od 2018 roku, swoją karierę w firmie zaczynał jako software develompment manager. Wcześniej swoje doświadczenie zdobywał między innymi w ThyssenKrup System Engineering, Intelu i Grouponie. Wolne chwile spędza na sporcie i wciąganiu w sportowe pasje swoich dzieci. Latem uprawia kitesurfing, a przez cały rok gra w piłkę nożną oraz gry planszowe. Moim i Waszym gościem jest Grzegorz Paciorkiewicz.

Cześć, Grzegorzu! Bardzo miło mi gościć Cię w podcaście.

Cześć, Krzysztof! Bardzo miło mi też być tutaj, witam wszystkich.

Dzisiaj z Grzegorzem będę rozmawiał właściwie o trzech tematach: o software developmencie, o urządzeniach smart i o Amazonie, także szykuje się bardzo merytoryczna i ciekawa rozmowa, której już się nie mogę doczekać. Natomiast rozpocznę tak, jak każdą moją tutaj rozmowę, czyli od pytania do Ciebie, Grzegorzu: czy słuchasz podcastów? Jeśli tak, to może masz jakieś swoje ulubione audycje, o których chciałbyś powiedzieć.

Słucham, jak tylko mam możliwość, to słucham podcastów, chociaż słucham głównie, kiedy prowadzę samochód, więc przez ostatnich dwadzieścia miesięcy powiedziałbym, że tych okazji było mniej, bo pracuję głównie z domu. Ale z polskojęzycznych podcastów słucham głównie tych z zagadnień polityki oraz informacji o świecie. W tematach politycznych moim „abc” jest Raport o stanie świata Dariusza Rosiaka – gorąco polecam oraz Stan po Burzy. A z takiej tematyki poza politycznej to Dział Zagraniczny oraz Świat z lotu Drozda. Rzadziej już sięgam wówczas po anglojęzyczne-  TED Radio Hour od NPR.

Świetnie, bardzo fajne rekomendacje. Okej, takim wątkiem spinającym dzisiaj tę naszą rozmowę będą urządzenia smart, więc myślę, że dobrze by było zacząć od powiedzenia, czym są właśnie te urządzenia, gdzie mają swoje zastosowanie.

Urządzenia smart często nazywane są też urządzeniami IoT, czyli Internet of Things. Są to urządzenia elektroniczne mogące działać autonomicznie, będące w stanie połączyć się z innymi urządzeniami za pomocą różnych protokołów komunikacyjnych. To jest chyba najlepsza książkowa definicja, jaką mogę podać. Urządzenia smart są po prostu wokół nas, mają wiele zastosowań. Przykładowo w domu urządzenia smart występują w postaci pralki, suszarki, odkurzacza, ekspresu do kawy czy zewnętrznej kamery. Klienci firmy Amazon mają ponad sto milionów urządzeń smart podłączonych do asystenta głosowego Alexy, a co kilka miesięcy przybywa kilka milionów – to pokazuje zakres, ile mamy tych urządzeń i też tak naprawdę, czym są te urządzenia. Jeżeli myślę o tych urządzeniach, to myślę też w kategorii dynamiki, jaka następuje w ramach technologii. Mam trochę lat i pamiętam, jakiej rewolucji dokonał Internet, i to, że teraz każdy komputer może być lub jest podłączony do sieci. Rewolucja, która teraz się odbywa, to jest rewolucja pod tytułem: „podłączmy do sieci wszystko inne”. I tym są urządzenia smart.

Właśnie widzimy ich coraz więcej w naszym otoczeniu, myślę że ten trend jeszcze będzie przybierał na sile. Faktycznie będziemy się otaczać takimi urządzeniami z racji chociażby tego, że będą nam one ułatwiały codzienne rzeczy. Myślę też, że duża tutaj rola projektantów, nie tylko rozwiązań hardware’owych związanych z tymi urządzeniami, ale może przede wszystkim projektantów rozwiązań software’owych po to, żeby te urządzenia działały niezawodnie, żeby były nam pomocne, a jednocześnie też tak niewidoczne. Myślę, że trochę o to chodzi, żeby ta elektronika nam się aż tak mocno nie rzucała w oczy. I tutaj takim wątkiem, który spina i software development, i te urządzenia smart, o których powiedziałeś, jest Amazon Ring, prawda? Na przykładzie właśnie Amazon Ringa będziemy dzisiaj mówić o software developmencie tych urządzeń IoT, więc poproszę Cię, żebyś powiedział, czym jest Amazon Ring, jaka historia stoi za rozwojem Amazon Ringa.

Jasne, może najpierw powiem, czym jest firma Amazon, bo wielu z nas, wielu słuchaczy może kojarzyć firmę Amazon ze sklepem internetowym, ale też pewnie wielu z nich jest znany skrót AWS, czyli Amazon Web Services. Są to rozwiązania związane ze świadczeniem usługi cloud computing, które są dostępne już od 2006 roku i to też jest firma Amazon. To, co może nie przebija się do szerszej świadomości w Polsce to fakt, że Amazon jest również producentem urządzeń elektronicznych. Wielu ze słuchaczy może kojarzyć urządzenia takie jak Kindle, które są już od 2007 roku na rynku, ale też i coraz częściej występuje w Polskich domach asystent głosowy Alexa, czyli urządzenia Echo. Jeśli chodzi o firmę Ring, to wszystko zaczęło się od dzwonka do drzwi. Jamie Siminoff, dyrektor Ringa jest wynalazcą. Pracował nad jednym ze swoich kolejnych wynalazków w garażu i uświadomił sobie, że wielokrotnie nie odbierał przesyłki, bo nie słyszał po prostu domofonu. Wtedy zdał sobie sprawę, że chciałby odbierać domofon na swoim telefonie i zbudował pierwszą wersję wideodzwonka.

To, co może nie przebija się do szerszej świadomości w Polsce to fakt, że Amazon jest również producentem urządzeń elektronicznych. Wielu ze słuchaczy może kojarzyć urządzenia takie jak Kindle, które są już od 2007 roku na rynku, ale też i coraz częściej występuje w Polskich domach asystent głosowy Alexa, czyli urządzenia Echo. 

Oczywiście to, co jest ciekawe w historii Ringa to fakt, że będąc pomysłowym wynalazcą, potrzebował też wsparcia finansowego. Do tej pory na YouTubie można znaleźć filmiki, jak w 2013 roku trafia do programu Shark Tank ze swoim produktem, właśnie domofonem, wideodomofonem, Doorbotem, z nadzieją pozyskania siedmiuset tysięcy dolarów inwestycji na swój produkt, co mu się nie udało. Ale to go nie powstrzymywało. Mimo braku inwestycji z samego programu, ówczesny Ring miał bardzo solidny business model. Od tego czasu produkt przekształcił się w całą linię urządzeń i usług z zakresu home security. Pomagają one w podniesieniu bezpieczeństwa w naszych domach. W 2014 roku na rynku pojawił się pierwszy dzwonek do drzwi pod nazwą Ring, a w 2017 zewnętrzna kamera. W 2018 natomiast Ring dołączył do rodziny Amazona, co pozwoliło, dzięki wspólnemu podejściu, na wiele innowacji z zakresu bezpieczeństwa domowego.

Niesamowita historia, muszę przyznać, i to też pokazuje, jak takie realne potrzeby, które mamy w życiu, później mogą się przekształcić właśnie w wynalazki w jakichś pierwszych wersjach, a później ewoluować. Tak jak teraz mówisz o Amazon Ringu jako o całej linii produktów, coś co jest dostępne praktycznie dla całej ludzkości, na całym globie. No i na początku właśnie mówiłem, że jesteś zaangażowany w rozwój Amazon Ringa, jeszcze będziemy mówić, gdzie dokładnie, bo to też jest ciekawa historia. Natomiast chciałem Cię zapytać, z racji tego, że to jest cała linia w sumie różnych produktów na ten moment, w jaki sposób Ty jesteś zaangażowany na dzień dzisiejszy w rozwój Amazon Ringa, w jakie aspekty?

Wraz z zespołami inżynieryjnymi znajdującymi się w Polsce jesteśmy zaangażowani w rozwój, powiedziałbym, całego portfolio urządzeń IoT, jakie dostarcza firma Ring. Tworzymy nowe funkcjonalności dla obecnych urządzeń oraz również pracujemy nad naszymi nowymi produktami. Zespoły, z którymi pracuję, zaangażowane są bezpośrednio w każdy aspekt tworzenia oprogramowania od technologii embedded, które wykonywane są na urządzeniach, po rozwiązania cloudowe, jak i support DevOpsowy. Nasze zespoły również w Polsce wspierają aspekt e-commerce dla firmy Ring, ale też dostarczają wsparcia bezpośrednio zespołom machine learningowym w ramach organizacji.

Czyli mógłbym to podsumować jako zaangażowanie w software development w większości, w największym tutaj aspekcie, największym procencie. Zastanawiam się, czym taki software development przeznaczony właśnie na urządzenia smart, na urządzenia IoT różni się od innych gałęzi tworzenia oprogramowania, tworzenia webowego, mobilnego i tak dalej. Czy w ogóle są jakieś różnice, które Ty zauważasz, o których mógłbyś powiedzieć?

To jest bardzo ciekawe pytanie i oczywiście z mojej perspektywy widzę wiele tych różnic ze względu na fakt, że urządzenia IoT należą do zintegrowanych systemów. To nie są pojedyncze urządzenia, które dostarczamy, tylko dostarczamy je jako Echo system, a sam na początku powiedziałeś, że myślimy o ułatwieniu życia. Ułatwienie życia wiąże się z tym, że te urządzenia są połączone. Z jednej strony mamy wyzwania związane z samym urządzeniem i tutaj dochodzą oczywiście ograniczenia wynikające z tego, jak po prostu jest zbudowane urządzenie.

Bardzo często urządzenia mają ograniczoną czy to pamięć, czy moc obliczeniową procesora, stąd oprogramowanie musi być bardzo wydajne i zajmować mało pamięci, aby efektywnie wykorzystać dostępny budżet. Nasze rozwiązania muszą być zoptymalizowane pod konkretne rozwiązania również. Jeżeli urządzenie jest zasilane bateryjnie, musi ono być zoptymalizowane tak, żeby nie tylko wykonywać swoją aktywność, ale też żeby odpowiednio długo wystarczała bateria, stąd ten budżet bardzo często się przesuwa. Niektóre urządzenia muszą być zoptymalizowane pod kątem performance’u, więc to narzuca jakby dodatkowy stopień swobody podczas tworzenia oprogramowania.

Czas reakcji urządzenia jest kolejnym wyzwaniem, które przychodzi mi na myśl. Przeciętny użytkownik nie chce czekać, żeby jego urządzenie reagowało dłużej niż dwie sekundy, a to oznacza, że to nie tylko urządzenie musi szybko reagować, ale też połączenie z chmurą i z dostępem do informacji, które są w chmurze, musi się wykonać poniżej tych dwóch sekund. Komunikacja tak naprawdę odbywa się w czasie rzeczywistym. Stąd pewne problemy, które mamy, są czasem problemami akademickimi, które są rozwiązywane na poziomie studiów na inżynierii oprogramowania, tak o tym myślę. 

Kolejną cechą charakterystyczną stopnia swobody, który mi przychodzi na myśl, to jest to, że cała technologia wokół jest też bardzo dynamiczna. Przykład to przejście na 5G, które jest takim tematem dość mocno podnoszonym, otwiera bardzo dużo nowych możliwości w kontekście przepustowości, dostępności, czasu dostępu. To wszystko sprawia, że te urządzenia też muszą nadążać za tymi technologiami, a często też narzucać nowe trendy. Kiedy myślę o odbiorcach naszych urządzeń, to jest to użytkownik końcowy, którym bardzo często też ja jestem i bardzo ważnym aspektem jest plug and play, to że otwieram urządzenie, włączam je i mogę z niego od razu korzystać. Tak więc, gdybym ubrał jaki kolejny aspekt jest bardzo ważny, jest to niezawodność i bezpieczeństwo informatyczne naszych klientów. Użytkownicy ufają, że ich dane są bezpieczne i na urządzeniu można polegać.

Ostatnią rzeczą, która mi przychodzi do głowy z punktu widzenia inżynieryjnego to fakt, że urządzenia smart w zasadzie są bardzo często aktualizowane nawet bez naszej wiedzy. To już nie jest taka sytuacja, w której my musimy podłączyć urządzenie do komputera i zaktualizować jego oprogramowanie. Pojęcie OTA – Over the Air update. Dzieje się tak, że nasze urządzenia są aktualizowane nawet, kiedy o tym nie wiemy, w czasie pracy, co stwarza z punktu widzenia inżynierów pracujących na oprogramowaniu wyzwanie pod tytułem: „jak sprawić, żeby moje urządzenie było w stanie też się aktualizować w czasie runtime”.

Okej, rozumiem. To jest faktycznie fascynujące i otwiera się zupełnie inny wachlarz problemów, które trzeba rozwiązywać, mam wrażenie. Ja osobiście bardziej jestem zaangażowany w programowanie aplikacji webowych i tutaj trochę przestaliśmy już myśleć o sprzęcie, na którym to wszystko działa, bo większość tych rzeczy znajduje się czy działa w oparciu o infrastrukturę chmurową. I chociażby z wykorzystaniem AWS możemy sobie w najgorszym przypadku zwiększyć zasoby sprzętowe i w ten sposób skalować. Natomiast oczywiście w przypadku urządzeń smart takiej możliwości nie mamy, więc fakt, że musimy od samego początku brać pod uwagę ograniczenia sprzętowe, to jest całkiem nowa gama problemów, o których trzeba myśleć.

Zaznaczyłeś też, i ja osobiście wiem, że to jest trochę Twój konik i obszar zainteresowań, że bezpieczeństwo jest bardzo istotne. Obserwuję, że mamy taki trend shift-left jeśli chodzi o to bezpieczeństwo. Coraz bardziej chcemy o nim myśleć i zapewniać je już na tych wczesnych etapach powstawania oprogramowania, kiedy wręcz żadna linijka kodu jeszcze nie została napisana, a już zastanawiamy się, jak zabezpieczyć całe to rozwiązanie. Czy w przypadku urządzeń smart mamy podobne zjawisko? Z jakimi problemami, z jakimi zagrożeniami musimy się tutaj mierzyć w przypadku tych urządzeń IoT po to, żeby finalnie ten produkt był bezpieczny dla użytkownika końcowego?

To jest bardzo złożone pytanie, ale zacząłbym od tego, o czym mówiłem na początku, czyli czego dokonała rewolucja Internetu. Myślę, że rewolucja IoT doprowadzi do sytuacji, w której bycie online będzie jak elektryczność. Nie będziemy o tym myśleć, ciężko będzie sobie pozwolić na to, żeby być offline, po prostu wszystko dookoła nas będzie podłączone i nie będziemy myśleć o Internecie jak o rzeczy, którą można włączyć i wyłączyć. Jak prąd – po prostu jest. I myślę, że ta świadomość coraz częściej też przebija się zarówno do odbiorców, jak i do producentów urządzeń, bo to oznacza, że ten aspekt security jest bardzo ważny. Ja myślę o aspekcie security w kontekście zarówno bezpieczeństwa, jak i prywatności danych. Więc odpowiadając na twoje pytanie: tak, rzeczywiście ten shift-left jest widoczny, coraz więcej osób podnosi ten aspekt, ale też z drugiej strony, kiedy korzystamy z tych urządzeń, nie zdajemy sobie z tego sprawy i zapominamy o tym, co sprawia, że właśnie dlatego to jest takie wygodne. Korzystając z Echo systemu przykładowo, asystent mowy Alexa jeden na pięć razy w ogóle nie prosi o interakcję albo nie wymaga interakcji użytkownika, tylko wykonuje pewne akcje autonomicznie. To jest właśnie dowód na tę wygodę, która występuje.

<blockquote> Myślę, że rewolucja IoT doprowadzi do sytuacji, w której bycie online będzie jak elektryczność. Nie będziemy o tym myśleć, ciężko będzie sobie pozwolić na to, żeby być offline, po prostu wszystko dookoła nas będzie podłączone i nie będziemy myśleć o Internecie jak o rzeczy, którą można włączyć i wyłączyć. Jak prąd – po prostu jest. </blockquote>

Ale wracając do drugiej części pytania, a propos ryzyk czy może jakie aspekty bezpieczeństwa są kluczowe w świecie smart. Przede wszystkim fakt, że urządzenie smart jest podłączone do sieci, w zasadzie bardzo często ciągle podłączone do sieci, ma możliwość i dostęp do tej samej sieci, do której podłączamy nasze komputery osobiste, telefony i wyróżniłbym tu kilka aspektów bezpieczeństwa. Z jednej strony to jest aspekt cyberbezpieczeństwa: czy jestem w stanie zdobyć hasło Wi-Fi? Jak i również fizyczne bezpieczeństwo: czy jestem w stanie zdobyć adres mojego zamieszkania, lokalizację? No i oczywiście prywatność: czy jestem w stanie wyłuskać prywatne filmy, zdjęcia za pomocą takiego urządzenia?

To są, powiedziałbym, takie ogólne przestrzenie, które są bardzo ważne dla nas w firmie Ring. Od samego początku budujemy zaufanie naszych klientów – mówiłeś, że to jest mój konik, ja bym powiedział, że to jest konik w ogóle dla firmy – bo aspekt bezpieczeństwa jest po prostu kluczowym aspektem, który buduje zaufanie naszych klientów zarówno na poziomie software’u, jak i też na poziomie hardware’u. Nasze urządzenia są secure by design, więc to oznacza, że projektując nasze urządzenia już myślimy i aspektach security.

Kolejnym aspektem bezpieczeństwa jest aspekt fizycznego dostępu do samego urządzenia. Bardzo kluczowe jest zabezpieczenie przed tak zwanym reverse engineeringiem. Chodzi o to, żeby dane urządzenie nie było użyte w sposób niezgodny z jego założeniem przez użytkownika czy przez na przykład przejęcie tego urządzenia. Tak więc jeżeli urządzenie jest niedostatecznie zabezpieczone, może to też prowadzić do odkrycia podatności w tym urządzeniu, które pozwalają na to, żeby uzyskać informacje w całym systemie, łącznie z back-endem. Stąd jakiekolwiek modyfikacje muszą być zabezpieczone na urządzeniu i ważne jest doprowadzenie do tego, żeby to urządzenie było bezpieczne również jako device.

Wspomniałeś na początku, że Amazon Ring historycznie wywodzi się od dzwonka, że de facto na początku był wideodzwonkiem, czyli takim urządzeniem, które znajduje się w naszym otoczeniu, w takim intymnym otoczeniu. Od tych rzeczy oczekujemy zaufania, oczekujemy, że to urządzenie nas nie zdradzi, że to urządzenie będzie bezpieczne. Te same oczekiwania przekładamy na urządzenia IoT, na urządzenia smart oczywiście. Więc chcę Cię teraz zapytać, jakie rozwiązania z tej domeny security stosujecie, jakie rozwiązania implementujecie w całej linii urządzeń Amazon Ring na ten moment.

W urządzeniach Amazon Ring oferujemy wszystko, co moglibyśmy nazwać ogólnie industry standard i może pierw powiem, co ja rozumiem przez industry standard, a potem powiemy jeszcze, co robimy więcej. Przez industry standard rozumiem rozwiązania, które są szeroko stosowane w urządzeniach. Mówię tu o takim aspekcie, jak Secure Boot, czyli funkcji, która zapewnia, że na urządzeniu będzie działać tylko i wyłącznie autoryzowane oprogramowanie. Implementacja Secure Boota oczywiście zależy od możliwości sprzętowych, tak zwanych SoC (System on the Chip) i różni dostawcy hardware’u umożliwiają różne architektury bezpiecznego rozruchu, ale ważny jest fakt, że nie ma możliwości przeflashowania urządzenia oprogramowaniem, które jest niezautoryzowane. Na urządzeniach firmy Ring tylko oprogramowanie podpisane kluczem firmowym Ring może działać.

Kolejnym zabezpieczeniem jest fakt zabezpieczenia samej pamięci, czyli to jest One-Time-Programmable Memory. Umożliwia to zapisanie na urządzeniu informacji, których nie można potem usunąć. Zwykle służy ona do przechowania informacji o kluczu, o MAC-u urządzenia, ID i ideą jest brak możliwości podmienienia tych wartości. Z platformowych zabezpieczeń mamy na pewno jeszcze takie aspekty, jak Secure Storage i Anti-Rollback Protection. Pierwszy umożliwia zapisywanie poufnych informacji zaszyfrowanych w nieulotnej części pamięci urządzenia, zwykle służy do przechowywania kluczy kryptograficznych. Drugi natomiast służy do blokowania, cofania wersji firmware’u. Tak jak powiedziałem, urządzenia są aktualizowane i często pozwala to nam po wykryciu jakiejś potencjalnej luki zaktualizować oprogramowanie. Urządzenie uniemożliwia cofnięcie się tego oprogramowania.

Oprócz zabezpieczeń na urządzeniu posiadamy zaimplementowane funkcjonalności, które dbają o bezpieczeństwo całego systemu. Tak jak wspomniałeś, secure setup umożliwia jedynie bezpieczne połączenie z chmurą Ringa za pomocą szyfrowanego kanału TLS. Kanał pomiędzy aplikacją mobilną na urządzeniu jest w pełni szyfrowany bezpośrednio do urządzenia. Czyli masz rację, to nie jest tylko kwestia zabezpieczenia samego urządzenia, ale też jego połączenia.

Wymieniłem oczywiście tylko niektóre rozwiązania, które stosujemy z szeroko rozumianego industry standard, ale chciałem po prostu przybliżyć te zagadnienia, które są ogólnie znajome. Uważam, że tym co dodatkowo daje tę ekstra wartość jest to, że my nie tylko myślimy o tych zabezpieczeniach na poziomie urządzeń, ale też mamy w ramach organizacji naszej firmy proces, którego celem jest dopilnowanie, że wypuszczany produkt spełnia standardy i wymogi bezpieczeństwa, jak i prywatności danych. Może mówimy o kwestii bezpieczeństwa, ale dla mnie kwestie bezpieczeństwa i prywatności danych są równie ważnymi aspektami. Uważam, że tym, co podnosi poprzeczkę w aspekcie security, jest rozwiązanie, które wymyśliliśmy u nas w Amazon Polska. Nazywamy to Device Remote at a Station. Idea jest taka, żebyśmy byli w stanie w sposób aktywny monitorować, identyfikować urządzenia, co do których mamy podejrzenie, że zostały zaatakowane lub były próby naruszenia ich bezpieczeństwa.

Tak jak wspomniałem, oprócz kwestii bezpieczeństwa jest też aspekt prywatności i Amazon Ring postanowił zastosować szyfrowanie end-to-end, czyli do tej pory niespotykane rozwiązanie dla tego typu urządzeń, gdzie szyfrowane połączenie jest stosowane na całej długości, czyli od urządzenia do aplikacji. Dla Ringa bardzo ważne jest, żeby klienci kontrolowali, kto ogląda ich film. Domyślnie Ring szyfruje wideo użytkowników już w trakcie przesyłania do chmury, to jest w standardzie. Jednakże my dodatkowo udostępniliśmy naszym klientom możliwość włączenia szyfrowania wideo end-to-end, co sprawia, że ich filmy można obejrzeć tylko i wyłącznie na zarejestrowanych urządzeniach mobilnych.

To faktycznie podnosi wysoko poprzeczkę, jeśli chodzi o zabezpieczenia. Natomiast rozmawiając jak inżynier oprogramowania z inżynierem oprogramowania doskonale wiemy, że na tym jeszcze działa oprogramowanie, z którego nie da się zawsze wyeliminować wszystkich podatności i wszystkich błędów. Dlatego istotne jest testowanie oprogramowania tak, żeby zgodnie też z tym trendem shift-left jak najszybciej wyłapać błędy, które wówczas kosztują nas najmniej po prostu. Dlatego chcę Cię teraz zapytać, jak w Amazonie testujecie, jak podchodzicie do testowania oprogramowania, które właśnie wytwarzacie, które w przyszłości będą działać na urządzeniach IoT.

Och, to jest bardzo szerokie zagadnienie. Testowanie oprogramowania jest tak dużym tematem, że moglibyśmy poświęcić chyba kolejne spotkanie na to. Co do trendu shift-left samego w sobie, myślę że bardzo kluczowym aspektem jest to, że doprowadzamy do sytuacji, w której nie czekamy też na finalny produkt zanim zaczniemy uruchamiać jego oprogramowanie i to jest to, co widzę, jeśli chodzi o development urządzeń. Czyli są to wszelkiego rodzaju emulatory, symulatory, płyty FPGA, które pozwalają już uruchamiać oprogramowanie na wczesnej fazie, kiedy jeszcze samo urządzenie, wykonanie urządzenia nie jest dostępne. To sprawia, że to oprogramowanie bardzo szybko rusza i jest możliwość już nie tylko jego dostarczania, weryfikowania funkcjonalności, ale też uczenia się na tym, czego możemy się spodziewać.

Ale testy zaczynają się już, powiedziałbym, na poziomie hardware’u. To jest bardzo charakterystyczna cecha pracy z urządzeniami, kiedy to nie tylko programowanie ma wpływ na zachowanie i rozwiązanie, ale to, jak zbudowane jest urządzenie, jak dobrano komponenty, jak te komponenty są wykonane, jak one ze sobą współpracują. Co do weryfikacji oprogramowania zakładam, że jest to bardzo zbliżone do tego, jak ono występuje i to w rozwiązaniach back-endowych czy aplikacji. Myślę, że jakbym miał to podsumować, to jest to podejście od szczegółu do ogółu, czyli każdy komponent jest testowany indywidualnie, następnie testowany jest jako całościowe rozwiązanie, aby uzyskać odpowiednie pokrycie testami.

Stąd bardzo dużą wagę przykładamy nie tylko do samego posiadania testów, ale też do sposobu ich wykonywania. Aby zwiększyć pokrycie o odpowiedni czas iteracji oprócz procesów continuous integration, continuous deployment dla samego oprogramowania, bardzo ważne jest to, żeby te testy były wykonywane w sposób automatyczny. Ale to co jest ciekawe na poziomie firmy Amazon Ring, to że nasi inżynierowie są też testerami w ramach projektów, w których pracują. Mamy możliwość dołączenia do beta programu i testujemy po prostu nasze urządzenia na co dzień. To co bardzo mi się podoba w organizacji, to fakt że zbieramy feedback na poziomie satysfakcji urządzenia, nie tylko czy ono działa dobrze, źle, czy ma jakieś problemy, tylko też jak dużą satysfakcję nam daje korzystanie z tego urządzenia.

Ale to co jest ciekawe na poziomie firmy Amazon Ring, to że nasi inżynierowie są też testerami w ramach projektów, w których pracują. Mamy możliwość dołączenia do beta programu i testujemy po prostu nasze urządzenia na co dzień. To co bardzo mi się podoba w organizacji, to fakt że zbieramy feedback na poziomie satysfakcji urządzenia, nie tylko czy ono działa dobrze, źle, czy ma jakieś problemy, tylko też jak dużą satysfakcję nam daje korzystanie z tego urządzenia. 

Ogólnie myślę, że to jest świetny pomysł, żeby faktycznie deweloperzy pracujący nad danym rozwiązaniem korzystali z tych rozwiązań. Kiedy na własnej skórze czują czy widzą efekt działania, to wtedy po pierwsze lepiej się utożsamiają ze swoimi rozwiązaniami, a po drugie też być może są w stanie przewidzieć pewne rzeczy bardziej do przodu, więc to jest zdecydowanie wydaje mi się krok w dobrym kierunku. Kiedy mówiłeś o inżynierach pracujących w Amazon Ring, którzy też są testerami, to przyszło mi na myśl, że taką niebywałą rzeczą czy niebywałym plusem pracy w tak dużej firmie jak Amazon jest to, że tworzy się rozwiązania o zasięgu globalnym. Ta skala jest zdecydowanie większa i tak się zastanawiam, jak dla Ciebie, jak dla Twoich kolegów, koleżanek to się odbija w codziennej pracy. Myślę tutaj zarówno o tej stronie inżynieryjnej, technicznej, jak i o tym, że jest ta satysfakcja z tworzenia czegoś o tak dużym zasięgu. Jest też duża odpowiedzialność, która z tego wynika. Czy jest tutaj jakiś impakt, bezpośredni wpływ na satysfakcję z Waszej pracy z tego wynikający?

Masz rację, praca dla firmy Amazon jest fascynująca dla mnie osobiście, bo jest to globalna firma. Urządzenia, które produkujemy można po prostu kupić w każdym miejscu na świecie. Z drugiej stronie nie myślę o firmie jako o jakiejś korporacji, bo to wygląda trochę jak praca bandy, powiedziałbym, startupów, z których każdy próbuje dostarczyć wartość unikatową dla swojego klienta. Taka organizacja zespołów, w której jest po prostu grupa startupów, powoduje że na co dzień nie czuję, że pracuję w tej wielkiej organizacji.

Ale masz rację, dostarczamy rozwiązania, które są dostępne na całym świecie i są to namacalne urządzenia, które mamy, których jesteśmy beta testerami też. Możemy je dotknąć, możemy je zobaczyć, a mając urządzenia w domu jestem w stanie pokazać je moim znajomym – to jest to nad czym właśnie pracuję, to jest to, za co jestem odpowiedzialny, to jest to, co będzie można zobaczyć prawdopodobnie już niedługo na rynku. Więc dużo łatwiej jest mi na przykład wytłumaczyć mojej żonie czy moim dzieciom, czym się zajmuję w pracy. Niezależnie od tego, w jakim zespole Amazona pracujemy, to co jest ważne, to że staramy się skrócić tę drogę do klienta, dlatego też nasze zespoły są zaangażowane w testowanie urządzeń i weryfikowana jest ta satysfakcja. Mając świadomość tego wszystkiego – tak, to daje bardzo dużo satysfakcji.

Super. Reprezentujesz oddział gdański firmy Amazon i teraz, myślę, jest dobry moment na to, żeby się trochę pochwalić. Chcę Cię zapytać o to, jaki jest impakt biznesowy tych rozwiązań, które właśnie w oddziale gdańskim tworzycie w obszarze smart, na całą tę linię, na inne produkty firmy Amazon. Jaki tutaj jest ten wpływ biznesowy?

Reprezentuję oddział gdański, ale biuro mamy w Warszawie, w Krakowie i fakt, że w Amazon Ringu jestem od roku uświadamia mi tak naprawdę, że z wieloma osobami pracuję na terenie całego kraju. Ale wracając do tego, co jest na pewno unikatowe na skalę Polską. W Amazon Development Center Poland tworzymy oprogramowanie, które trafia na urządzenia dostępne na całym świecie. Co więcej, sami wymyślamy, proponujemy nowe unikatowe rozwiązania. Nie tylko mamy wpływ i fizycznie dostarczamy rozwiązania, które trafiają do naszych klientów, ale również współtworzymy wizję produktu, jaki powstaje, przez to, że pracujemy nad tym produktem.

Powiedziałeś, że nie traktujesz pracy w Amazonie jako pracy w korporacji. Czy praca nad software’em urządzeń IoT, urządzeń smart w tak dużej firmie daje możliwość proponowania pewnych rzeczy od siebie, proponowania własnych rozwiązań, tworzenia jakichś proval concept, tworzenia eksperymentów? Chciałbym Cię zapytać, na ile elastyczna jest praca w takiej organizacji jak Amazon.

Wcześniej o tym wspomniałem, że czasem mam wrażenie, że to jest banda startupów i autentycznie tak to odbieram. Ale z drugiej strony rzeczywiście jako organizacja mamy kulturę pracy, która pozwala nam poruszać się swobodnie i jedną z podstawowych wartości, które są w Amazonie, jest Invent and Simplify i ona dotyczy każdego pracownika, ale w jakiś sposób w szczególności inżynierów. Praca w takim środowisku to jest po prostu jeden wielki eksperyment. Większośc rozwiązanń, które budujemy, nie zostały jeszcze zrobione przez nikogo na świecie, jak się nad tym zastanowić to chociażby Kindle był pierwszym czytnikiem. Więc po pierwsze z jednej strony ciężko jest coś znaleźć w Internecie, na Stack Overflow, jak to rozwiązać, a z drugiej strony póki nie sprawdzisz tego, to nie udowodnisz, czy się da, czy się nie da.

Więc to co w Ring jest wszyte w kulturę naszej firmy, to jest po prostu zmierzanie w konkretnym kierunku z faktem dostarczania i zachęcania do tego, żeby próbować i eksperymentować. Firma jest duża, to nie jest tak, że nie mam takiej świadomości. Wprost przeciwnie, pracując w tej firmie pracuję po prostu ze specjalistami z wielu dziedzin, co daje mi w jakiś sposób ciągłą okazję do nauki i przez to mam poczucie, że się też ciągle sam rozwijam osobiście. Z jednej strony masz rację, jest to duża firma, ale jest to firma, u której podstaw leży, żeby eksperymentować, weryfikować i dostarczyć rozwiązanie, które skraca tę naszą drogę do klienta i da najlepsze rozwiązanie.

Myślę że to jest doskonałe otoczenie do tworzenia różnych innowacji, do powstawania i implementacji pomysłów, których jeszcze po prostu nie ma na rynku. Ale myślę sobie, że to też jak gdyby ma swoje zakorzenienie w określonych technologiach, językach programowania, we frameworkach, które się po prostu do tego wykorzystuje. Więc żeby tak trochę zaspokoić ciekawość słuchaczy, którzy są bardziej zainteresowani tą częścią techniczną, to ja chciałbym Cię właśnie zapytać, jakie rozwiązania technologiczne, właśnie te języki, frameworki, platformy i tak dalej wykorzystujecie do tworzenia oprogramowania na urządzenia smart.

W urządzeniach smart i technologiach, nad którymi pracuję jest to w zasadzie – nie wchodząc w duże szczegóły, powiedziałbym, że jest to część tajna naszego IP – ale na wysokim poziomie na pewno możemy powiedzieć, jeżeli mówimy o językach, to jest to C, C++, Python, Java. Inżynierowie, którzy do nas dołączają mają bardzo ciekawe doświadczenie i to w różnych technologiach. Jako zespół po prostu dużo na tym korzystamy. Osobiście uważam, że ze znajomością technologii jest jak ze znajomością języka, którym się posługujemy. Im lepsza znajomość danego języka, tym łatwiej, precyzyjniej jesteśmy w stanie się wyrazić. Ale jednak najlepsza znajomość języka nie zastąpi tego, co chcemy powiedzieć.

Tak samo jest ze znajomością technologiii języków programowania. Właśnie to, na co zwracamy uwagę rozmawiając z osobami, które chcą do nas dołączyć, do naszego zespołu, to nie biegłość w danej technologii, ale to, jak dana osoba myśli o problemie. Sposób myślenia o problemie jest największą wartością, a technologii, podobnie jak języka, można się nauczyć. Wracając do aspektu rozwiązań, to nie będę ukrywał, że dużo korzystam z rozwiązań cloudowych opartych o AWS [śmiech]. Jeśli chodzi o nasze rozwiązania to też staramy się budować je o własne frameworki. Takim przykładowym frameworkiem jest właśnie AWS i chmura AWS-owa, ale też implementację opieramy o open source, który dostosowujemy do naszych potrzeb.

Właśnie to, na co zwracamy uwagę rozmawiając z osobami, które chcą do nas dołączyć, do naszego zespołu, to nie biegłość w danej technologii, ale to, jak dana osoba myśli o problemie. Sposób myślenia o problemie jest największą wartością, a technologii, podobnie jak języka, można się nauczyć. 

Tak, to jest też bardzo ważna rzecz, żeby móc dobierać rozwiązanie czy też problem właściwie do rozwiązania, a nie na siłę zawsze starać się forsować jedno możliwe rozwiązanie technologiczne. I teraz, jak gdyby kontynuując ten wątek takiej autonomiczności albo samodzielności w organizowaniu sobie pracy, chcę Cię zapytać, czy te zespoły, w których Ty pracujesz mogą sobie dobierać właśnie te rozwiązania, te technologie, które według nich najlepiej wpasują się w dany problem, czy też ten przysłowiowy stack technologiczny jest już ustalony i trzeba skorzystać z tego, co jest odgórnie wyznaczone?

W Amazonie doświadczyłem czegoś takiego, co mógłbym określić jako złoty środek pomiędzy korporacją, organizacją, która ma zasięg globalny, a właśnie tym startupem, o którym mówiłem wcześniej. Z jednej strony organizacja dostarcza stabilne zatrudnienie, opiekę, a z drugiej strony atmosfera właśnie jest jak w startupie, więc to jest takie porównanie, jakby każdy z tych zespołów był takim statkiem pirackim. Każdy zespół sam sobie definiuje, jak chce pracować, jakich narzędzi używać, jak sobie organizuje tę pracę. Jest to ich statek. Oczywiście mają świadomość tego, że to oni są odpowiedzialni za rozwiązanie i mają świadomość odpowiedzialności za to, co dostarczają, ale wiedzą też, że kurs tego statku to jest dostarczyć wartość dla naszych klientów, natomiast nikt nie mówi im, jak mają to robić.

Może zapytam Cię, jak Ty bardziej czujesz: czy Ty kreujesz rozwiązania, czy też nowe pomysły na rozwiązania, czy bardziej wykorzystujesz już istniejące technologie, dostosowujesz je, po prostu bierzesz to, co jest już dostępne i łączysz, żeby rozwiązać daną sytuację? Czego jest tutaj więcej? Chodzi mi o to, że mając dostęp do licznych technologii tworzonych w Amazon, jak to wpływa na Waszą codzienną pracę. Czy tutaj jest miejsce na taką twórczość, na proponowanie czegoś zupełnie innego, czy też w pierwszej kolejności raczej bierze się to, co jest dostępne i wykazuje w obecnym projekcie?

To jest pytanie, które mógłbym zinterpretować na wiele sposobów, bo jeśli chodzi o korzystanie z technologii to oczywiście, jeżeli są sprawdzone rozwiązania, po prostu je dostosowujemy do naszych potrzeb. Ale jeśli chodzi o dostarczanie rozwiązań, które trafiają na rynek, to myślę sobie, że to jest przede wszystkim kreowanie tych rozwiązań. Przykład: asystent mowy Alexa, Kindle jako czytnik książek – to są przykłady, które pokazują innowacyjność, którą dostarczamy w imieniu naszych klientów i taka jest po prostu filozofia Amazona, i ona jest odczuwalna na każdym poziomie, poziomie zespołów, inżynierów. I dokładnie ta sama filozofia przekłada się na to, co robimy w Polsce. Oczywiście stopień innowacyjności uzależniony jest od projektu, do którego się trafi, ale większość naszej pracy skupia się na kreowaniu wartości i dostarczaniu nowych rozwiązań, zarówno hardware’owych, jaki i software’owych.

Rozumiem. Przedstawiając Cię na początku, wspominałem że pracowałeś dla wielu znakomitych i rozpoznawalnych firm, więc zastanawiam się, co Cię przyciągnęło do firmy Amazon: technologia, sposób pracy, kultura – co było tym czynnikiem decydującym?

Ciężko jest mi wymienić jeden powód, ale na pewno świadomość wpływu na to, jakie rozwiązania dostarczamy, jaki mają wpływ na użytkowników jest czymś, co osobiście sprawia mi wielką satysfakcję. Dodatkowo to, co mnie osobiście pociąga, to ciągły rozwój możliwy w ramach organizacji, przede wszystkim dzięki ludziom, z którymi pracuję. Ja mam wrażenie, że pracuję z osobami od siebie lepszymi i to daje mi po prostu okazję do tego, żeby się uczyć. Jestem managerem, a nadal pracuję blisko technologii i olbrzymią przyjemność sprawia mi bycie częścią zespołu, który dostarczając produkt, rozwiązuje po prostu problemy technologiczne.

Tak, to jest myślę idealna sytuacja, jeśli można faktycznie te światy pogodzić. Grzegorz Paciorkiewicz był moim gościem. Rozmawialiśmy o software developmencie na urządzenia smart na przykładzie Amazon Ring. Grzegorzu, bardzo Ci dziękuję za poświęcony czas, za przedstawienie tego, jak wewnętrznie tworzy się oprogramowanie w firmie Amazon. To była bardzo ciekawa rozmowa. Dziękuję.

Dziękuję, Krzysztof.

Powiedz, proszę, na końcu, gdzie Cię można znaleźć w Internecie, gdzie można znaleźć oferty pracy, które w tej chwili oferuje Amazon?

Odełsłałbym do strony amazon.jobs. Tam na pewno znajdziecie wiele informacji o różnych pozycjach, zarówno w świecie embedded, jak i w szerszym znaczeniu. Jeśli chodzi o mnie, myślę że zachęcam do kontaktu na LinkedIn, z chęcią opowiem więcej tym, których to zainteresowało.

Świetnie, oczywiście wszystkie linki jak zawsze będą w notatce do tego odcinka. Grzegorz z mojej strony jeszcze raz bardzo Ci dziękuję. Do usłyszenia, cześć!

Cześć, dzięki!

I to na tyle z tego, co przygotowałem dla Ciebie na dzisiaj. Programowanie na urządzenia typu smart to bardzo ciekawa dziedzina software developmentu. W całym tym procesie trzeba mieć na uwadze ograniczenia sprzętowe, bezpieczeństwo, przesył danych i wygodę użytkowania tychże urządzeń. Jeśli interesują Cię takie wyzwania, to Amazon jest doskonałym miejscem, żeby w tym temacie się rozwijać. Po konkretne oferty pracy zapraszam na stronę amazon.jobs.

Jeśli ten odcinek był dla Ciebie interesujący i przydatny, odwdzięcz się, proszę, recenzją, oceną lub komentarzem w social mediach. Jeśli masz jakieś pytania, pisz śmiało na krzysztof@porozmawiajmyoit.pl. Zapraszam też do moich mediów społecznościowych.

Nazywam się Krzysztof Kempiński, a to był odcinek podcastu Porozmawiajmy o IT o software developmencie dla urządzeń typu smart na przykładzie Amazon Ring.

Zapraszam do kolejnego odcinka już za tydzień. Cześć!

+ Pokaż całą transkrypcję
– Schowaj transkrypcję
mm
Krzysztof Kempiński
krzysztof@porozmawiajmyoit.pl

Jestem ekspertem w branży IT, w której działam od 2005 roku. Zawodowo zajmuję się web-developmentem i zarządzaniem działami IT. Dodatkowo prowadzę podcast, kanał na YouTube i blog programistyczny. Moją misją jest inspirowanie ludzi do poszerzania swoich horyzontów poprzez publikowanie wywiadów o trendach, technologiach i zjawiskach występujących w IT.