Z limitem lub "bez" limitu

Limitowanie - czyli ograniczenie dostępu do szeroko pojętych usług.

Z pojęciem limitowania spotkał się każdy z Was zapewne w różnych miejscach: poczta, bazy danych, www, gsm, vps (...) - pod tym pojęciem może się kryć wiele znaczeń - nie koniecznie to czego użytkownik może się spodziewać. Używanie słow związanych z limitem może być przynętą dla osób zaintersowanych usługą, ale należy spodziwać się haczyków które czyhają aby nas zaskoczyć w najmniej oczekiwanym momencie. Przykladów użycia może być wiele np. limit transferu lub bazy danych bez limitu lub dostęp do konta bez limitu lub ilość sms'ów bez limitu czy bez limitu transferu  i wiele wiele innych  - wygląda ładnie, ale znaczeń może mieć wiele.

Jaka jest istota limitowania ?
Odpowiedź jest jasna dla wielu z Was, ale postaram się o tym powiedzieć głośno - choćby dla tych którzy się tylko tego domyślają a nie są tego pewni.
Tworzenie limitów ma na celu uchronienie infrastruktury lub pojedynczej usługi  przed nadmiernym jej eksploatowaniem - pomimo tego, że wcześniej usługodawca zarzekał się że tych limitów nie ma lub są ale nie tam gdzie użytkownik się spodziewa. Dla tych co jest to zdanie mało zrozumiane to powiem prościej: jak nie wiadomo o co chodzi to chodzi o pieniądze jakie wiążą się z utrzymaniem. Ma to dla mnie sens bo wiem jak to wygląda od "kuchni", ale jeśli kupuję usługę "bez limitów" to oczekuję właśnie _bez limitów_ a nie z limitami które są ukryte. Prawda jest taka że wcześniej czy później obijemy się o te limity - tylko jak je rozpoznać i świadomie się o nie rozbić to jest sztuka.
Inni jeszcze limitują po to aby móc zarobić na tym - ponieważ ich system IT kosztuje na tyle mało lub na tyle nie istotnie, że są wstanie pozwolić sobie na takie działania - albo poprostu taki ich model biznesowy. Przykładem być może rapid*** ktory limituje po to aby na tym zarabiać - limitują ilością konkurentnych połączeń oraz szybkością transferu ale za to plików możesz wgrywać "bez limitu" :)
Drugim dnem jest nadsubskrypcja ( ang. oversubscription ) - bez rozsądnego limitowania nie dałoby rady w pełni wykorzystać platformy.

Co warto limitować ?
Co tylko sobie wymyślimy, ale warunek musi być jeden: mamy na tym zarobić. Jednostką wynagrodzenia może być: kosztowne łącze, ram, procesor, baza danych, MTA, pojemność na dyskach lub inne korzyści które końcowo i tak wiążą się z kasą.
Limitowanie dla zabawy można robić labolatoryjnie w domu tak aby innym nie szkodzić. Przykładem zaszkodzenia mogą być firmy zarządzające RBL'ami, które listują hosty bez limitu czasowego - pomimo że taki limit mają podany i po którym powinni czyścić wpisy - to jest właśnie działanie labolatoryjne z zacięciem produkcyjnym.

Limitować możemy:

  • ilość tworzonych procesów apache / ilość obsługiwanych źądań do apacha - oszczędzamy w zasadzie pamięć
  • ilość utworzonych plików - oszczędzamy inody, w zasadzie bardzo ważne przy hostowaniu dużej ilości plików dla wielu użytkowników
  • ilość utworzonych połączeń do bazy danych - oszczędzamy ram, fakt w niektórych przypadkach nie można tego zrobić w sposób bezpośredni ale sens jest zachowany
  • ilość wysyłanych maili - oszczędzamy samych siebie przed spamcopami, rblami
  • szybkość przyjmowania maili - oszczędzamy samych siebie, po co kolejki tworzyć u siebie, jak można u innych  ?
  • ilość konkurentnych połączeń do usługi - obojętnie jaka by nie była, oszczędzamy usługę przed DoS'ami lub DDoS'ami
  • transfer - oszczędzamy na przepustowości i płynności działania usługi
  • zakładania kont per IP, domena, kraj, miasto - oszczędzamy samych siebie przed spamem/warezem
  • ilość pamięci/procesorów dla wirtualnych kontenerów

Czego nie warto limitować:

  • ilości dostępu do pliku z określonego adresu IP - jeżeli będę chciał sciągać plik 10kb co minutę to dlaczego miałby mi ktoś tego zabronić ?
  • ilości baz danych - bo niby po co ? W jednej bazie danych i tak mogę stworzyć "dowolną" liczbę tabel.
  • ilości kont - w zasadzie nie ma co tłumaczyć
  • rozmiaru plików - czy wgram sobie jeden plik 1GB czy zrobie to w porcjach po 10MB to już moja sprawa

Scenariusze jakie możemy wymyśleć:

  • Nieograniczoną ilość baz danych - ale wprowadzić limit szybkości transferu
  • FTP bez limitów szybkości transferu -  ale limitować ilość sciągnietych danych w ciągu doby
  • 2GB pojemności bez limitów transferu - ale limitować ilość połączeń konkurentnych do plików powyżej X MB
  • 2000 smsów w pakiecie - ale limitować ilość wysłanych na godzine np. 10 ( nie mniej niż 2 )
  • 5000 tyś minut w pakiecie - ale limitować do konkretnych sieci/osób

Scenariuszy można wymyśleć dużo, na jeszcze więcej można się napotkać. Najciekawsze są te kuriozalne związane z sieciami GSM ale to już inna historia.
Realizacja tego co przedstawiłem może odbywać się na różnych warstwach: od aplikacyjnej po sieciową - zależy tylko od Ciebie.

Ja już mam wypracowane modele :-)