Jak konserwatyzm techniczny pomaga nam skalować się szybciej i lepiej

Opublikowany: 2022-07-21

W Intercom koncentrujemy się na przyszłości i podejmujemy śmiałe kroki, aby do niej dotrzeć. Ale kiedy podejmujemy decyzje techniczne, lubimy być konserwatywni.

W praktyce zachowanie technicznie konserwatywnego oznacza ponowne wykorzystanie istniejących technologii i frameworków w naszym stosie lub promowanie wypróbowanych i przetestowanych wzorców i rozwiązań. Cenimy tę znajomość, ponieważ rozumiemy, że ważne problemy, które należy rozwiązać, to te, które przynoszą wartość klientowi lub biznesowi.

Zamiast oceniać nowe technologie i spędzać czas na już rozwiązanych problemach operacyjnych, które ostatecznie zapewniają niewielką wartość dla klienta, możemy skupić się na ulepszaniu produktu poprzez budowanie, wydawanie i iterację rozwiązań.

To już szósty wpis z serii, w której omawiamy zasady dotyczące naszych produktów . Tutaj Waheed omawia naszą zasadę inżynieryjną „Bądź technicznie konserwatywny”.

Konserwatyzm techniczny ma wiele długoterminowych korzyści

Tę zasadę najlepiej ilustruje kilka przykładów z ostatnich lat, pokazujących, w jaki sposób Bądź technicznie konserwatywny” pozwala nam szybko skalować, a jednocześnie nie jest ograniczeniem. Mówiłem już wcześniej o naszym doświadczeniu w projektowaniu naszego systemu raportowania, gdzie oceniliśmy korzyści z wprowadzenia do naszego stosu nowego magazynu danych – Redshift. Oznaczałoby to wprowadzenie do naszego systemu nowego typu bazy danych, która nigdy nie była testowana pod kątem produkcyjnym. Co więcej, musielibyśmy poświęcić dużo czasu na budowanie wiedzy operacyjnej, utrzymywanie klastrów w produkcji i radzenie sobie z nieprzewidzianymi problemami związanymi z obsługą Redshift na dużą skalę.

Wykorzystaliśmy naszą istniejącą infrastrukturę, aby przyspieszyć proces z szacowanych sześciu miesięcy do zaledwie sześciu tygodni”

Ostatecznie zdecydowaliśmy, że znajomy datastore lepiej nadaje się do tego zadania. Wykorzystaliśmy naszą istniejącą infrastrukturę Elasticsearch, która obsługuje większość funkcji wyszukiwania Intercomu, aby przyspieszyć proces z szacunkowych sześciu miesięcy do zaledwie sześciu tygodni.

Pierwsza wersja systemu raportowania została wydana kilka lat temu, więc mieliśmy okazję zastanowić się nad niektórymi długoterminowymi korzyściami naszego zastosowania konserwatyzmu technicznego w takim przypadku:

Szybciej rozwiązaliśmy problem klienta

Korzystając z naszej istniejącej infrastruktury, uniknęliśmy spędzania czasu na zapoznawaniu się z nowym magazynem danych i radzeniu sobie z wszystkimi nieuniknionymi czkawkami. Mogliśmy natychmiast skoncentrować się na problemie klienta, który należało rozwiązać i szybko wysłać, skracając czas dostawy o ponad cztery miesiące.

W pełni wykorzystaliśmy czas zespołu

Nasz zespół ds. infrastruktury danych mógł nadal koncentrować się na małym, znanym zestawie technologii, zamiast być rozproszonym w wielu technologiach. W rezultacie mieli – i nadal mają – więcej czasu, aby zadbać o kondycję naszych istniejących systemów i zoptymalizować wykorzystanie każdej technologii.

Ponieważ nasz zestaw technologii jest stosunkowo niewielki, ulepszenia następują regularnie”

Zwiększyliśmy wartość ciągłych ulepszeń

Ponieważ nasz zestaw technologii jest stosunkowo niewielki, ulepszenia pojawiają się regularnie. Produkt wykorzystuje te technologie, więc wpływ tych ulepszeń jest spotęgowany we wszystkim, co zostało na nich zbudowane. Niewielka poprawa może mieć ogromny, pozytywny wpływ na cały produkt.

