Zbudowany z Wykorzystaniem Nowoczesnych Technologii

Wykorzystując najnowszy ekosystem Javy i technologie chmurowe

Architektura Systemu

Wielomodułowy Projekt Gradle

CrewOps jest zbudowany z czystą, modułową architekturą, która zapewnia separację odpowiedzialności i łatwość utrzymania. Projekt jest zorganizowany w odrębne moduły o jasnych odpowiedzialnościach, promując ponowne wykorzystanie kodu i łatwość utrzymania.

To podejście modułowe pozwala na niezależny rozwój i testowanie różnych komponentów, przy jednoczesnym zachowaniu spójnej architektury systemu. Każdy moduł ma określony cel i dobrze zdefiniowane granice.

Moduł Backend

  • Framework Spring Boot
  • PostgreSQL z JPA/Hibernate
  • Liquibase do migracji bazy danych
  • Wielodostępność z podejściem schema-per-tenant
  • Uwierzytelnianie oparte na JWT
  • Projektowanie bezstanowego API

Moduł Frontend

  • Spring Boot z Vaadin
  • Nowoczesne komponenty UI
  • Zintegrowane Spring Security
  • Zarządzanie sesją Vaadin
  • Interfejs webowy
  • Wersja mobilna w rozwoju

Moduł Model

  • Współdzielone DTO i enumy
  • Obiekty domenowe
  • Spójne struktury danych
  • Bezpieczeństwo typów między modułami
  • Kontrakty komunikacji HTTP
  • Reguły walidacji

Moduł Bezpieczeństwa

  • Współdzielone interfejsy bezpieczeństwa
  • Walidacja tokenów JWT
  • Weryfikacja ról
  • Spójne uwierzytelnianie między modułami
  • Sprawdzanie uprawnień
  • Obsługa kontekstu bezpieczeństwa

Główne Technologie

Java

Podstawowy język programowania z nowoczesnymi funkcjami i silną typizacją

Spring Boot

Framework do budowania samodzielnych, produkcyjnych aplikacji

PostgreSQL

Solidna relacyjna baza danych z zaawansowanymi funkcjami

JPA/Hibernate

Mapowanie obiektowo-relacyjne do interakcji z bazą danych

Liquibase

Migracja schematu bazy danych i kontrola wersji

Spring Security

Kompleksowy framework bezpieczeństwa do uwierzytelniania i autoryzacji

JWT

Tokeny Web JSON do bezstanowego uwierzytelniania

Vaadin

Nowoczesny framework web do budowy interfejsów użytkownika w Javie

AWS EC2

Platforma przetwarzania w chmurze do wdrożenia i hostingu

Nginx

Wysokowydajny serwer WWW i reverse proxy

Docker

Platforma kontenerów do spójnych środowisk

Gradle

Narzędzie automatyzacji budowania do zarządzania zależnościami

DevOps i Wdrożenie

Potok CI/CD i Infrastruktura

CrewOps implementuje nowoczesne podejście DevOps z automatycznym wdrożeniem i zarządzaniem infrastrukturą chmurową. Cały potok wdrożeniowy jest zautomatyzowany od zatwierdzenia kodu do wdrożenia produkcyjnego.

Integracja z GitHub

  • Zarządzanie repozytorium
  • Zgłoszenia do planowania
  • Projekty jako backlog
  • Automatyczne wyzwalacze wdrożeń

Potok Wdrożeniowy

  • Automatyczne testowanie
  • Budowanie przy scalaniu do głównej gałęzi
  • Wdrożenie na AWS EC2
  • Aktualizacje bez przestojów

Bezpieczeństwo i SSL

  • Reverse proxy Nginx
  • Terminacja HTTPS
  • Zarządzanie certyfikatami SSL
  • Konfiguracja nagłówków bezpieczeństwa

Monitorowanie

  • Logowanie aplikacji
  • Monitorowanie wydajności
  • Śledzenie błędów
  • Wykorzystanie zasobów

Wyzwania Techniczne i Rozwiązania

Implementacja Wielodostępności

Zaimplementowano podejście schema-per-tenant do izolacji danych w PostgreSQL. Każdy najemca otrzymuje własny schemat bazy danych, współdzieląc tę samą instancję aplikacji. Dynamiczne rozpoznawanie schematu oparte na identyfikatorze najemcy JWT zapewnia właściwą separację danych i bezpieczeństwo.

Spójność Między Modułami

Utrzymywanie spójności między modułami backend i frontend poprzez współdzielone moduły modelu i bezpieczeństwa. Współdzielone moduły zapewniają bezpieczeństwo typów, spójne struktury danych i jednolitą walidację bezpieczeństwa we wszystkich komponentach aplikacji.

Bezstanowe Uwierzytelnianie

Zaimplementowano uwierzytelnianie oparte na JWT z Spring Security do projektowania bezstanowego API. Mechanizm odświeżania tokenów i autoryzacja oparta na rolach na poziomie punktów końcowych zapewniają bezpieczną kontrolę dostępu bez przechowywania sesji po stronie serwera.

Powiadomienia w Czasie Rzeczywistym

Zaprojektowano i zaimplementowano system powiadomień, który wysyła alerty do odpowiednich osób, gdy zgłaszane są usterki maszyn. System zapewnia terminową komunikację i szybką reakcję na krytyczne problemy operacyjne.