Koordynacja serwisów
Zarządzanie zależnościami i kontraktami między wieloma serwisami
Budowanie architektur mikrousług przedstawia unikalne wyzwania: service discovery, kontrakty API, rozproszone zarządzanie danymi i orkiestrację. Ta lekcja demonstruje jak możliwości AI Cursor przekształcają rozwój mikrousług z kompleksowego wyzwania koordynacji w uproszczony, wspomagany przez AI workflow.
Tradycyjny rozwój mikrousług polega na żonglowaniu wieloma bazami kodu, utrzymywaniu spójności między serwisami i zapewnieniu właściwych wzorców komunikacji. AI Cursor rozumie te wzorce systemów rozproszonych i pomaga nawigować w złożoności.
Koordynacja serwisów
Zarządzanie zależnościami i kontraktami między wieloma serwisami
Refaktoryzacja między serwisami
Dokonywanie spójnych zmian przez granice serwisów
Zarządzanie konfiguracją
Obsługa konfiguracji specyficznych dla środowiska i sekretów
Orkiestracja wdrożeń
Koordynowanie wdrożeń wielu serwisów i rollbacków
Inicjalizacja struktury monorepo
mkdir my-microservices && cd my-microservicesmkdir services shared infrastructure
Tworzenie szkieletów serwisów w trybie Agent
Stwórz podstawową strukturę mikrousług z:- Serwis użytkowników (Node.js/Express)- Serwis zamówień (Python/FastAPI)- Serwis płatności (Go/Gin)- Współdzielone definicje protobuf- Konfiguracja Docker compose
Konfiguracja Cursor dla rozwoju wielu serwisów
Stwórz .cursor/rules/microservices.md
:
## Reguły architektury mikrousług
- Każdy serwis powinien być niezależnie wdrażalny- Używaj gRPC do komunikacji między serwisami- Implementuj circuit breakery dla odporności- Przestrzegaj wzorca database-per-service- Używaj event sourcingu dla krytycznych operacji- Implementuj distributed tracing z OpenTelemetry
Zbudujmy serwis użytkowników, który demonstruje kluczowe wzorce mikrousług:
Użyj trybu Agent z tym promptem:
Stwórz serwis użytkowników Node.js z:- REST API Express- Serwer gRPC do komunikacji wewnętrznej- PostgreSQL z poolingiem połączeń- Endpoint health check- Strukturowane logowanie z correlation ID- Instrumentacją OpenTelemetry
Cursor wygeneruje kompletną strukturę serwisu z wbudowanymi najlepszymi praktykami.
// Prompt Agent:"Zaimplementuj Kubernetes service discovery dla serwisu użytkownikówużywając DNS-based discovery i headless services"
// Prompt Agent:"Dodaj rejestrację serwisu Consul i health checkingdo serwisu użytkowników z automatyczną derejestrację"
// Prompt Agent:"Zintegruj klient Netflix Eureka dla service discoveryz wzorcem circuit breaker używając Hystrix"
@user-service @order-serviceZaimplementuj komunikację gRPC między serwisami użytkowników i zamówień:- Serwis użytkowników udostępnia RPC GetUser- Serwis zamówień wywołuje GetUser podczas tworzenia zamówień- Dodaj właściwą obsługę błędów i retry- Zaimplementuj logowanie request/response
Użyj Cursor do implementacji event sourcingu:
Dodaj komunikację sterowaną zdarzeniami do naszych mikrousług:1. Skonfiguruj broker wiadomości Kafka/RabbitMQ2. Serwis użytkowników publikuje zdarzenia UserCreated, UserUpdated3. Serwis zamówień subskrybuje zdarzenia użytkowników4. Zaimplementuj możliwość odtwarzania zdarzeń5. Dodaj obsługę dead letter queue
Stwórz serwis API Gateway używając:- Node.js z Express Gateway lub Kong- Przekierowuj żądania do odpowiednich mikrousług- Zaimplementuj rate limiting per klient- Dodaj transformację request/response- Obsługuj autentykację i autoryzację- Agreguj odpowiedzi z wielu serwisów
Poproś Cursor o implementację kompleksowej obserwowalności:
Dodaj distributed tracing do wszystkich mikrousług:- Zintegruj SDK OpenTelemetry- Skonfiguruj Jaeger jako backend tracingu- Propaguj kontekst trace przez nagłówki HTTP- Dodaj niestandardowe spany dla operacji bazodanowych- Uwzględnij metryki biznesowe w tracach
Jedna z mocnych stron Cursor to koordynowanie zmian przez wiele serwisów:
@servicesZmień nazwę 'customerId' na 'clientId' przez wszystkie serwisy:1. Zaktualizuj definicje protobuf2. Regeneruj kod gRPC3. Zaktualizuj wszystkie schematy baz danych4. Zmodyfikuj wszystkie kontrakty API5. Zaktualizuj dokumentację6. Stwórz skrypty migracji
Cursor będzie:
Zaimplementuj wersjonowanie API dla serwisu użytkowników:- Dodaj endpointy v2 zachowując v1- Użyj content negotiation do wyboru wersji- Zaimplementuj ostrzeżenia o deprecation- Stwórz przewodnik migracji dla klientów
Wygeneruj testy kontraktów między serwisami:- Użyj Pact dla consumer-driven contracts- Stwórz testy weryfikacji providera- Skonfiguruj broker kontraktów- Zintegruj z pipeline CI/CD
Generowanie konfiguracji test containers
Stwórz testy integracyjne używając Testcontainers:- Uruchom wymagane serwisy- Użyj prawdziwych baz danych- Testuj rzeczywiste interakcje serwisów- Wyczyść po testach
Implementacja wirtualizacji serwisów
Dodaj WireMock do mockowania zewnętrznych serwisów:- Nagrywaj rzeczywiste interakcje serwisów- Twórz mock odpowiedzi- Testuj scenariusze błędów- Symuluj problemy sieciowe
Wygeneruj manifesty Kubernetes dla wszystkich serwisów:- Deploymenty z właściwymi limitami zasobów- Serwisy do komunikacji wewnętrznej- ConfigMapy do konfiguracji- Sekrety dla wrażliwych danych- Horizontal Pod Autoscaling- Network policies dla bezpieczeństwa
Zaimplementuj wdrożenie blue-green dla aktualizacji bez przestojów:1. Stwórz duplikat środowiska (green)2. Wdróż nową wersję do green3. Uruchom smoke testy4. Przełącz ruch z blue na green5. Zachowaj blue jako natychmiastowy rollback
Dodaj metryki Prometheus do wszystkich serwisów:- Czas trwania i status żądań HTTP- Metryki biznesowe (utworzeni użytkownicy, przetworzone zamówienia)- Statystyki connection pool bazy danych- Głębokość kolejki wiadomości- Niestandardowe metryki aplikacyjne
Zaimplementuj scentralizowane logowanie ze stosem ELK:- Skonfiguruj Filebeat na każdym serwisie- Używaj correlation ID przez serwisy- Strukturyzuj logi in formacie JSON- Dodaj kontekst (user ID, request ID)- Skonfiguruj zapytania agregacji logów
Zaimplementuj mTLS między serwisami:- Wygeneruj certyfikaty dla każdego serwisu- Skonfiguruj TLS w komunikacji serwisów- Zaimplementuj rotację certyfikatów- Dodaj weryfikację tożsamości serwisu
Dodaj kompleksowe bezpieczeństwo API:- OAuth2/JWT dla zewnętrznych API- Rate limiting per serwis- Walidację i sanityzację żądań- Zapobieganie SQL injection- Konfigurację CORS
Zoptymalizuj dostęp do bazy danych przez serwisy:- Implementuj connection pooling- Dodaj warstwę cache'owania (Redis)- Użyj replik read dla zapytań- Zaimplementuj sharding bazy danych- Dodaj monitorowanie wydajności zapytań
Zintegruj service mesh Istio:- Automatyczny mTLS między serwisami- Zarządzanie ruchem i load balancing- Circuit breaking i retry- Obserwowalność out of the box
Wdróż Linkerd dla service mesh:- Lekki proxy injection- Automatyczne service discovery- Wbudowana obserwowalność- Traffic splitting dla canary deployments
Zbudujmy kompletny system mikrousług e-commerce:
Projektowanie architektury
Stwórz platformę e-commerce z:- Serwis użytkowników (autentykacja, profile)- Serwis produktów (katalog, zapasy)- Serwis zamówień (zarządzanie zamówieniami)- Serwis płatności (przetwarzanie płatności)- Serwis powiadomień (email, SMS)- Serwis wyszukiwania (Elasticsearch)
Implementacja serwisów Użyj trybu Agent do budowy każdego serwisu z odpowiednią technologią:
Dodanie orkiestracji
Zaimplementuj orkiestrację zamówień:- Wzorzec Saga dla transakcji rozproszonych- Logika kompensacji dla błędów- Event sourcing dla ścieżki audytu- Maszyna stanów dla cyklu życia zamówień
Wdrożenie i monitorowanie
Wdróż do Kubernetes z:- Chartami Helm dla każdego serwisu- Ingress dla dostępu zewnętrznego- Service mesh dla komunikacji wewnętrznej- Monitorowanie z Prometheus/Grafana- Scentralizowane logowanie z ELK
Rozpocznij od 2-3 serwisów i stopniowo dekompozuj monolit. Użyj Cursor do identyfikacji granic serwisów.
Poproś Cursor o implementację wzorców do obsługi rozproszonej spójności danych.
Użyj Cursor do skonfigurowania kompleksowych narzędzi CI/CD, monitorowania i debugowania na wczesnym etapie.
Wybierz jeden główny wzorzec komunikacji (REST, gRPC lub messaging) i trzymaj się go.
Pozwól Cursor generować i utrzymywać dokumentację API, diagramy architektury i runbooki.
Śledź te metryki aby zwalidować swoją architekturę mikrousług:
Po opanowaniu mikrousług z Cursor:
Pamiętaj: AI Cursor nie tylko pomaga pisać kod dla mikrousług—pomaga zrozumieć i implementować wzorce systemów rozproszonych, które zwykle wymagałyby lat doświadczenia do opanowania.