{"id":2168,"date":"2026-06-17T17:00:36","date_gmt":"2026-06-17T17:00:36","guid":{"rendered":"https:\/\/news.jurskitech.pl\/blog\/uncategorized\/koszty-ukryte-w-martwych-endpointach-api-3-lekcje-z-audytu\/"},"modified":"2026-06-17T17:00:36","modified_gmt":"2026-06-17T17:00:36","slug":"koszty-ukryte-w-martwych-endpointach-api-3-lekcje-z-audytu","status":"publish","type":"post","link":"https:\/\/news.jurskitech.pl\/blog\/warto-wiedziec\/koszty-ukryte-w-martwych-endpointach-api-3-lekcje-z-audytu\/","title":{"rendered":"Koszty ukryte w martwych endpointach API \u2013 3 lekcje z audytu"},"content":{"rendered":"<h2 id=\"wprowadzenie\">Wprowadzenie<\/h2>\n<p>W ostatnim roku przeprowadzi\u0142em audyt backendu dla \u015bredniej wielko\u015bci platformy SaaS. Zebrali\u015bmy logi, przeanalizowali\u015bmy ruch \u2013 i odkryli\u015bmy, \u017ce a\u017c 15% endpoint\u00f3w API nie by\u0142o u\u017cywanych od ponad 6 miesi\u0119cy. Niekt\u00f3re odpowiada\u0142y na zapytania bot\u00f3w, ale \u017caden realny klient ich nie wywo\u0142ywa\u0142. Koszt utrzymania? Spokojnie kilka tysi\u0119cy z\u0142otych miesi\u0119cznie na samej infrastrukturze, nie licz\u0105c d\u0142ugu technicznego. To nie jest odosobniony przypadek. Martwe endpointy to cichy z\u0142odziej bud\u017cetu IT \u2013 szczeg\u00f3lnie w firmach, kt\u00f3re szybko ros\u0142y i nie mia\u0142y czasu na porz\u0105dki.<\/p>\n<h2 id=\"dlaczegomartweendpointypowstaj\">Dlaczego martwe endpointy powstaj\u0105?<\/h2>\n<p>Najcz\u0119\u015bciej to efekt iteracyjnego rozwoju: dodajemy funkcjonalno\u015b\u0107, tworzymy nowe API, ale stare wersje pozostaj\u0105 \u201ena wszelki wypadek\u201d. Albo integracje z zewn\u0119trznymi systemami, kt\u00f3re ju\u017c nie istniej\u0105. Albo funkcje, kt\u00f3re zosta\u0142y zast\u0105pione, ale nikt nie usun\u0105\u0142 starego kodu. Problem narasta, gdy zesp\u00f3\u0142 nie ma kultury deprecjacji \u2013 ka\u017cdy boi si\u0119, \u017ce co\u015b si\u0119 zepsuje, wi\u0119c utrzymuje wszystko wiecznie. Efekt? Pay-as-you-go w chmurze zamienia si\u0119 w pay-for-nothing.<\/p>\n<h2 id=\"3lekcjezpraktyki\">3 lekcje z praktyki<\/h2>\n<h3 id=\"lekcja1audytniebolibrakaudytubolibardziej\">Lekcja 1: Audyt nie boli \u2013 brak audytu boli bardziej<\/h3>\n<p>Przeprowadzenie audytu endpoint\u00f3w wcale nie musi by\u0107 trudne. W praktyce wystarczy tydzie\u0144 zbierania log\u00f3w z API gatewaya lub bezpo\u015brednio z serwer\u00f3w. U\u017cyj prostego skryptu, kt\u00f3ry agreguje wywo\u0142ania wed\u0142ug endpointu i metody. Odfiltruj ruch od bot\u00f3w (User-Agent, IPy, cz\u0119stotliwo\u015b\u0107). To, co zostanie, to realne u\u017cycie. Zobaczysz, kt\u00f3re endpointy maj\u0105 zerow\u0105 liczb\u0119 wywo\u0142a\u0144 od u\u017cytkownik\u00f3w.<\/p>\n<p>Przyk\u0142ad: W jednym z projekt\u00f3w znale\u017ali\u015bmy endpoint <code>\/api\/v1\/reports<\/code> \u2013 nie wywo\u0142ywany od 8 miesi\u0119cy. Po rozmowie z biznesem okaza\u0142o si\u0119, \u017ce funkcja raport\u00f3w zosta\u0142a przeniesiona do panelu administracyjnego, ale endpoint zosta\u0142. Usuni\u0119cie go zmniejszy\u0142o zu\u017cycie CPU na serwerze o 3% \u2013 niby niewiele, ale w skali roku robi r\u00f3\u017cnic\u0119.<\/p>\n<h3 id=\"lekcja2martweendpointygenerujrealnekoszty\">Lekcja 2: Martwe endpointy generuj\u0105 realne koszty<\/h3>\n<p>Ka\u017cdy endpoint, nawet nieu\u017cywany, to:<\/p>\n<ul>\n<li>Kod do utrzymania (przegl\u0105dy, aktualizacje bibliotek, testy)<\/li>\n<li>Zaj\u0119ta przestrze\u0144 w monitoringu (logi, metryki, alerty \u2013 cz\u0119sto skonfigurowane dla wszystkich endpoint\u00f3w)<\/li>\n<li>Potencjalne luki bezpiecze\u0144stwa (nieu\u017cywany kod to cz\u0119sto niepatchowany kod)<\/li>\n<li>Op\u00f3\u017anienia w CI\/CD (build i testy trwaj\u0105 d\u0142u\u017cej)<\/li>\n<\/ul>\n<p>W przytoczonym audycie po usuni\u0119ciu 15% endpoint\u00f3w build pipeline skr\u00f3ci\u0142 si\u0119 o 20%. Deweloperzy odetchn\u0119li, a koszty chmury spad\u0142y o oko\u0142o 8%.<\/p>\n<h3 id=\"lekcja3wprowadkulturdeprecjacji\">Lekcja 3: Wprowad\u017a kultur\u0119 deprecjacji<\/h3>\n<p>Nie wystarczy wyczy\u015bci\u0107 raz. Trzeba wprowadzi\u0107 proces:<\/p>\n<ul>\n<li>Ka\u017cdy nowy endpoint powinien mie\u0107 dat\u0119 przydatno\u015bci? Przynajmniej w dokumentacji.<\/li>\n<li>Ustal polityk\u0119: je\u015bli endpoint nie jest u\u017cywany przez 3 miesi\u0105ce \u2013 oznacz go jako deprecated, wy\u015blij alert do zespo\u0142u, po kolejnym miesi\u0105cu usu\u0144.<\/li>\n<li>U\u017cywaj feature flags \u2013 \u0142atwiej wy\u0142\u0105czy\u0107 funkcj\u0119, sprawdzi\u0107, czy nikt nie narzeka, a potem usun\u0105\u0107 kod.<\/li>\n<\/ul>\n<p>W praktyce dzia\u0142a to \u015bwietnie. Klient, kt\u00f3ry wdro\u017cy\u0142 t\u0119 polityk\u0119, po roku nie mia\u0142 ani jednego martwego endpointu. A oszcz\u0119dno\u015bci pozwoli\u0142y sfinansowa\u0107 now\u0105 funkcj\u0119.<\/p>\n<h2 id=\"jaktowygldawpraktyce\">Jak to wygl\u0105da w praktyce?<\/h2>\n<p>Zacznij od ma\u0142ego: wybierz jeden mikroserwis lub jeden kontroler. Zaloguj rzeczywiste u\u017cycie przez 7 dni. Por\u00f3wnaj z dokumentacj\u0105. Zdziwisz si\u0119, ile rzeczy jest nieu\u017cywanych. Potem przeskaluj na ca\u0142o\u015b\u0107. Polecam zautomatyzowa\u0107 \u2013 skrypt co miesi\u0105c generuj\u0105cy raport \u201eendpointy bez ruchu od 90 dni\u201d.<\/p>\n<h2 id=\"podsumowanie\">Podsumowanie<\/h2>\n<p>Martwe endpointy to nie tylko problem techniczny \u2013 to realne pieni\u0105dze, czas zespo\u0142u i ryzyko bezpiecze\u0144stwa. Je\u015bli Twoja firma rozwija\u0142a si\u0119 szybko, prawdopodobnie masz ich kilkana\u015bcie lub kilkadziesi\u0105t. Audyt i czyszczenie to jeden z najprostszych sposob\u00f3w na optymalizacj\u0119 koszt\u00f3w i wydajno\u015bci. Nie wymaga wielkich nak\u0142ad\u00f3w, a przynosi wymierne efekty. A przy okazji \u2013 pokazuje, \u017ce zesp\u00f3\u0142 my\u015bli o architekturze d\u0142ugoterminowo. W JurskiTech.pl regularnie przeprowadzamy takie audyty \u2013 i za ka\u017cdym razem znajdujemy co\u015b, co mo\u017cna poprawi\u0107. Mo\u017ce to dobry moment, \u017ceby sprawdzi\u0107 swoje API?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wprowadzenie W ostatnim roku przeprowadzi\u0142em audyt backendu dla \u015bredniej wielko\u015bci platformy SaaS. Zebrali\u015bmy logi, przeanalizowali\u015bmy ruch \u2013 i odkryli\u015bmy, \u017ce a\u017c 15% endpoint\u00f3w API nie by\u0142o u\u017cywanych od ponad 6 miesi\u0119cy. Niekt\u00f3re odpowiada\u0142y na zapytania bot\u00f3w, ale \u017caden realny klient ich nie wywo\u0142ywa\u0142. Koszt utrzymania? Spokojnie kilka tysi\u0119cy z\u0142otych miesi\u0119cznie na samej infrastrukturze, nie licz\u0105c<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[699,801,92,431],"class_list":["post-2168","post","type-post","status-publish","format-standard","hentry","category-warto-wiedziec","tag-api-gateway","tag-audyt-techniczny","tag-optymalizacja-kosztow","tag-optymalizacja-wydajnosci"],"_links":{"self":[{"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/posts\/2168","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/comments?post=2168"}],"version-history":[{"count":0,"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/posts\/2168\/revisions"}],"wp:attachment":[{"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/media?parent=2168"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/categories?post=2168"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/tags?post=2168"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}