Building a Production Ready Atlassian Connect Add-On
-
Upload
robin-fernandes -
Category
Technology
-
view
1.864 -
download
3
description
Transcript of Building a Production Ready Atlassian Connect Add-On
Building a Production-Ready Connect Add-On
Robin Fernandes @rewbs / [email protected]
Who’s Looking?
Overview / Stack
Who’s Looking?
× many!
× many!
Overview / Interactions
User
JIRA OnDemand
AC add-on
1. User requests view issue page, gets signed URL to add-on for that user.
GET view issue page
signed URL to add-on
Handled by Connect
Overview / Interactions
User
JIRA OnDemand
AC add-on
1. User requests view issue page, gets signed URL to add-on for that user. 2. User requests add-on iframe content. Add-on validates
signature and processes request.
GET iframe content (with signature)
!XHR
poller
OAuth validation handled by ac-play
Remember to key any persisted data by tenant!
Overview / Interactions
User
JIRA OnDemand
AC add-on
1. User requests view issue page, gets signed URL to add-on for that user. 2. User requests add-on iframe content. Add-on validates signature and processes request. 3. Client issues XHR heartbeat requests. Add-on validates
requests and maintains viewer list.
PUT heartbeat (XHR)
Viewer list
Don’t use cookies to authenticate XHR requests.
Use @CheckValidToken instead!
Overview / Interactions
https://bitbucket.org/atlassian/whoslooking-connect
Hosting
Hosting on Heroku
Heroku facilitates scalability
Hosting on Heroku
Deploying to Heroku is a git push.
> git push heroku master
Hosting on Heroku
Rich add-on ecosystem
Testing
• Unit testing: business as usual • Browser integration tests: similar to P2
• Run add-on and host app locally • Use Atlassian SDK, WebDriver, Atlassian Page Objects…
• Run tests against a deployed add-on
• Add post-deployment verification tests • Reliable sanity tests • Must be runnable against a prod instance • Run after every deployment
Load Testing
• Load test on a single dyno, and extrapolate • Methodology similar to any web app: • Identify usage patterns • Use tool to generate load (e.g. Gatling)
• Use e.g. New Relic to monitor dyno under load
Monitoring
http://whoslooking.herokuapp.com/healthcheck
• Implement a Health Check • REST resource that runs sanity-checks & reports results
• Monitor it (Pingdom, New Relic…)
• Example:
(Checks Postgres & Redis connections, reports config settings, resource usage…)
Monitoring
Deployment
Automated Staged Deployments
whoslooking-dev. herokuapp.com
dev
run PDV tests
deploy
Automated Staged Deployments
whoslooking-stg. herokuapp.com
stg
run PDV tests
promote from dev to stg
Green dev deployment?
+ soak time
Automated Staged Deployments
whoslooking. herokuapp.com
run PDV tests
promote from dev to stg
All good on stg?
Automated Staged Deployments
Creating the MPAC listing
To build a production-ready Connect add-on...
• Design for multi-tenancy and horizontal scalability • Ensure deploying is easy • Make the most of 3rd party services
• Hosting, data stores, log analysis, backups, monitoring…
• Load test to help estimate running cost • Implement a health check resource & monitor it • Run post-deployment verification tests • Start simple
Who’s Looking Stats
2 Dynos 5 Add-ons (4 free, 1 paid) 432 active instances last week 7655 active users last week 2500 average rpm (~4500 peak) 160 ms average response time !
$44.50 / month