START O MNIE PROJEKTY OFERTA KONTAKT

MACIEJ SMOLEŃSKI


PROGRAMISTA

Ineffective Logs on S3

Wydajność aplikacji w Snowflake

Snowflake wprowadził innowacyjną usługę Snowpark Container Services, która daje możliwość uruchamiania kontenerów Docker w obrębie Snowflake’a. Ostatnio pracowałem nad aplikacją, która została zrealizowana w formie kontenera. Niestety, doświadczyłem znacznego spowolnienia jej działania w porównaniu do wersji lokalnej uruchamianej na moim laptopie.

Główne przyczyny problemów

Po przeprowadzeniu dokładnej analizy, szybko ustaliłem, że źródłem wydajności problemu były logi aplikacji, które były zapisywane do Snowflake Stage – usługi wykorzystującej Amazon S3 do przechowywania danych. Analiza ujawniła, że sposób, w jaki logi były zapisywane (przy użyciu append oraz sync/flush), okazał się bardzo nieefektywny, co negatywnie wpłynęło na prędkość działania całej aplikacji.

Rozwiązanie problemu

W obliczu zaistniałych trudności podjąłem decyzję o zmianie konfiguracji aplikacji. Przenieśliśmy zapis logów lokalnie, zamiast do Snowflake Stage. To proste rozwiązanie przyniosło niezwykłe rezultaty - poprawiło wydajność aplikacji, eliminując wąskie gardło związane z zapisem danych w chmurze. Dzięki temu mogłem efektywniej wykorzystać zasoby udostępniane przez Snowflake.

Podsumowując, warto inwestować czas w analizę i optymalizację zapisów logów, aby uniknąć nieefektywności, które mogą wpływać na działanie aplikacji uruchamianych w środowisku chmurowym. Czasami najprostsze rozwiązania mogą przynieść najlepsze efekty.