Building a Production Ready Atlassian Connect Add-On

Post on 06-May-2015

1,864 views 3 download

description

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.

transcript

Building a Production-Ready Connect Add-On

Robin Fernandes @rewbs / robin@atlassian.com

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