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
2. 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.
3. 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
4. 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 option
or is too expensive
We are cool partners
5. Why did we make it?
British Telecom, UK:
25,000 users
50 million issues with complex workflows
Another telecom, in Italy:
140 projects
100 issues added a day
1,000 users
complex workflows:
issues live in the system for many months
6. From the technical point of view, it is..
It is a source code patch to JIRA:
Enables caching with Infinispan
Extreme tuning at Lucene level
Removes the design barriers to multi-node
clustering
It is a complex build system
automated JIRA repackaging
short time reaction to new JIRA releases
cross-technology virtual appliances builds
Designed to ease deploy and maintenance
7. 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
caches
Each cache can be configured independently
Infinispan 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.
8. 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 performance
scaling vertically:
shared buffers across index reopening
pooled IndexSearchers
in-memory transactional writes
enables more low-level tuning patterns
and scaling horizontally:
Index stored in replicated/distributed memory (Infinispan)
11. Concerns with clustering
Internal caches
replication, distribution or invalidation with Infinispan
Internal state (configuration settings,...)
replication
Indexes
Infinispan distributed or replicated
File uploads (issue attachments)
use a shared filesystem
in future Scarlet might store files using Infinispan's
GridFS
http://www.infoq.com/articles/infinispan-gridfs
12. Concerns with clustering
Session replication
not implemented yet: in case the node you're connected
to is killed you'll have to login again.
Load balancer
any load balancer should work
mod_cluster is recommended when using Apache Httpd
Dynamic configuration of httpd workers
Server-side load balance factor calculation
http://www.jboss.org/mod_cluster
14. On a cloud...
Node automatic discovery might be problematic
Infinispan (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 credentials
2. the build system produces and registers a
preconfigured custom AMI
3. start many of them!
15. 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 back
you 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
16. Ease of management
No "special" nodes needed
no master node, no passive master
the Scarlet package installs exactly the same way as
standalone JIRA:
uncompress it
configure a datasource
configure the jira_home parameter
until we implement GridFS too
optionally, do some tuning
plenty of more options
All nodes activated in the same network will form a cluster
you might need to configure firewall and network
17. Upgrading to Scarlet from JIRA
1. replace the package, keep configuration files
2. start it!
previous indexes are detected and imported in Infinispan
a new table is added to your DB.
Scarlet just adds a
single table to your
existing schema.
From Scarlet to JIRA Nothing else is
changed in the
1. replace the package database, and
2. delete the extra table there's no need to
3. perform re-indexing change any
configuration files
either!
18. Plugin compatibility
With the ones tested so far no changes where needed, still
many plugins are untested and might need fixing.
Greenhopper works fine
Fisheye works fine
To plugin developers:
avoid to make your own cache
use JIRA's services
use JIRA's cache factories
we are available for help
if you can show us the code we can help even better
19. How to get it?
The package is free of charge for beta testers
pay for setup, tuning and testing time
atlassian@sourcesense.com
www.sourcesense.com/en/events/scarlet.html
scarlet.sourceforge.net