Czas na refaktoring

Do wewnętrznych notyfikacji (ale też np. do rozsyłania haseł jednorazowych) używam spiętego z modemem Huaweii e3131 napisanej aplikacji, która za pomocą gnokii komunikuje się z modemem umożliwiając wysyłkę/odbiór SMS. 

Aplikacja napisana jest w bashu, frontend (oraz proste api) generowane jest za pomocą skryptów cgi. Ponieważ planuję rozwój bramki, a obecne rozwiązanie nie jest wystarczające, czas na zmiany – przepisanie całej aplikacji.

Czas na nowe. Nową aplikacje opieram o Flask (Python) + Gunicorn + Nginx. Wszystko zamknięte w kontenerze Dockera.

PS. Pisałem wcześniej o Gnokii, był to jeden z pierwszych wpisów na tym blogu w 2015 roku: Gnokii – smsy z serwera

 

Nowe API „Tle2Czml”

Cesium to biblioteka wspomagająca renderowanie Ziemi w 3D. Z użyciem tej biblioteki jakiś czas temu pojawił się pomysł, aby renderować pozycję satelitów. Orbitę oraz aktualną pozycję satelity określam za pomocą formatu czml.

Do generowania czml używam prostego API, które zostało napisane w Pythonie (z użyciem Flask). Na podstawie przekazanych danych orbitalnych satelity (TLE) aplikacja generuje string (JSON) zawierający dane w formacie czml.

Na chwilę obecną w API wymagana jest autoryzacja, jeśli pojawią się chętne osoby, mogę wypuścić użytkowników 😉

 

Deployment – jak je robimy?

Zależnie od inftastruktury aplikacji, jej architektury zawsze planujemy deplyment tak aby był jak najmniej uciążliwy dla użytkownika końcowego systemu. Często nasze stsytemy aktualizujemy podczas nocnych okienek serwisowych. I tak jedna z aplikacji, która ma 20, a w sezonie 30-40 req/sec jest aktualizowana głównie poza sezonem. W trakcie szczytu, gdzie dziennie jest kilkadziesiąt tysięcy wizyt przeprowadzamy jedynie krytyczne poprawki – jeśli są niezbędne do prawidłowego oraz stabilnego działania systemu.

Poza sezonem aplikacja jest aktualizowana we wtorki oraz czwartki, w godzinach 16-18. Zmiany są przygotowywane oraz testowane we wcześniejszym tygodniu. Jeśli trwa sezon, utrzymuje się spory ruch, deployment przeprowadzamy jedynie w nocnych oknach serwisowych – które zaczyna się od 1 w nocy, a kończy o 3 rano.

Każde z wdrożeń niezależnie od pory jest możliwe do cofnięcia w krótkim czasie. Jeśli aktualizujemy większa aplikacje często przepinamy ruch na czas wdrożenia na zapasowe środowisko produkcyjne (które jest w stanie przejęć 100% ruchu w razie problemów z głównym środowiskiem) tak aby zminimalizować ryzyko down time (metoda Blue-Green).