Blog

Notatki o wytwarzaniu i produktach

Praktyka z naszych projektów: architektura, wyceny, integracje i wsparcie.

Synchronizacja modelu ról między środowiskami: jak pozbyliśmy się "działa tylko na prodzie"

Synchronizacja modelu ról między środowiskami: jak pozbyliśmy się "działa tylko na prodzie"

Wsparcie i menedżerowie zarządzali modelem ról tylko na produkcji, przez co test i preprod miały niepełne dane, a części scenariuszy nie dało się odtworzyć. Wdrożyliśmy jednokierunkową synchronizację z produkcji: dodawanie i usuwanie encji, flagi pomijania, dopasowanie po slugu oraz uruchamianie przez cron lub przycisk w panelu. Model ról jest teraz **spójny** między środowiskami.

Usługa dokumentów dla przewodnika: jak zbudowaliśmy bezpieczne przechowywanie plików w ciągu 3 miesięcy

Usługa dokumentów dla przewodnika: jak zbudowaliśmy bezpieczne przechowywanie plików w ciągu 3 miesięcy

Firma poprosiła o usługę księgowania i udostępniania dokumentów kierownictwa wyższego szczebla. Funkcjonalność-jak Dysk Google: podfoldery, udostępnianie dostępu, wyszukiwanie, Ulubione, kosz. Ale z surowymi wymaganiami bezpieczeństwa: szyfrowanie plików, sesja na 1 godzinę, autoryzacja za pośrednictwem naszego serwisu. Wybraliśmy Laravel, PostgreSQL i DocumentDB (później MongoDB) dla skrótów, podłączyliśmy WebSockets dla real-time. Projekt został przekazany na czas-firma z powodzeniem korzysta.

Złe doświadczenia z SAML: jak opracowaliśmy rozwiązanie przez półtora miesiąca, które musiało zostać wyłączone

Złe doświadczenia z SAML: jak opracowaliśmy rozwiązanie przez półtora miesiąca, które musiało zostać wyłączone

Firma miała portal oparty na Active Directory i chciała wdrożyć jednokrotne logowanie przez SAML 2.0. Zintegrowaliśmy pakiet `aacotroneo/laravel-saml2`, ale użytkownicy musieli logować się dwukrotnie — w naszym serwisie i na portalu. Po tygodniu skarg większości pracowników rozwiązanie zostało wyłączone. Opowiadamy, dlaczego tak się stało i czego nas to nauczyło.

Autoryzacja od końca do końca przez OAuth 2.0: jak połączyliśmy 6 usług w "1C-Bitrix"

Autoryzacja od końca do końca przez OAuth 2.0: jak połączyliśmy 6 usług w "1C-Bitrix"

W dużym projekcie było 6 usług na "1C-Bitrix", każda z nich ma własną autoryzację. Firma zdecydowała się na jeden punkt wejścia na Laravel. Wdrożyliśmy autoryzację typu end-to-end za pośrednictwem OAuth 2.0, zbudowaliśmy użytkowników technicznych do wymiany API, zoptymalizowaliśmy transfer dużych obiektów, a następnie udoskonaliliśmy mechanizm przekierowań dla usług gości i bezpośrednich linków do plików. Klient loguje się raz — i trafia do dowolnej usługi bez ponownego logowania.

Model roli dla struktury wielu usług: od walidacji według ról do siatki dostępu

Model roli dla struktury wielu usług: od walidacji według ról do siatki dostępu

W projekcie wieloserwisowym autoryzacja była oparta na rolach użytkowników. Wraz ze wzrostem ich liczby przeszliśmy na model oparty na uprawnieniach. Użytkownik ma rolę i przynależność do organizacji, a rola określa domyślny zestaw uprawnień. Każda organizacja może otrzymać dodatkowe, niestandardowe uprawnienia. Stworzyliśmy też interfejs, który pozwala zespołom biznesowym samodzielnie zarządzać rolami i uprawnieniami, przeglądać historię zmian oraz je wycofywać.

Jak obroniliśmy klientów: historia jednego przejścia między agregatorami mailingowymi

Jak obroniliśmy klientów: historia jednego przejścia między agregatorami mailingowymi

W trakcie tworzenia usługi mailingowej zaczęliśmy od Mailchimp, a następnie przeszliśmy na DashaMail. Kiedy firma poprosiła o przejście na wewnętrzny agregator, przeprowadziliśmy analizę i zidentyfikowaliśmy krytyczne ograniczenia: brak API, brak webhooków statusu, brak obciążenia. Zaproponowaliśmy kompromis polegający na użyciu wewnętrznego agregatora tylko dla e-maili infrastrukturalnych i pozostawieniu klientów na zewnętrznym. Usługa stała się wieloagregacyjna.

