middle
Что такое Connect и чем он отличается от Forge?
Atlassian Connect — фреймворк для разработки Cloud-приложений, где приложение хостится на собственном сервере разработчика и интегрируется с Jira через iframe и REST API.
Архитектура Connect
Пример
┌──────────────────┐ ┌──────────────────┐
│ Jira Cloud │ iframe │ Connect App │
│ │ ←──────────→ │ (ваш сервер) │
│ ┌────────────┐ │ │ │
│ │ iframe │ │ REST API │ Spring Boot / │
│ │ (app UI) │ │ ←──────────→ │ Node.js / ... │
│ └────────────┘ │ │ │
│ JWT Auth │ Webhooks │ PostgreSQL / │
└──────────────────┘ ────────────→│ MongoDB / ... │
└──────────────────┘
Сравнение Forge vs Connect
| Аспект | Forge | Connect |
|---|---|---|
| Хостинг | Atlassian (serverless) | Свой сервер |
| Язык | TypeScript/JavaScript | Любой |
| БД | Forge Storage (KV, 32KB) | Любая (PostgreSQL, etc.) |
| UI | UI Kit / Custom UI (React) | iframe (любой фреймворк) |
| Аутентификация | Автоматическая | JWT (ручная реализация) |
| Timeout | 25 секунд | Нет (свой сервер) |
| Сложность деплоя | Минимальная (forge deploy) | Высокая (свой CI/CD) |
| Контроль | Ограниченный | Полный |
| Стоимость инфраструктуры | Бесплатно (до лимитов) | Свои серверы |
Lifecycle callbacks (Spring Boot)
Пример
@RestController
@RequestMapping("/api/lifecycle")
public class LifecycleController {
private final TenantService tenantService;
@PostMapping("/installed")
public ResponseEntity<Void> installed(@RequestBody InstallPayload payload) {
tenantService.register(
payload.getClientKey(),
payload.getSharedSecret(),
payload.getBaseUrl(),
payload.getProductType()
);
return ResponseEntity.ok().build();
}
@PostMapping("/uninstalled")
public ResponseEntity<Void> uninstalled(@RequestBody UninstallPayload payload) {
tenantService.unregister(payload.getClientKey());
return ResponseEntity.ok().build();
}
}
Частые ошибки
- Не реализовать lifecycle callbacks — приложение не знает о новых/удалённых инстансах
- Хранить shared secret в plain text — компрометация даёт полный доступ к Jira-инстансу
- Не обрабатывать мультитенантность — данные одного клиента утекают другому
- Не проверять JWT в каждом запросе — открытый API без аутентификации
Как используется в 2026
- Connect остаётся востребованным для enterprise-приложений с собственной инфраструктурой
- Atlassian не deprecated Connect, но рекомендует Forge для новых приложений
- Популярный стек: Spring Boot + Connect + PostgreSQL + React (в iframe)
- Миграция Connect -> Forge возможна, но трудоёмка из-за различий в архитектуре
На собеседовании: покажите понимание архитектурных различий. Connect — правильный выбор, когда нужен полный контроль над стеком, собственная БД, тяжёлые вычисления. Мультитенантность — ключевой вызов: Connect-приложение обслуживает множество Jira-инстансов. JWT shared secret критически важен — хранить в Vault/KMS.