From Data Center to Cloud: Unleashing Innovation with Custom Apps

Reading Time: 5 minutes

Atlassian's mission is to unleash the potential of every team, which means serving unique use cases and requirements. The Atlassian Platform allows teams to build, run, and scale custom apps in Atlassian's secure environment. This, plus no-code features like Automation and thousands of Cloud apps in the Marketplace, mean customers can easily meet new requirements by extending and connecting their existing tools.

This guide explains how enterprises who are beginning the journey from on-premise to Cloud can migrate existing plugins and leverage Cloud development for greater productivity. It includes a comparison of Cloud development to on-premise, first steps for migrating custom plug-ins to the Cloud and how to get started with cloud-native app development.

With our [custom] Atlassian app, we were able to automate a unique workflow and break down barriers between security and development. That kind of automation is a key driver of efficiency in today's software-centric world.

Michael Sheppard, Senior Application Security Engineer, Dominos

The Cloud Customization Journey

In Data Center, plugins refer to custom software hosted on a customer's server alongside Jira and Confluence. Custom Data Center plugins support unique workflows, port data from legacy sources or internal APIs, and many, many other use cases. However, customers don't leave extensibility behind when they move to Cloud.

Differences between on-premise and Cloud customization

While Cloud enables extensive customization, there are key differences between the way customization works on Data Center versus Cloud. This can require a mindset shift.

The most fundamental difference between Data Center and Cloud customization is where the host product runs. On Data Center, the software runs on the customer's server. On Cloud, the software runs on Atlassian's infrastructure, where each customer's instance of the product, along with that customer's data, is partitioned into an isolated and secure tenant. This has significant implications for the way products can be customized. On Data Center, customers could modify the source code of the application, and these changes only impacted the copy of the software running on their own server. In Cloud, the source code is shared centrally by all tenants, and a modification would impact all Atlassian customers. This is the reason customers can't modify the product code or directly access the database.

A less fragile way to customize

Atlassian provides a developer platform and APIs that create access points where a custom app can request, change, and delete data, hook into product events, and modify the product UI. In this way, each tenant can build custom apps with proper guardrails to ensure the stability of the overall platform. These guardrails also make it much less likely that a malfunctioning Cloud app will impact the overall performance of your Jira or Confluence instance – a significant challenge on Data Center.

Downtime related to unmaintained plugins or updates gone wrong can sap valuable time and resources from IT teams. Cloud solves for this by maintaining what's sometimes called an API contract: a public-facing policy that describes how changes to extension points will be managed. This ensures that developers customizing Atlassian Cloud have a predictable way of absorbing changes and the APIs they rely on will stay up to date with the platform itself.

If all my apps were built on Forge I'd probably sleep better at night

Oliver Siebenmarck, Co-founder, Polymetis apps

Forge: Atlassian Cloud-native Extensibility

Forge is a cloud app development platform available to every Atlassian Cloud customer. It's designed to build cloud native apps that work harmoniously within the Atlassian Cloud environment and provides the building blocks to modify and customize Atlassian products. For example, Forge can:

  • Request and send data to and from Atlassian products using Atlassian APIs. This enables a developer to read data and write to the database, creating new objects like a Jira issue. Example actions include: requesting a list of all Jira issues within a timeframe, or creating a new comment on a Confluence page.
  • Listen for and respond to events to automate actions that happen when something occurs in the product, like when a new issue gets created or changes status. Forge also supports webhooks to listen for and respond to events from external services.
  • Modify the UI. Forge doesn't just support backend automations, it also allows modifying the Atlassian product UI to add elements like buttons, form fields, menu items, or even full-page custom interfaces.

Forge works by running app code in a serverless environment. This means apps can be run on-demand, on compute infrastructure managed, monitored, and maintained by Atlassian. Unlike traditional cloud apps, you don't need to create a web service that communicates remotely with the host product – the entire app can run on the Atlassian platform.

Forge apps are written in JavaScript, the world's most popular programming language. Developers interact with Forge using an intuitive command line tool, and apps can be deployed to an Atlassian instance with a keyboard command. Forge provides separate development, staging, and product environments for testing and quality control, and it also includes built-in monitoring to measure the health of the app and detect issues.

A step-by-step process for migrating plug-ins

When evaluating a move to cloud, taking an analytical approach helps avoid unnecessary detours or missed opportunities. This section provides a roadmap for identifying migration needs and creating a plan for success. When it comes to custom plug-ins, there are three phases migrating customers should consider:

Step 1: Take inventory of existing plugins

The first step is taking stock of all custom plug-ins currently installed on the instance. The Cloud Migration Assistant can help automate this process. Next, customers should consider which plug-ins may be obsolete because their functionality is no longer needed or because it's provided out of the box with Atlassian Cloud. Before building a custom solution, it’s a good idea to check whether an existing app can be purchased off the shelf from the Atlassian Marketplace.

Step 2: Design and deploy

For plug-ins that do need to be re-built for Cloud, the process begins by looking at the architecture of the existing plugin and mapping functionality to its Cloud equivalents. Then, the app can be re-built and deployed directly to the Atlassian Platform. A good place to start is by analyzing the data or UI elements a custom plug-in acts upon and then searching for equivalent REST APIs and modules in the Atlassian developer documentation.

As discussed earlier in this article, Atlassian Cloud is architected differently than Server, and products can be customized via REST APIs and Forge instead of modifying the software directly. This means the way something might have been done in a Server plugin will need to be accomplished differently in Cloud. It's best to think about functional equivalents – getting to the same use case – instead of recreating the plugin 1:1.

The Atlassian developer portal provides sample apps and tutorials to help new builders learn Forge in depth and become familiar with Atlassian Cloud APIs.

Step 3: Manage and innovate

Cloud customizations can be centrally managed in the developer console and often require little maintenance to remain compatible with Atlassian Cloud's updates. However, it's important to subscribe to the developer changelog to be informed of potentially breaking changes to the API so you can make any necessary updates before they take effect. The developer console also provides built in alerts and monitoring so you can be notified right away if errors occur.

Once an organization has embraced flexible ways of working in Cloud, individual teams are empowered to create their own solutions, without compromising the security or performance of the Atlassian Platform. This can be the beginning of a new way of working, unlocking new productivity across the organization.

Work that used to take 10 days to deliver now takes 4 hours because of a Forge app we built

Enterprise Cloud customer, post-migration

Summary

Extensibility can be a powerful advantage for businesses that embrace the speed and reliability of cloud app development. The Atlassian Platform is designed to allow multiple ways to customize, whether it's through Automation, the Marketplace, or building a custom app.

Forge enables teams to build one-of-a-kind apps on Atlassian's secure infrastructure. While building Cloud apps may look different to a developer used to building Data Center plugins, Cloud enables deep customization that can support countless use cases. Migrating customers can take valuable custom functionality to the Cloud today and create new solutions in the future.

Start your journey. Visit the Atlassian Migrations Hub to find resources for migrating customers, then get started with Forge in the Atlassian Developer Portal or visit the Partner Directory to find a Forge expert.