[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-jira-kak-proektirovat-prilozhenie-sovmestimoe-s-dc-i-cloud":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":18,"progress":19,"seo":20},1070,"kak-proektirovat-prilozhenie-sovmestimoe-s-dc-i-cloud",27,"jira","Jira","📋","Как проектировать приложение, совместимое с DC и Cloud?","Создание dual-platform приложения — сложная задача, требующая архитектурного разделения платформенно-зависимого и бизнес-кода через общие интерфейсы и отдельные адаптеры для каждой платформы.\n\n### Архитектурный подход\n\n```\n┌──────────────────────────────────────────────┐\n│              Shared Business Logic            │\n│         (Java library \u002F shared module)        │\n│  ┌─────────────┐  ┌──────────┐  ┌──────────┐ │\n│  │ Domain Model│  │ Business │  │  Utils   │ │\n│  │  (POJOs)    │  │  Rules   │  │          │ │\n│  └─────────────┘  └──────────┘  └──────────┘ │\n└──────────┬──────────────────┬────────────────┘\n           │                  │\n    ┌──────┴──────┐    ┌──────┴──────┐\n    │  DC Adapter │    │Cloud Adapter│\n    │ P2 Plugin   │    │Forge \u002F Conn.│\n    │ Active Obj. │    │ Storage API │\n    │ Jira Java   │    │ REST API v3 │\n    │ Velocity UI │    │ UI Kit\u002FReact│\n    └─────────────┘    └─────────────┘\n```\n\n### Пример: абстракция над Jira API\n\n```java\n\u002F\u002F Общий интерфейс (shared module)\npublic interface JiraIssueAdapter {\n    IssueDto getIssue(String key);\n    String createIssue(CreateIssueRequest request);\n    List\u003CIssueDto> searchByJql(String jql, int maxResults);\n}\n\npublic record IssueDto(\n        String key, String summary, String status,\n        String assignee, String projectKey,\n        Map\u003CString, Object> customFields\n) {}\n\n\u002F\u002F DC реализация — Jira Java API напрямую\n@Named\npublic class DcJiraIssueAdapter implements JiraIssueAdapter {\n    @Inject\n    public DcJiraIssueAdapter(@ComponentImport IssueManager issueManager,\n                              @ComponentImport SearchService searchService) {\n        \u002F\u002F ...\n    }\n}\n\n\u002F\u002F Cloud реализация — REST API v3 через Forge\n\u002F\u002F (TypeScript, отдельный проект)\n```\n\n### Стратегия миграции данных\n\n```\nDC (Active Objects)          Cloud (Forge Storage)\n┌──────────────────┐         ┌──────────────────┐\n│  AO Table        │  export │  Entity Storage  │\n│  - ID            │ ──────→ │  - key           │\n│  - PROJECT_KEY   │         │  - projectKey    │\n│  - CONFIG        │  import │  - config        │\n└──────────────────┘         └──────────────────┘\n```\n\n### Частые ошибки\n\n- Попытка создать единый codebase для DC и Cloud — языки и рантайм разные (Java vs TypeScript)\n- Игнорирование различий API (v2 vs v3, user identification, ADF vs wiki markup)\n- Не учитывать различия в модели данных — AO (реляционная) vs Storage (key-value)\n- Копировать поведение DC один-в-один в Cloud без учёта Cloud-специфики (rate limits, timeouts)\n\n### Как используется в 2026\n\n- Dual-platform — маркетинговое преимущество на Atlassian Marketplace\n- Atlassian предоставляет Migration API для помощи в переносе данных DC -> Cloud\n- Крупные вендоры (Tempo, Xray, ScriptRunner) поддерживают обе платформы\n- Тренд: DC как legacy support, Cloud как primary платформа для новых фич\n\n> **На собеседовании:** покажите зрелое архитектурное мышление. Dual-platform = два отдельных проекта с общей бизнес-логикой, а не один универсальный. Java shared library для бизнес-правил, адаптеры для каждой платформы. Feature parity — осознанный выбор, не все функции воспроизводимы на обеих платформах.","","senior",[15,16,17,7],"jira-data-center","jira-cloud","architecture",[],null,{"title":21,"description":22,"ogTitle":23,"ogDescription":24,"keywords":25,"schemaAnswer":34,"featuredSnippetReady":35},"Как проектировать приложение, совместимое с DC и Cloud — Gymterview","Dual-platform Jira приложение: общая бизнес-логика, адаптеры для DC (P2\u002FAO) и Cloud (Forge\u002FStorage). Абстракция JiraIssueAdapter, миграция данных.","Dual-platform Jira: совместимость DC и Cloud — Gymterview","Архитектура dual-platform приложения: shared business logic, DC adapter (P2\u002FAO), Cloud adapter (Forge\u002FStorage).",[26,27,28,29,30,31,32,33],"dual-platform","DC и Cloud","Jira адаптер","бизнес-логика","миграция данных","Active Objects","Forge Storage","архитектура","Dual-platform = два отдельных проекта с общей бизнес-логикой (Java shared library), а не единый codebase (языки разные: Java vs TypeScript). Общие интерфейсы (JiraIssueAdapter), платформенные адаптеры: DC (P2, Active Objects, Jira Java API), Cloud (Forge\u002FConnect, Storage API, REST API v3). Feature parity — осознанный выбор, не все функции воспроизводимы на обеих платформах.",true]