Over a year ago, Tempo embarked on a journey to create a new version of Tempo Cloud specifically for JIRA. This initiative prompted Tempo to take the next step in its evolution to become a more customizable and flexible solution that not only integrates seamlessly with JIRA, but also establishes its own independent identity. The migration from Atlassian's cloud to their own cloud forced Tempo to completely review and greatly improve the process of their software delivery.
This talk will cover the process of moving Tempo’s technology out of a tightly coupled design into a more portable and scalable architecture while delivering feature parity with their server customers. You'll hear the story from the very beginning: from researching the best way to implement their products in the cloud, to architectural decisions, to scaling and operations. You'll walk away understanding what such a move can mean for products, company culture, and future growth.
Björn Guðmundsson, Team Lead, Tempo
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Tempo’s Journey Into the Cloud
1. From Atlassian cloud to Tempo cloud… and migrate 9,000 customers
BJÖRN GUÐMUNDSSON | TEAM LEAD | TEMPO | @TEMPOHQ
Tempo’s Journey to the Cloud
2. A little over a year ago, we began
our biggest project yet - to create
a new version of Tempo cloud for
JIRA specifically
To unbundle the
Tempo suite from
existing codebase
and rewrite the UI
5. Tempo facts
Partners
Over 120 Atlassian expert partners
worldwide
Tempo team
Over 90 employees from 10
nationalities
Global company
With offices in Reykjavík, IS,
Montréal, CA, and San Fransisco, US
Customers
Over 10,000 customers in over 115
countries
6. TEMPO’S TIMELINE
Tempo 1.0
released internally
Tempo is launched on the
international marketplace
Tempo is one of the first
vendors available on the
Atlassian Marketplace
Tempo Planner 1.0 is
released
2007 2009 2012 2014 2015
Tempo and Folio join forces
(rebranded Tempo Budgets)
Tempo cloud
Present
7. In fact, this project started 3
years ago when we formed
“The Infrastructure Team”
HUMBLE BEGINNINGS
13. Migration
Migrate customers over to the new Tempo
cloud
What
needed to
be done?
Infrastructure and Tooling
Design an infrastructure capable of hosting the
Tempo product suite and the necessary tools to
manage it.
Unbundling
Move our technology out of a tightly coupled
design into a more portable and scalable
architecture.
15. Migration
Migrate customers over to the new Tempo
cloud
What
needed to
be done?
Infrastructure and Tooling
Design an infrastructure capable of hosting the
Tempo product suite and the necessary tools to
manage it.
Unbundling
Move our technology out of a tightly coupled
design into a more portable and scalable
architecture.
17. Buzzword Bingo
AWS
All the cool kids were on
AWS
Docker
Building block abstraction
Microservices
Scalability, flexibility and low
impact on other services
20. Tools
Monitoring
ELK, DataDog, PagerDuty and dare I
say it… Slack
Tools as API
All tools are written as APIs until we
can automate “all the things”
tempoc
Allowed for running a simulated
cloud environment on a developer’s
local computer.
K8s + RealEase
Allowed creating new releases,
visualising for change management,
running tests and deploying to
clusters
21. What
needed to
be done?
Infrastructure and Tooling
Design an infrastructure capable of hosting the
Tempo product suite and the necessary tools to
manage it.
Unbundling
Move our technology out of a tightly coupled
design into a more portable and scalable
architecture.
Migration
Migrate customers over to the new Tempo
cloud
22. What is Unbundling?
Data should be accessible
in the cloud
We stored a lot of data in JIRA
property table and had to move a lot
of it to other more accessible
locations
REST API
Due to heavy use of WebWorks views
a lot of information wasn’t accessible
via APIs
Pick a feature
Based on usage statistics and other
metrics
Build and introduce
abstractions
Abstract all and any contact points
with JIRA APIs or JIRA provided
information
23. Technologies of interest
ActiveObjects
We were able to reuse the entire DAL
with minor tweaks, but with some
technical debt
ReactJS
More modern approaches to building
a UI
WebWorks & velocity
templates
Quickly thrown out and replaced by a
Django based microservice
Jersey & Spring
Were facilitators in reuse strategy
26. What
needed to
be done?
Infrastructure and Tooling
Design an infrastructure capable of hosting the
Tempo product suite and the necessary tools to
manage it.
Unbundling
Move our technology out of a tightly coupled
design into a more portable and scalable
architecture.
Migration
Migrate customers over to the new Tempo
cloud
27. UX
Feature parity where
possible, equivalent and
intuitive UX where not
Performance
Sharding, DB performance
tuning and tenant
management
Migration highlights
Collaboration
with Atlassian
Infrastructure developed
just to facilitate migration of
customers
28. Custom fields
CustomField to JIRA
IssueFields
JQL
JQL functions and
filters
Gadgets
Gadgets to
Dashboard Items
Permissions
Simplify and
delegate
responsibility to JIRA
JIRA modules
31. Getting people
to work together
Things moved fast in the
cloud world, it’s hard to
appease everyone
Becoming a SaaS provider
DevOps &
production
teams
Going from delivering
artifacts to running our
own platform with 24/7
realtime monitoring
Redefining all of
our software
processes
QA, branching strategies and
continuous deployments
32. QA
Short feedback cycles vs
moving targets
Automation
Stable master, branching,
releasing, promotion
Testing
Unit, system, integration, UI
Continuous deployment preconditions
35. Lessons learned
Goal setting
Long term goal setting, short term
planning
Sleep is overrated?
Expectation management and
resource management are a tricky
thing
Upfront Design
Research brought us to an
architectural design that was a few
steps beyond our initial needs.
Culture shifts
While technical difficulties are hard,
getting large groups of people to
work together will always be the
most difficult part of software
development.
36. More lessons learned
Teams
Get a team that works well together.
Don't sacrifice team spirit for more
hands on deck. More people doesn't
mean more progress
Outsider perspective
Perspective from people that are
dealing with similar challenges were
invaluable
Visibility
If you don’t know what’s happening
you don’t know what’s wrong
Scaling is hard
Our choice of Docker containers in
conjunction with Kubernetes and a
lot of tooling gave us scaling and zero
downtime deployments