Więcej zespołów wniosło większy wkład

Korzystanie ze wspólnych technologii oznacza, że ​​więcej inżynierów i zespołów czuje się pewnie i może z nimi pracować. Widzieliśmy częste ulepszenia produktu raportowania przez zespoły w całej firmie, a nie tylko jeden zespół, który jest właścicielem określonej części systemu.

Pamiętaj, że zasady to nie zasady, to wytyczne

Zasady są niesamowitym sposobem na wyrównanie zespołów i przyniosły świetne wyniki dla Intercomu. Ale są chwile, kiedy bardziej sensowne może być nie podążanie za nimi. W miarę rozwoju firmy istnieje ryzyko, że niektórzy członkowie zespołu będą dogmatycznie przestrzegać zasad lub niewłaściwie je zinterpretować. Przejście do technicznego konserwatyzmu nie powinno oznaczać, że nigdy nie wprowadzamy czegoś nowego.

„Konserwatyzm techniczny oznacza faworyzowanie technologii, która już jest w twoim stosie – ale tylko wtedy, gdy jest to najlepsza opcja”

Konserwatyzm techniczny oznacza faworyzowanie technologii, która już jest na twoim stosie – ale tylko wtedy, gdy jest to najlepsza opcja. W niektórych sytuacjach istniejąca technologia może nie być odpowiednia. Jeśli nie może odpowiedzieć na następujące pytania, możemy poszukać dalej i ocenić alternatywy:

  • Czy nowe narzędzie pozwoli Twojej firmie na efektywniejsze skalowanie?
  • Czy umożliwia to Twojemu zespołowi lub organizacji szybsze działanie i szybsze dostarczanie wartości?
  • Czy rozwiązuje problem klienta, którego nie można było rozwiązać za pomocą istniejących narzędzi?

Jeśli odpowiesz „tak” na którekolwiek z nich, warto rozważyć wprowadzenie tego nowego narzędzia. W Intercom był niedawny przykład, który odpowiedział „tak” na wszystkie trzy pytania.

Użytkownicy lub klienci naszych klientów są podstawą platformy Intercom. Wraz z rozwojem, nasi klienci i ich potrzeby w zakresie ilości danych użytkowników, które przechowują w domofonie. Ogromna ilość danych użytkowników prowadziła w tamtym czasie do problemów ze skalowaniem naszego obecnego magazynu danych użytkowników i aby zapewnić możliwość dalszego wspierania obecnych i nowych klientów, musieliśmy przemyśleć nasze obecne rozwiązanie. To ostatecznie doprowadziło nas do wprowadzenia nowej technologii do naszego stosu – oto jak doszliśmy do tej decyzji.

Skalowaliśmy szybciej, niż pozwalał na to nasz magazyn danych

Używaliśmy MongoDB od około pięciu lat i mieliśmy blizny operacyjne, które to potwierdzały. Zoptymalizowaliśmy każdy aspekt posiadania i używania go – od typu sprzętu, na którym działał, po zapytania, które na nim uruchamialiśmy. Byliśmy w punkcie malejących zwrotów i widzieliśmy silne sygnały, że za kilka lat przestanie to spełniać swoje zadanie – a nawet może stać się wąskim gardłem w rozwoju firmy.

„Regularnie myśl o trajektorii swojego biznesu i pytaj : „ Czy to, co nas tu sprowadziło, doprowadzi nas tam? „. Dzięki temu będziesz proaktywny w swoich wyborach, a nie reaktywny”

W tym miejscu kluczowa jest silna, przyszłościowa strategia techniczna. W tym momencie mieliśmy wystarczająco dużo danych, aby sugerować, że być może będziemy musieli ocenić inne podejście i mieliśmy do tego pas startowy. Regularnie myśl o trajektorii swojego biznesu i pytaj „Czy to, co nas tu sprowadziło, doprowadzi nas tam?”. Dzięki temu będziesz proaktywny w podejmowaniu decyzji, a nie reaktywny, i zmniejszy ryzyko związane z nieznanymi niewiadomymi związanymi z wprowadzeniem nowej technologii.

