Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Scarlet - Scalable, Redundant, Cloud Enabled JIRA


Published on

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.


Published in: Technology
  • Be the first to comment

Scarlet - Scalable, Redundant, Cloud Enabled JIRA

  1. 1. SCARLET scalable cloud enabled JIRA Sanne Grinovero, Sourcesense
  2. 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. 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. 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. 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. 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. 7. Caching with Infinispan is an extremely scalable, highly available data grid platform - 100% open source, and written in Java. 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. 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)
  9. 9. Lucene index stored in Infinispan
  10. 10. Infinispan: shared state, cache, index
  11. 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
  12. 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
  13. 13. Scarlet with mod_cluster
  14. 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. 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:
  16. 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. 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. 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. 19. How to get it? The package is free of charge for beta testers pay for setup, tuning and testing time
  20. 20. Combined best of breed OSS technologies