scarlet - scalable, redundant, cloud enabled jira

20

Click here to load reader

Upload: sanne-grinovero

Post on 06-May-2015

3.304 views

Category:

Technology


1 download

DESCRIPTION

Scarlet is a special edition of JIRA created to meet the demanding needs of customers Sourcesense has met as an Atlassian partner, sometimes in need to handle millions of issues, often requiring failover, all of them wanting top performance at low costs. Scarlet provides an enhanced service while it's as easy to install as any other JIRA instance. They will briefly describe the new architecture of Scarlet, explain why it has been hard to cluster JIRA, how the open source clustering stack (Infinispan) was combined with their favourite issue tracker and summarize the state of the project and what it can do for you.recording: http://confluence.atlassian.com/display/WEBINAR/Home

TRANSCRIPT

Page 1: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

SCARLETscalable cloud enabled JIRA

Sanne Grinovero, Sourcesense

Page 2: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

What is Scarlet

Scarlet is a custom edition of Atlassian JIRA for demanding customers, to scale both vertically and horizontally.

It solves the limitation of standalone JIRA to be deployed on a single node, applies some performance tuning, enables dynamic cluster resizing with automatic node discovery and failover.

Page 3: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

What Scarlet isn't

It's not a JIRA plugin

Doesn't need a cloud

Can scale down to one or zero nodes without data loss

Doesn't cost more than JIRA

Page 4: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

Why did we make it?

Some customers need failover for high availability

Having a single node makes maintenance harder

Sometimes vertical scaling is not an optionor is too expensive

We are cool partners

Page 5: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

Why did we make it?

British Telecom, UK:25,000 users50 million issues with complex workflows

Another telecom, in Italy:

140 projects100 issues added a day1,000 userscomplex workflows:

issues live in the system for many months

Page 6: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

From the technical point of view, it is..It is a source code patch to JIRA:

Enables caching with InfinispanExtreme tuning at Lucene levelRemoves the design barriers to multi-node clustering

It is a complex build systemautomated JIRA repackagingshort time reaction to new JIRA releases

cross-technology virtual appliances builds

Designed to ease deploy and maintenance

Page 7: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

Caching with

Infinispan is an extremely scalable, highly available data grid platform - 100% open source, and written in Java.

www.infinispan.org JIRA uses several dozens of special-purpose internal caches; almost all need a java.util.concurrent.ConcurrentMap, which is implemented by Infinispan

Scarlet detects and enables Infinispan on each of JIRA's cachesEach cache can be configured independentlyInfinispan uses state-of-the-art algorithms for maximum efficiency (such as Low Inter-reference Recency Set - LIRS eviction)Scarlet uses Infinispan' support for cache distribution, invalidation and replication for multi-node deployments.

Page 8: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

tuning & new strategies

JIRA's usage of Lucene needs to be flexible for all kind of customers: low, medium and high number of concurrent users. Scarlet takes advantage of some of the latest Lucene innovations to reach for peak performancescaling vertically:

shared buffers across index reopeningpooled IndexSearchersin-memory transactional writesenables more low-level tuning patterns

and scaling horizontally:

Index stored in replicated/distributed memory (Infinispan)

Page 9: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

Lucene index stored in Infinispan

Page 10: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

Infinispan: shared state, cache, index

Page 11: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

Concerns with clustering

Internal cachesreplication, distribution or invalidation with Infinispan

Internal state (configuration settings,...)

replication

IndexesInfinispan distributed or replicated

File uploads (issue attachments)

use a shared filesystemin future Scarlet might store files using Infinispan's GridFS

http://www.infoq.com/articles/infinispan-gridfs

Page 12: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

Concerns with clustering

Session replicationnot implemented yet: in case the node you're connected to is killed you'll have to login again.

Load balancer

any load balancer should workmod_cluster is recommended when using Apache Httpd

Dynamic configuration of httpd workersServer-side load balance factor calculationhttp://www.jboss.org/mod_cluster

Page 13: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

Scarlet with mod_cluster

Page 14: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

On a cloud...

Node automatic discovery might be problematicInfinispan (JGroups) has several ways to do it

start with a list of known IPs (TCPPING)use S3 (S3PING)setup a GossipRouter

We test Scarlet using RDS as database and index store (Amazon's MySQL as-a-service), S3PING for node autodiscovery:

1. provide EC2 credentials2. the build system produces and registers a

preconfigured custom AMI 3. start many of them!

Page 15: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

On a cloud...

Your nodes are "stateless", all equal:no important data on them

no need to backup the volatile node data you can kill some if you want to scale backyou can start new clones to scale up

All your important data is stored in a database

or S3 a single object to backup and manage

We have build targets to provide appliances for many virtualization environments (VMWare, Xen, KVM, ...)

Using BoxGrinder: http://www.jboss.org/boxgrinder.html

Page 16: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

Ease of managementNo "special" nodes needed

no master node, no passive master

the Scarlet package installs exactly the same way as standalone JIRA:

uncompress it configure a datasourceconfigure the jira_home parameter

until we implement GridFS toooptionally, do some tuning

plenty of more options

All nodes activated in the same network will form a clusteryou might need to configure firewall and network

Page 17: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

Upgrading to Scarlet from JIRA

1. replace the package, keep configuration files2. start it!

previous indexes are detected and imported in Infinispana new table is added to your DB.

From Scarlet to JIRA1. replace the package2. delete the extra table 3. perform re-indexing

Scarlet just adds a single table to your existing schema.Nothing else is changed in the database, and there's no need to change any configuration files either!

Page 18: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

Plugin compatibility

With the ones tested so far no changes where needed, still many plugins are untested and might need fixing.

Greenhopper works fineFisheye works fine

To plugin developers:

avoid to make your own cacheuse JIRA's servicesuse JIRA's cache factories

we are available for helpif you can show us the code we can help even better

Page 19: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

How to get it?

The package is free of charge for beta testers pay for setup, tuning and testing time

[email protected]

www.sourcesense.com/en/events/scarlet.html

scarlet.sourceforge.net

Page 20: Scarlet - Scalable, Redundant, Cloud Enabled JIRA

Combined best of breed OSS technologies