Jak kolejka Laravel uratowała nas przed wolnym AI-parsowaniem

Wdrożyliśmy Laravel queue, aby przyspieszyć AI-parsowanie, co znacznie poprawiło wydajność naszego produktu.

---

Wprowadzenie do problemu

W jeden z napiętych dni, kiedy omawialiśmy bieżące problemy na Slacku, jeden z programistów poruszył kwestię wolnego AI-parsowania. Dyskusja nabrała tempa, gdy uświadomiliśmy sobie, że użytkownicy zaczęli skarżyć się na opóźnienia w przetwarzaniu danych. W tym momencie stało się jasne: coś trzeba zmienić.

Kontekst: dlaczego to ważne

Wolne parsowanie danych nie tylko spowolniło nasze wewnętrzne procesy, ale także negatywnie wpłynęło na doświadczenie użytkowników. Klienci, którzy korzystali z naszego produktu do analizy CV, zaczęli tracić zaufanie do systemu. Jeśli nie udałoby nam się szybko rozwiązać tego problemu, mogłoby to prowadzić do spadku liczby subskrypcji, a w konsekwencji do utraty dochodów. W tej sytuacji każdy z nas czuł presję: to było ważne dla zespołu, biznesu i, co najważniejsze, dla naszych użytkowników.

Szczegóły problemu

Problem objawiał się tym, że zapytania do AI-parsowania zajmowały zbyt dużo czasu — czasami do 10 sekund na jedno CV. Kiedy w systemie jednocześnie pracowało kilku użytkowników, obciążenie rosło, a czas oczekiwania zwiększał się do 20 sekund. To spowodowało całą serię skarg, a jednym z przykładów, które otrzymaliśmy, był nasz klient, który nie mógł otrzymać wyników analizy swoich kandydatów na czas. Zrozumieliśmy, że jeśli sytuacja się nie zmieni, doprowadzi to do utraty klientów.

Pierwsze próby rozwiązania

Jako pierwszy krok postanowiliśmy zoptymalizować sam parser, zmniejszając rozmiar przetwarzanych danych. Jednak to nie przyniosło oczekiwanych rezultatów. Próbowaliśmy również zwiększyć liczbę serwerów przetwarzających zapytania, ale to zwiększało koszty bez zauważalnej poprawy wydajności. Każde z tych rozwiązań napotykało nowe problemy i zdawaliśmy sobie sprawę, że musimy szukać innych podejść, aby rozwiązać ten problem.

Techniczne podejście: wdrożenie Laravel queue

W końcu zdecydowaliśmy się na użycie Laravel queue. To pozwoliło nam rozdzielić zadania związane z przetwarzaniem CV między kilku pracowników, co znacznie zwiększyło szybkość przetwarzania. Oto jak to zrealizowaliśmy:

use App"Jobs"ParseResume;

foreach ($resumes as $resume) {
    ParseResume::dispatch($resume);
}

To rozwiązanie pozwoliło nam przetwarzać zapytania asynchronicznie, co znacznie poprawiło responsywność systemu i zmniejszyło obciążenie serwerów.

Zmiany w produkcie

Po wdrożeniu Laravel queue czas przetwarzania CV udało się skrócić do 3-5 sekund. Użytkownicy zaczęli otrzymywać wyniki praktycznie natychmiast. To nie tylko zwiększyło satysfakcję klientów, ale również pozwoliło nam odzyskać zaufanie do produktu. Otrzymaliśmy pozytywne opinie, a liczba skarg znacznie spadła. Teraz użytkownicy mogli skupić się na innych aspektach pracy, nie tracąc czasu na oczekiwanie na wyniki.

Lekcje, które wyciągnęliśmy

Ten proces nauczył nas kilku ważnych lekcji:

  • Asynchroniczne przetwarzanie zadań znacząco zwiększa wydajność.
  • Nie wszystkie rozwiązania są oczywiste; czasami warto wypróbować kilka podejść, zanim znajdziemy właściwe.
  • Ważne jest uwzględnianie opinii użytkowników i szybka reakcja na skargi.
  • Optymalizacja na poziomie kodu może być niewystarczająca bez odpowiedniej architektury.
  • Praca zespołowa i otwarte omawianie problemów pomagają znaleźć bardziej efektywne rozwiązania.

Co to oznacza dla kandydatów

Dla kandydatów oznacza to, że w Fitlane AI aktywnie poszukujemy inżynierów, którzy są gotowi rozwiązywać realne problemy i poprawiać doświadczenia użytkowników. Mamy możliwość wdrażania swoich pomysłów i obserwowania, jak wpływają na produkt. Jeśli chcesz pracować w zespole, który ceni twoje pomysły i dąży do ciągłego rozwoju, z przyjemnością cię powitamy.

Co to oznacza dla rekruterów

Rekruterzy powinni rozumieć, że szukamy nie tylko umiejętności technicznych, ale także zdolności do krytycznego myślenia. Potrzebujemy specjalistów, którzy potrafią zaproponować rozwiązania, a nie tylko wykonywać zadania. Jeśli masz kandydatów, którzy są gotowi pracować w dynamicznym środowisku i potrafią się dostosować, koniecznie zwróć na nich uwagę.

Następne kroki

Mimo sukcesu rozumiemy, że musimy nadal monitorować wydajność i szukać nowych możliwości optymalizacji. Rozważamy możliwość integracji innych technologii, takich jak konteneryzacja, w celu poprawy skalowalności systemu. Gdybyśmy musieli zaczynać od nowa, być może przetestowalibyśmy to podejście wcześniej, aby szybciej dojść do efektywnego rozwiązania. ---

Materiały pokrewne

  • Code screenshot plannedКод обработки резюме
    Скриншот кода, демонстрирующий использование Laravel queue для обработки резюме.
  • Chart plannedГрафик производительности
    График, показывающий улучшение времени обработки резюме до и после внедрения.

Także na Fitlane AI

Tematy: Laravel queue, AI-парсинг, оптимизация производительности, Laravel, очереди задач, продукт Fitlane, разработка