Перейти до основного вмісту

Огляд Telescope

Учасники розробки

Результат Telescope був досягнутий, завдяки сумісній праці усіх цих талановитих людей (та роботів).

Вступ

Однією з ключових особливостей участі спільноти Сенеки у Open Source завжди був акцент на поширенні того, над чим ми працюємо, що ми викладаємо та вивчаємо, за допомогою блогів. Ми вважаємо, що однією з найприємніших частин навчання роботі у спільноті Open Source є усвідомлення того, що кожен може стати частиною мережі, навчитись формувати і висловлювати власну думку та створити власну аудиторію.

Ми також вважаємо, що читати блоги один одного дуже важливо. У блогах наших колег ми бачимо, що ми не самотні у нашому прагненні досягти успіху, у наших захопленнях різними темами, і що синдром самозванця не є чимось притаманним лише "мені".

Задля кращого виявлення блогів у нашій спільноті, ми встановили блог з відкритим кодом під назвою "Planet" – агреговану стрічку блогів викладачів та студентів Сенеки, які працюють над Open Source, на одній сторінці. Наш блог "Planet" наразі розміщений за адресою https://telescope.cdot.systems/planet.

Що таке Planet?

Planet - це агрегатор стрічок, націлений на збирання дописів з веб-блогів учасників якоїсь Інтернет-спільноти та показ усіх дописів на одній сторінці. Planet працює на веб-сервері. Він створює сторінки із дописами з початкових стрічок у хронологічному порядку, починаючи з останніх записів. --Вікіпедія

На початку 2000-х років, до появи таких соціальних мереж, як Twitter та Facebook, Planet вирішив важливу проблему у спільноті Open Source. Він використовував різні технології "стрічки" (RSS, Atom, CDF), щоб дозволити блогам з різних платформ об'єднуватися в єдину сторінку, яка постійно оновлювалася останніми повідомленнями від людей в рамках певної спільноти.

Написаний мовою Python Джеффом Во і Скоттом Джеймсом Ремнантом, Planet може бути сконфігурований зі списком стрічок блогів і HTML-шаблоном. За їх допомогою він динамічно генерує сайт з повідомленнями у хронологічному порядку із зазначених стрічок блогів.

У пошуках нової "Планети"

Наша "Планета" вмирає. Програмне забезпечення, яке ми використовуємо, востаннє оновлювалося 13 років тому. У той час як основний його код відійшов у минуле, наші потреби рухають нас вперед. Підтримувати існуючу систему, особливо з урахуванням кількості студентів, які беруть участь у Open Sourse в Сенеці, стало занадто складно. Наш нинішній сайт часто ламається і потребує ручного втручання на регулярній основі. В майбутньому нам потрібна нова "Планета", яку ми могли б назвати домом.

Готуючись увійти в 2020 рік, ми вирішили, що настав час розглянути питання переходу на нову систему. На жаль, майже кожна система, яка приходила на зміну Planet, сама ставала такою, що не може бути обслугованою.

Замість того, щоб намагатися знайти існуюче рішення, ми вирішили спробувати створити власне. Оскільки нам потрібне програмне забезпечення, ми також відчуваємо, що саме ми повинні створити і підтримувати його. І, оскільки наша потреба в "Планеті" випливає з нашої колективної роботи у Open Sourse, ми вважаємо, що створення його разом як Open Sourse, було б найкращим рішенням.

Спроба визначити нашу "Планету"

За останнє десятиріччя, керуючи власною "Планетою", ми багато чому навчилися. Ми також спостерігали, як соціальні мережі і сучасні технології змінили наші очікування щодо того, якою може і повинна бути подібна система. Це було враховано при розробці та реалізації нашого нового проекту Telescope.

Дивіться розділ Архітектура для більш повного уявлення про дизайн нашого проєкту.

Що робить Telescope?

Загалом, Telescope приймає RSS стрічки публікацій блогів, перебудовує ці дописи у формат HTML і збирає їх у єдину веб-сторінку для відображення. Він здатний обробляти різноманітні форматування, такі як блоки коду або вбудовані відео. Telescope також збирає дані про ці публікації на інформаційній панелі. Публікації, які можна побачити на Telescope, надходять з блогів учасників розробки. Таким чином, ви можете стежити за розвитком проєкту на самому сайті!

Історія проєкту

1.0

Telescope 1.0 реалізував багато наших початкових цілей, зокрема:

  • Монолітний бекенд веб-сервер на node.js, що реалізує REST API та GraphQL
  • Сервіс черги node.js для паралельної обробки стрічок
  • Повний редизайн та оновлення інтерфейсу
  • Фронтенд веб-додаток на GatsbyJS з використанням React компонентів з Material UI
  • Початкова автентифікація з єдиним підписом на основі SAML2
  • Управління контейнерами на основі Docker/Docker Compose
  • Пайплайни CI/CD з використанням CircleCI та Travis CI
  • Pull Request передогляд за допомогою Zeit Now
  • База даних Redis для кешування стрічок і дописів
  • База даних Elasticsearch для повнотекстового пошуку публікацій
  • Зворотний проксі-сервер Nginx і HTTP-кеш-сервер
  • Certbot для управління SSL-сертифікатами з Let's Encrypt
  • GitHub веб-хук-сервіс на базі node.js для автоматичного управління розгортаннями
  • GitHub push-події та веб-хуки для автоматизації стадійних та виробничих білдів, а також "green/blue" деплою
  • Стадійні (https://dev.telescope.cdot.systems/) та виробничі (https://telescope.cdot.systems/) деплої

2.0

Telescope 2.0 удосконалив і розширив цей дизайн:

  • Удосконалена інфраструктура тестування, включаючи snapshot, наскрізне та модульне тестування
  • Переробка CI/CD на GitHub Actions
  • Покращення пошукової оптимізації
  • Додавання Firebase як серверного сховища даних для інформації про користувачів
  • Удосконалення автентифікації на основі SAML, авторизації JWT та безпеки потоків реєстрації користувачів
  • Новий дизайн інтерфейсу, логотип, CSS і теми
  • Покращення доступності та зручності для користувачів
  • Міграція монолітного бекенду на мікросервіси (завершено на 90%) та шлюз API з використанням Traefik
  • Удосконалення Elasticsearch та Redis
  • Повне перенесення фронтенду з GatsbyJS на next.js
  • Переписування фронтенду на TypeScript
  • Оновлення та підтримка залежностей, як в ручному, так і в автоматизованому режимі (Dependabot)
  • Виправлення помилок та погашення технічної заборгованості
  • Підтримка прогресивних веб-додатків (PWA) та мобільного інтерфейсу
  • Удосконалення Docker
  • Виправлення, оновлення та вдосконалення автоматизації та інструментарію
  • Покращення в nginx, кешуванні та управлінні сертифікатами
  • Оновлення документації
  • Покращення зручності для розробників, зокрема виправлення крос-платформних відмінностей

3.0

У процесі виконання.