Forge Your Path: Exploring the Power of Atlassian's Development Platform
I worked with Atlassian for more then 12 years now. I started as a Atlassian Jira user, become a support guy, who can create a Confluence Space or tweek a simple workflow and then transformed into Atlassian Certified Expert who runs complex migrations, does advanced JSM implementations and helps with digital transofomation of huge departments or whole orgonisations. But I never release a single Marketplace app... until recently.
Why?
To begin with, let me attempt to explain why I started.
I've always been intrigued by coding, from tinkering with Python scripts for simple API integrations to dabbling in creating my personal website using PHP and MySQL, or even playing around with Turbo Pascal back in school. While I hadn't ventured into any serious projects, my interest in development remained steadfast.
The Atlassian Connect platform has been around for quite some time now, but it never seemed like an easy platform to get started with. Even if your project appears to be a simple single-page app at first glance, the sheer number of underlying services required to run it can be astonishing.
Even a seemingly straightforward project typically requires almost a dozen AWS services: S3 and Cloudfront for hosting your frontend, Lambda and API Gateway for database communication, which itself is another service (such as RDS or DynamoDB). Additionally, you'll need Cognito for authentication and user management, Route 53 for DNS and routing, as well as ACM for SSL certificates. And the list goes on (queueing, messaging, logging, monitoring, etc.).
You not only have to configure it properly and securely but also need to consider billing. Looks a bit too much to me personally!
Why Forge?
Simply put, because I don't have to worry about managing all these services, handling configurations, ensuring security, or keeping track of billing. With Forge, I can skip the tedious tasks of checking, testing, and monitoring infrastructure. Instead, I can direct all my focus towards development, enabling me to kickstart my projects with incredible speed.
I hope this doesn't come across as overly promotional - I'm not receiving any compensation for this! ??
How?
Atlassian offers an excellent library of examples, a well-organized documentation portal, and consistently updates their own components. You have the option to utilize Forge UI, which closely mirrors the look and feel of Jira/Confluence, or opt for a custom UI using your preferred framework along with any bespoke components, graphs, and styles.
I chose the latter option. I preferred the freedom to incorporate additional customizations not available in Forge UI. While this decision posed some challenges, nothing has been overly complex or tedious so far.
Limitations and challenges
One of the initial challenges I encountered was the maximum runtime limit of 25 seconds (55 seconds for async events) imposed by Atlassian Forge. In contrast, AWS Lambda functions, for instance, can run for up to 15 minutes. To address this limitation, I'm currently delving into the usage of queues, a concept I'm still in the process of mastering. Additionally, considerations such as invocations, data return volume, and other platform limitations/quotas also need to be taken into account. These factors require careful planning and adaptation within the Forge environment.
领英推荐
When opting for a custom UI, one of the challenges I encountered was the need to reimplement certain components from the Forge UI Kit. The first component I tackled was the User Picker field, which required some time and effort to find the best approach. Currently, I've settled on using a mention/select component from my chosen framework, integrating it with the API through the requestJira bridge method. This solution provides the functionality I need while ensuring compatibility with my custom UI.
Another tricky aspect for me was dealing with data storage and utilizing Forge Query. It operates similarly to a Dynamo-style database, which took some getting used to. One notable challenge is that you can't retrieve all objects from a table in a single request; it's limited to 20 per query, necessitating the use of a "cursor" to fetch the next batch of data. While the overall concept was somewhat unfamiliar to me at first, it's likely not entirely new for seasoned developers.
Additionally, it's crucial to invest time in app design. One key consideration is that you can't alter the type of data you intend to store or modify or remove any indexes once they're deployed. This necessitates careful planning and foresight to ensure your app's design aligns with your long-term objectives.
The end?
No, the journey just beggins!
My journey with Atlassian Forge has been a blast so far, with some interesting challenges along the way. Although there have been obstacles, none have been too difficult to overcome. In fact, they've added to the excitement of learning. Looking forward, I'm excited to dive deeper into Forge and create few more apps.
I encourage others to give it a try—it's a rewarding adventure with plenty of room for exploration and creativity.
Links
Storage API and Query
Product Manager at Atlassian
6 个月Thanks for sharing Igor! We're working on many of those limitations too, stay tuned for some big improvements this year ??