Nasza technologia spowalniała nasz zespół

W Intercom staramy się uruchamiać mniej oprogramowania. W tym przypadku, mimo że wdrażaliśmy nową technologię z nieznanymi niewiadomymi, wdrożenie DynamoDB pozwoliło nam to zrobić.

Wcześniej samodzielnie zarządzaliśmy skalowaniem MongoDB wraz z kodem do równoważenia obciążenia – co było znaczącym obciążeniem dla zespołu. Częścią losowania DynamoDB było to, że był zarządzany przez dostawcę, AWS. Oznaczało to, że chociaż początkowe koszty jego przyjęcia byłyby kosztowne, ostatecznie byłoby to tańsze i zaoszczędziłoby zespołowi ogromną ilość czasu i wysiłku.

„Niepodejmowanie dogmatów w kwestii technicznego konserwatyzmu umożliwiło nam zastąpienie technologii o dużych kosztach ogólnych i ograniczonych możliwościach”

Może się to wydawać sprzeczne z intuicją, ale wprowadzenie nowej technologii ostatecznie spowodowało, że korzystamy z mniejszej ilości oprogramowania. Brak dogmatycznego podejścia do technicznego konserwatyzmu umożliwił nam zastąpienie technologii o dużych kosztach ogólnych i ograniczonych możliwościach nową technologią, która była mniej uciążliwa operacyjnie i bardziej skalowalna.

Byliśmy bezwzględni w stosunku do wymagań

Czasami wymagaliśmy od MongoDB wykonywania złożonych i kosztownych zapytań, które zagrażały dostępności i wydajności częstszych, ale mniej złożonych zapytań. Oceniając DynamoDB zdaliśmy sobie sprawę, że nie będzie obsługiwał tych złożonych i kosztownych zapytań, ale będzie znacznie lepszy w przypadku prostszych i bardziej powszechnych.

Korzystaliśmy już głównie z Elasticsearch do wykonywania złożonych zapytań, a potrzeba migracji zmusiła nas do przejrzenia i bardziej celowego zdefiniowania możliwości, których wymagaliśmy od naszego sklepu użytkowników, a ostatecznie pozwoliła nam poprawić wydajność w podstawowym przypadku użycia: pobieraniu rekordów pojedynczego użytkownika.

„Myśląc o wymianie technologii, nie bierz za pewnik, że będziesz korzystać z nowej technologii w ten sam sposób”

Myśląc o wymianie technologii, nie bierz za pewnik, że będziesz korzystać z nowej technologii w ten sam sposób. Twoje wymagania prawdopodobnie znacznie się zmienią z biegiem czasu, a reszta stosu będzie ewoluować lub dojrzeć, dzięki czemu przypadki użycia staną się bardziej wąskie. Otworzy to możliwości przyjęcia bardziej skoncentrowanych, wydajnych technologii lub odciążenia niektórych technologii, które mają być zarządzane przez dostawcę.

Spraw, aby Twoje zasady działały w Twojej firmie, a nie na odwrót

Konserwatyzm techniczny jest doskonałym narzędziem pozwalającym zespołom skupić się na tym, co ważne – rozwiązywaniu problemów klientów i dostarczaniu wartości bez wydawania cennych zasobów na odpowiadanie na pytania, na które już udzielono odpowiedzi.

Jednak zbyt sztywne przekonanie, że wprowadzanie nowych technologii jest złe, może uniemożliwić korzystanie z technologii, które pomogą Ci uruchamiać mniej oprogramowania i łatwiej i szybciej skalować. Ważne jest, aby stosować tę zasadę w sposób, który najlepiej sprawdza się w przypadku Twojego zespołu i Twojej firmy w dłuższej perspektywie.

Czy jesteś zainteresowany dołączeniem do zespołu inżynierów Intercomu? Dowiedz się więcej i zobacz nasze otwarte role tutaj.

Kariera CTA - Inżynieria (poziomo)