Usługa biuletynu w Laravel: jak połączyliśmy wysyłanie wiadomości e-mail i SMS dla wszystkich usług wewnętrznych

Usługa biuletynu w Laravel: jak połączyliśmy wysyłanie wiadomości e-mail i SMS dla wszystkich usług wewnętrznych

W dużym projekcie każda usługa wysyłała e-maile i SMS-y na swój sposób: powielanie kodu, brak Pulpitu nawigacyjnego statusu, długie poprawki. Zaprojektowaliśmy kompleksową usługę biuletynu w Laravel i RabbitMQ z trzech rozwiązań-dashboard, API i nadawcy. Dostawcy łączą się raz, statusy są widoczne za pośrednictwem webhooków agregatorów, a zespół nie marnuje już czasu na zduplikowane integracje.

Asynchroniczna aktywacja kart podarunkowych: kontynuacja historii

Asynchroniczna aktywacja kart podarunkowych: kontynuacja historii

Po automatyzacji magazynu wzrosła aktywność na stronie. W szczytowe dni liczba aktywacji sięgała dziesiątek tysięcy dziennie. Aktywacja synchroniczna zaczęła zawodzić: opóźnienia, powielanie żądań, błędy w danych. Przenieśliśmy aktywację na przetwarzanie asynchroniczne za pośrednictwem RabbitMQ i Laravel Jobs, zwiększyliśmy liczbę pracowników i podłączyliśmy WebSockets, aby natychmiast zaktualizować saldo. Obciążenie spadło, duplikaty zniknęły, użytkownik natychmiast widzi wynik.

Jak zautomatyzowaliśmy zarządzanie zapasami kart podarunkowych: od Excela do systemu z API dla 1C

Jak zautomatyzowaliśmy zarządzanie zapasami kart podarunkowych: od Excela do systemu z API dla 1C

Firma oferująca rozwiązania prezentowe prowadziła ewidencję kart i kodów promocyjnych w Excelu. Wymiana punktów na nagrody wymagała ręcznej obsługi: klient składał wniosek, a pracownik sprawdzał aktywność karty i wysyłał nagrodę. Stworzyliśmy system w Laravelu z panelem do ewidencji, aktywacji i rezerwacji kart, raportami oraz API dla 1C. Wyeliminowaliśmy ręczną pracę, dzięki czemu specjalista mógł skupić się na ważniejszych zadaniach.

Jak zrezygnowaliśmy z Vue.js na rzecz niezawodności: historia jednego modułu uwierzytelniania

Jak zrezygnowaliśmy z Vue.js na rzecz niezawodności: historia jednego modułu uwierzytelniania

Powtarzające się problemy z zapętlaniem logowania skłoniły nas do zbadania przyczyn. Okazało się, że starsze urządzenia i przeglądarki w połączeniu z firmowym oprogramowaniem zabezpieczającym generowały ruch przypominający atak DDoS z powodu specyfiki Vue.js. Podjęliśmy decyzję o przeniesieniu usługi uwierzytelniania na najprostszy stos: HTML, CSS i czysty JavaScript, bez bibliotek. Po migracji problem całkowicie zniknął, a logowanie działa stabilnie także na starszych urządzeniach użytkowników.

ROSTU-ekosystem dla rozwoju małych firm

ROSTU-ekosystem dla rozwoju małych firm

ROSTU to białoruska platforma SaaS, która łączy katalog w celu przyciągnięcia klientów, CRM, widżet nagrywania online, księgowość magazynową i analitykę w jednym systemie. Podstawowa funkcjonalność jest bezpłatna. Bez węzłów kasowych i skomplikowanych integracji. Nadaje się do salonów, stacji paliw, restauracji, sklepów, klinik i klubów fitness.

Jak vpodarok przeszedł z monolitu na Yii1 do architektury usług z własnym przetwarzaniem

Jak vpodarok przeszedł z monolitu na Yii1 do architektury usług z własnym przetwarzaniem

Projekt Vpodarok rozpoczął się jako zwykły internetowy sklep z bonami podarunkowymi na Yii1. Z czasem przekształcił się w ekosystem z witrynami sklepowymi B2B, interfejsami API i złożoną logiką biznesową. Mówimy, w jaki sposób zespół stopniowo przenosił jądro do oddzielnej usługi przetwarzania, dlaczego potrzebne było Złącze danych i jakie kompromisy musiały zostać zaakceptowane podczas przechodzenia do modelu usługi

Porozmawiajmy o projekcie

Opowiedz o zadaniu — wycenimy w kilka dni

Kontakt