Integracija: Servisi i Sučelja

Interoperabilnost distribuiranih sustava

Arhitekturni obrasci, protokoli komunikacije i tehnike integracije modernih servisno orijentiranih sustava.

Tok Integracije

Primjer komunikacije između distribuiranih komponenti

🖥️
Client App
🔐
API Gateway
⚙️
Microservice
💾
Database
REST JSON HTTPS OAuth 2.0

Obrasci Integracije

Enterprise Integration Patterns (EIP)

🔄 Point-to-Point

Direktna komunikacija između dva sustava. Servis A poziva Servis B sinkrono. Jednostavna implementacija, čvrsta veza (tight coupling).

Primjena: Mikroservisne pozive, REST API interakcije.

📮 Publish-Subscribe

Proizvođač objavljuje poruke na temu (topic), više potrošača se pretplaćuje. Labava veza (loose coupling), asinkrona komunikacija.

Primjena: Event-driven arhitekture, message brokers (Kafka, RabbitMQ).

📬 Message Queue

Poruke čekaju u redu dok ih potrošač ne obrade. Garantirana dostava, load balancing između workera.

Primjena: Background jobs, task scheduling, asinkrone operacije.

🔌 API Gateway

Jedinstvena ulazna točka za sve API pozive. Routing, authentication, rate limiting, request/response transformacija.

Primjena: Mikroservisne arhitekture, mobile backends.

🎭 Service Mesh

Infrastrukturni sloj za servis-servis komunikaciju. Automatski retry, circuit breaking, observability, mutual TLS.

Primjena: Kubernetes okruženja (Istio, Linkerd).

⚡ Event Sourcing

Stanje sustava rekonstruira se iz niza događaja. Potpuna povijest promjena, mogućnost "replay" operacija.

Primjena: Financial systems, audit trails, CQRS pattern.

Tipovi API Sučelja

Protokoli i standardi komunikacije

🌐 REST API (Representational State Transfer)

Arhitekturni stil temeljen na HTTP protokolu. Stateless, resource-oriented, koristi HTTP metode (GET, POST, PUT, DELETE, PATCH).

GET /api/v1/users/123 POST /api/v1/users PUT /api/v1/users/123 DELETE /api/v1/users/123 // Response format: JSON { "id": 123, "name": "Ivan Horvat", "email": "[email protected]" }
HTTP/HTTPS JSON Stateless Cacheable

🔷 GraphQL

Query jezik za API-je. Klijent specificira točno koje podatke treba, jedna endpoint za sve operacije, type system, real-time subscriptions.

query { user(id: "123") { name email posts { title } } }

⚡ gRPC

High-performance RPC framework. Protocol Buffers serializacija, HTTP/2, bidirekcional streaming, language-agnostic.

// proto definition service UserService { rpc GetUser(UserRequest) returns (UserResponse); }

🔌 WebSocket

Full-duplex komunikacijski kanal. Održava trajnu vezu, real-time updates, niska latencija, push notifications.

Primjena: Chat aplikacije, live dashboards, gaming, stock tickers.

📡 Webhook

Event-driven HTTP callbacks. Servis notificira druge sustave o promjenama slanjem POST requesta na konfigurirani URL.

Primjena: GitHub events, payment processing, CI/CD triggers.

Arhitektura Servisa

Organizacijski modeli distribuiranih sustava

🏢

Monolitna

Jedinstvena, kompaktna aplikacija. Sve komponente u jednom deployment unit-u. Jednostavno razvojno okruženje, ali otežano skaliranje.

🧩

Microservices

Neovisni, mali servisi fokusirani na specifičnu funkcionalnost. Nezavisno deployanje, tehnološka heterogenost, kompleksnost orkestracije.

⚙️

Serverless

Function-as-a-Service model. Izvršavanje koda bez upravljanja serverima, plaćanje po izvršenju, automatsko skaliranje.

🎯

Service-Oriented (SOA)

Organizacija oko poslovnih funkcija. Enterprise Service Bus (ESB), standardizirani protokoli (SOAP), fokus na reusability.

📊

Event-Driven

Arhitektura bazirana na događajima. Proizvođači emitiraju evente, potrošači reagiraju asinkrono, labava veza između komponenti.

🌊

Stream Processing

Kontinuirana obrada tokova podataka. Real-time analytics, event streaming (Kafka), complex event processing (CEP).

Izazovi Integracije

Problemi i rješenja u distribuiranim sustavima

🔒 Sigurnost

Autentikacija: OAuth 2.0, JWT tokens, API keys
Autorizacija: RBAC, ABAC, policy enforcement
Enkripcija: TLS/SSL, end-to-end encryption
Rate Limiting: Zaštita od abuse i DDoS

🔄 Pouzdanost

Retry Mechanisms: Exponential backoff
Circuit Breaker: Prevencija kaskadnih kvarova
Timeout Management: Definiranje vremenskih limita
Idempotency: Sigurnost ponovljenih zahtjeva

📈 Skalabilnost

Load Balancing: Distribucija prometa
Caching: Redis, Memcached, CDN
Database Sharding: Horizontalno particioniranje
Asinkrona obrada: Message queues

🔍 Observability

Distributed Tracing: Jaeger, Zipkin
Logging: Centralizirana agregacija logova
Metrics: Prometheus, Grafana
Correlation IDs: Praćenje zahtjeva kroz sustave