There's a more recent version of this presentation here: http://www.slideshare.net/rewbs/atlascamp-2014-building-a-production-ready-connect-addon
Describes how to take an Atlassian Connect app all the way to production, including all the software as a service concerns that may be new to P2 plugin developers. Uses the "Who's Looking for OnDemand" add-on as an example. Presented at Sydney Connect Lab Week, 3rd Dec 2013.
4. Overview / Interactions
1. User requests view issue page, gets signed URL to addon for that user.
Handled by Connect
GET view issue page
User
AC add-on
signed URL to add-on
JIRA
OnDemand
5. Overview / Interactions
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.
OAuth validation handled by ac-play
Remember to key any persisted data by tenant!
GET iframe content
(with signature)
!
XHR
poller
User
AC add-on
JIRA
OnDemand
6. Overview / Interactions
1.
2.
User requests view issue page, gets signed URL to add-on for that user.
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.
Don’t use cookies to authenticate XHR requests.
Use @CheckValidToken instead!
PUT heartbeat
(XHR)
Viewer list
User
AC add-on
JIRA
OnDemand
12. 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
13. 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
•
•
14. Monitoring
•
•
•
Implement a Health Check
•
REST resource that runs sanity-checks & reports results
Monitor it (Pingdom, New Relic…)
Example:
http://whoslooking.herokuapp.com/healthcheck
(Checks Postgres & Redis connections, reports
config settings, resource usage…)
22. 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
23. 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