- Added comprehensive course structure with 11 modules - Included theoretical content, practical examples, and tasks - Multi-language code examples (Java, Rust, Node.js, Python) - Detailed analysis of architectural approaches and trade-offs - Complete caching strategies documentation - Architecture examples from real-world systems (Twitter, Netflix, Uber) - Structured navigation and learning path - Ready for educational use
4.9 KiB
4.9 KiB
PlantUML
Навигация
Что такое PlantUML
PlantUML — инструмент для создания диаграмм из текстового описания.
Типы диаграмм
1. Sequence Diagrams (Диаграммы последовательности)
@startuml
title Order Processing Sequence
actor Customer
participant "Web App" as Web
participant "API Gateway" as Gateway
participant "Order Service" as Order
participant "Payment Service" as Payment
participant "Inventory Service" as Inventory
database "Database" as DB
Customer -> Web: Create Order
Web -> Gateway: POST /api/orders
Gateway -> Order: Create Order Request
Order -> Inventory: Check Availability
Inventory --> Order: Availability Status
Order -> Payment: Process Payment
Payment --> Order: Payment Result
Order -> DB: Save Order
DB --> Order: Order Saved
Order --> Gateway: Order Created
Gateway --> Web: Order Response
Web --> Customer: Order Confirmation
@enduml
2. Class Diagrams (Диаграммы классов)
@startuml
title Order Domain Model
class Order {
- id: OrderId
- customerId: CustomerId
- items: List<OrderItem>
- status: OrderStatus
- totalAmount: Money
- createdAt: LocalDateTime
+ addItem(item: OrderItem): void
+ removeItem(itemId: ItemId): void
+ confirm(): void
+ cancel(): void
}
class OrderItem {
- id: ItemId
- productId: ProductId
- quantity: int
- unitPrice: Money
+ getTotalPrice(): Money
}
class Money {
- amount: BigDecimal
- currency: Currency
+ add(other: Money): Money
+ multiply(factor: BigDecimal): Money
}
Order ||--o{ OrderItem : contains
OrderItem ||--|| Money : unitPrice
Order ||--|| Money : totalAmount
@enduml
3. Activity Diagrams (Диаграммы активности)
@startuml
title Order Processing Flow
start
:Receive Order Request;
:Validate Order Data;
if (Data Valid?) then (yes)
:Check Inventory;
if (Items Available?) then (yes)
:Reserve Items;
:Process Payment;
if (Payment Successful?) then (yes)
:Create Order;
:Send Confirmation;
stop
else (no)
:Release Reserved Items;
:Return Payment Error;
stop
endif
else (no)
:Return Inventory Error;
stop
endif
else (no)
:Return Validation Error;
stop
endif
@enduml
4. Deployment Diagrams (Диаграммы развертывания)
@startuml
title System Deployment
node "Load Balancer" {
component "NGINX" as nginx
}
node "Application Servers" {
component "API Gateway" as gateway
component "Order Service" as order
component "Payment Service" as payment
component "User Service" as user
}
node "Database Servers" {
database "PostgreSQL" as db
database "Redis" as cache
}
node "External Services" {
component "Payment Gateway" as ext_payment
component "Email Service" as ext_email
}
nginx --> gateway
gateway --> order
gateway --> payment
gateway --> user
order --> db
payment --> db
user --> db
order --> cache
payment --> cache
user --> cache
payment --> ext_payment
user --> ext_email
@enduml
Лучшие практики PlantUML
1. Используйте семантические имена
# Хорошо
participant "Order Service" as OrderService
participant "Payment Service" as PaymentService
# Плохо
participant "Service1" as S1
participant "Service2" as S2
2. Группируйте связанные элементы
box "Order Processing" #LightBlue
participant "Order Service" as Order
participant "Inventory Service" as Inventory
end box
box "Payment Processing" #LightGreen
participant "Payment Service" as Payment
participant "Payment Gateway" as Gateway
end box
3. Используйте цвета для выделения
actor Customer #LightBlue
participant "Web App" as Web #LightGreen
participant "API Gateway" as Gateway #LightYellow
database "Database" as DB #LightCoral
Заключение
PlantUML предоставляет мощный инструмент для создания диаграмм:
- Текстовое описание — легко версионировать и изменять
- Множество типов диаграмм — от последовательностей до развертывания
- Автоматизация — интеграция с CI/CD
- Читаемость — семантические имена и группировка
Правильное использование PlantUML значительно улучшает качество архитектурной документации.