SlideShare una empresa de Scribd logo
1 de 67
Descargar para leer sin conexión
Bringing Server Add-ons
to the Cloud
And Back again - our story of ScriptRunner for JIRA Cloud
ADAM MARKHAM | JON MORT | ADAPTAVIST | @ADAPTAVIST
ADAPTAVIST SCRIPTRUNNER
DEVELOPMENT TIMELINE
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
Write plugins
without writing a
plugin using
Groovy
SCRIPTRUNNER
Automate and Extend
Enhance Workflows
Dynamic Content
Event Handlers
Customise UI
Advanced Queries
REST Endpoints
Scheduled Tasks
JQL
Bundled JQL Functions - issueFunction
Powerful reporting
Built in Scripts
Bulk Fix Resolutions, Copy Project, Synchronise
Versions between projects, Manage watchers
Workflow
JQL Conditions, Simple Validators, Send Email,
Fast Track Transition, Create Sub-task, Clone
Bundled Macros
Include Version, CQL Search, Markdown,
Currency Converter
Built in Scripts
Copy Space, Bulk Delete Attachments/Comments,
Rename Labels, Change Author
Content Management
Add a comment to outdated pages, Prune Pages
Merge Checks
Require Approvers, Enforce JIRA Issue Key,
Restrict Target Branch, Block Out of Date PRs
Hooks
Protect Refs, Standards Enforcement, Trusted
Authors, Restrict File Size, Send Mail, Messages
Administrative
Mirror Bitbucket Cloud or Github, Clone
Repository, Naming Standards Enforcement, Auto
Add Tasks, Withdraw Approvals on Change
Take (allthethings) from
ScriptRunner Server to
the Cloud
GOAL
DEVELOPMENT TIMELINE
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
DEVELOPMENT TIMELINE - AUGUST
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
August
ShipIt
Result
Tech Stack
Where next for ScriptRunner?
Atlassian Cloud of course
Which app?
JIRA first
But how to bring it to Cloud?
Many challenges - mostly deferred
August
What did we ship?
Scripted Workflow Post Functions
Script Console
Hacky JQL Function workaround
ShipIt
Result
Tech Stack
In a nutshell
Remote code exploitation
August
The Choices
Play
Atlassian Connect Express (ACE)
We chose to do it our way
Ratpack
Why not use Play or ACE?
Groovy - written by users
Control
SR is not like anything else (or is it?)
Result
Tech Stack
ShipIt
RATPACK
Ratpack is a set of Java libraries for building modern
HTTP applications.
It provides just enough for writing practical, high
performance, apps.
It is built on Java 8, Netty
and reactive principles.
JVM
Great Groovy support.
All the libraries we know.
Lightweight
No application server. Single executable Jar.
And fast.
Asynchronous
Concurrent request processing.
Connect is inherently async
JVM
Great Groovy support.
All the libraries we know.
Lightweight
No application server. Single executable Jar.
And fast.
Asynchronous
Concurrent request processing.
Connect is inherently async
JVM
Great Groovy support.
All the libraries we know.
Lightweight
No application server. Single executable Jar.
And fast.
Asynchronous
Concurrent request processing.
Connect is inherently async
Ratpack in Java
public static void main(String... args) throws Exception {
RatpackServer.start(server -> server
.serverConfig(ServerConfig.embedded()
.publicAddress(new URI("http://company.org")))
.registryOf(registry -> registry.add("World!"))
.handlers(chain -> chain
.get(ctx -> ctx.render("Hello " + ctx.get(String.class)))
.get(":name", ctx ->
ctx.render("Hello " + ctx.getPathTokens().get("name") + "!"))
)
);
}
Ratpack in Groovy
ratpack {
serverConfig { it.publicAddress(new URI("http://company.org")) }
bindings {
add "World"
}
handlers {
get { String world ->
render "Hello ${world}!"
}
get(":name") {
render "Hello ${pathTokens.name}!"
}
}
}
DEVELOPMENT TIMELINE - AUGUST
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
DEVELOPMENT TIMELINE - JANUARY
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
Port not a Fork
Three
Categories
of Feature
Re-implement
Re-think
Can’t Do
Cloud is different, but similar
Some extension points don’t exist on Cloud, others are
different
Same Concepts
Good mapping from Server to Cloud so we can just re-
implement using the same metaphors
Very few differences
There might be some differences but mostly they are
the same
Three
Categories
of Feature
Re-implement
Re-think
Can’t Do
No extension point
There is no direct extension point. We have to re-think
the feature to give a similar level of functionality
Calculated Custom Fields
Base need is to be able to update a field based on
other values. Custom field replaced by webhook based
update
JQL Extensions
Initially we thought we couldn’t do this. But using
Aliases and Filters we can get to a similar level of
functionality
Three
Categories
of Feature
Re-implement
Re-think
Can’t Do
Extension Point is missing
There are some things we just can’t do
Synchronous workflow interaction
Workflow conditions and validators are a no-go
Behaviours
We can’t inject Javascript onto the page
Workaround or Fix
Or just be comfortable that we can’t do it
Development Cycle
Running into limitations and frustrations
Shipping Often
Multiple times a day
Managing multiple environments
Code Sharing
Very little No code is shared between Cloud and
Server
Continuous Delivery
We are running on AWS with lots of automated
tests
We might be
doing
DevOps
now?
Shipping Often
Multiple times a day
Managing multiple environments
Code Sharing
Very little No code is shared between Cloud and
Server
Continuous Delivery
We are running on AWS with lots of automated
tests
We might be
doing
DevOps
now?
Shipping Often
Multiple times a day
Managing multiple environments
Code Sharing
Very little No code is shared between Cloud and
Server
Continuous Delivery
We are running on AWS with lots of automated
tests
We might be
doing
DevOps
now?
DEVELOPMENT TIMELINE - JANUARY
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
DEVELOPMENT TIMELINE - FEBRUARY
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
JQL and Custom Field Ideas
Talking through with Atlassian Devs about how
we can achieve feature parity and knock off
some of the rough edges
HipChat Spike
8hrs to a working HipChat implementation
Confluence Support
Perpetually coming soon.
Scripted Macros
Connect
Week
JQL and Custom Field Ideas
Talking through with Atlassian Devs about how
we can achieve feature parity and knock off
some of the rough edges
HipChat Spike
8hrs to a working HipChat implementation
Confluence Support
Perpetually coming soon.
Scripted Macros
Connect
Week
JQL and Custom Field Ideas
Talking through with Atlassian Devs about how
we can achieve feature parity and knock off
some of the rough edges
HipChat Spike
8hrs to a working HipChat implementation
Confluence Support
Perpetually coming soon
Scripted Macros
Connect
Week
DEVELOPMENT TIMELINE - FEBRUARY
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
DEVELOPMENT TIMELINE - MAY
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
MARCH TILL MAY
Many
Distractions.
Demo for ShipIt
Live.
Your a SaaS
provider now
Not Just A Jar
Environment
Operations
Service not a Jar
Many more things to think about
Fewer versions to worry about
One version to rule them all
More control
Customers upgrade when you want and using
whatever technology you like
Your a SaaS
provider now
Not Just A Jar
Environment
Operations
Uptime
99% 99.9% 99.99%
Scaling
Load balancing your service
Services
Coping with third party outages
JIRA Cloud has daily maintenance windows
Your a SaaS
provider now
Not Just A Jar
Environment
Operations
0 downtime deployments
Customers must not notice when you deploy
Monitoring
Logs must be centralised and correlated
Metrics should be useful
Dashboards should be beautiful
Alerting
Choosing the right metrics to alert on is hard
Always be iterating on what wakes you up at night
DEVELOPMENT TIMELINE - JUNE
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sep Present
Connect Week
February
AtlasCamp
May
DEVELOPMENT TIMELINE - LAUNCH
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sep Present
Connect Week
February
AtlasCamp
May
in September
Running the Service
is a little scary
Real Customers
Need support
Have good ideas
Invalid expectations
Post Launch
We learned a lot!
Reporting
Marketplace has good tools for cloud
reporting. Conversion rates,
renewals, churn.
Customer Feedback
Changed our priorities. 

JQL is needed.
Evaluations
Paying customers after 30 days?
Nope
Promotions
Can we give it away or cheap for the
first 3 months?
December
You don’t get this on Server
Jars don’t just stop working
Logs are important
Lifeline in diagnosing what went wrong across
many different systems
Iterate Operations
Alerting needed improving. Increase tolerance
of failure
December
First outage
You don’t get this on Server
Jars don’t just stop working
Logs are important
Lifeline in diagnosing what went wrong across
many different systems
Iterate Operations
Alerting needed improving. Increase tolerance
of failure
December
First outage
You don’t get this on Server
Jars don’t just stop working
Logs are important
Lifeline in diagnosing what went wrong across
many different systems
Iterate Operations
Alerting needed improving. Increase tolerance
to failure
December
First outage
Enhanced JQL
FEATURE IN DEPTH
issueFunction in hasComments(3)
numberOfComments = 3
issueFunction in commented("jmort")
commentedBy = "jmort"
issueFunction in linkedIssuesOf("project = FOO")
(can’t do yet)
ENHANCED JQL - SERVER
issueFunction in hasComments(3)
numberOfComments = 3
issueFunction in commented("jmort")
commentedBy = "jmort"
issueFunction in linkedIssuesOf("project = FOO")
(can’t do yet)
ENHANCED JQL - CLOUD
Launch
Took planning to ensure we had capacity and
we could monitor
Customer Feedback
Was immediate and positive
Getting it right
Nearly launched, pulled it and thought againJQL Aliases
Launch
Launch
Took planning to ensure we had capacity and
we could monitor
Customer Feedback
Was immediate and positive
Getting it right
Nearly launched, pulled it and thought againJQL Aliases
Launch
Launch
Took planning to ensure we had capacity and
we could monitor
Customer Feedback
Was immediate and positive
Getting it right
Nearly launched, pulled it and thought againJQL Aliases
Launch
Infrastructure
Lambda, SNS, SQS,
Cloud Watch, EC2,
ELB.
Must scale
Permissions
Add-on user must be
able to see all issues.
Issue Links
No webhook for
links, so we have to
work it out!
JRA-8505 Please!!!!
Initial Sync
We must crawl every
issue of every
instance.
What makes JQL so tricky?
JRA-8505
Please. Pretty Please. With a cherry on top.
DEVELOPMENT TIMELINE - SEPTEMBER
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sep Present
Connect Week
February
AtlasCamp
May
DEVELOPMENT TIMELINE - FUTURE
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sep Present
Connect Week
February
AtlasCamp
May
To the Server
Take JQL Aliases
to the Server
(allthethings)
Support Confluence,
HipChat, Bitbucket and Trello
The Future
What is the Same on Server
Support
Similar questions and use cases
Using the API
Atlassian Community
AUI/ADG
UI is the same libs
Metaphors
Same JIRA
Mostly the same…
Used for the same kinds of things
Marketplace
Same listing
Reviews
Reputation
Summary
Support
is easier in the cloud
One version, we have the logs
Ship faster
Features, bugs and bug fixes
To everyone
All at once
Cloud is another world
Connect has more freedom
P2 is easier to get things done
SaaS
is a totally different ball game
https://www.flickr.com/photos/kjarrett/8315033844
Join us in the Cloud
Thank you!
ADAM MARKHAM | JON MORT | ADAPTAVIST | @ADAPTAVIST
All stock images sourced from
https://www.pexels.com/
used under CC0
Creative Commons Zero (CC0) license

Más contenido relacionado

La actualidad más candente

Server Add-ons for Front-end Developers
Server Add-ons for Front-end DevelopersServer Add-ons for Front-end Developers
Server Add-ons for Front-end DevelopersAtlassian
 
Integration Testing on Steroids: Run Your Tests on the Real Things
Integration Testing on Steroids: Run Your Tests on the Real ThingsIntegration Testing on Steroids: Run Your Tests on the Real Things
Integration Testing on Steroids: Run Your Tests on the Real ThingsAtlassian
 
Enterprise Ready - What's New in Data Center
Enterprise Ready - What's New in Data CenterEnterprise Ready - What's New in Data Center
Enterprise Ready - What's New in Data CenterAtlassian
 
Unleashing Docker with Pipelines in Bitbucket Cloud
Unleashing Docker with Pipelines in Bitbucket CloudUnleashing Docker with Pipelines in Bitbucket Cloud
Unleashing Docker with Pipelines in Bitbucket CloudAtlassian
 
Software Delivery at Warp Speed: Five Essential Techniques
Software Delivery at Warp Speed: Five Essential TechniquesSoftware Delivery at Warp Speed: Five Essential Techniques
Software Delivery at Warp Speed: Five Essential TechniquesAtlassian
 
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...Vadym Kazulkin
 
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...Vadym Kazulkin
 
5 Essential Techniques for Building Fault-tolerant Systems
5 Essential Techniques for Building Fault-tolerant Systems5 Essential Techniques for Building Fault-tolerant Systems
5 Essential Techniques for Building Fault-tolerant SystemsAtlassian
 
DevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver FasterDevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver FasterAmazon Web Services
 
Building Faster With Your Team's UI Kit
Building Faster With Your Team's UI KitBuilding Faster With Your Team's UI Kit
Building Faster With Your Team's UI KitAtlassian
 
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...Vadym Kazulkin
 
Integrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software CloudIntegrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software CloudAtlassian
 
An Exploration of Cross-product App Experiences
An Exploration of Cross-product App ExperiencesAn Exploration of Cross-product App Experiences
An Exploration of Cross-product App ExperiencesAtlassian
 
Accelerating DevOps Pipelines with AWS
Accelerating DevOps Pipelines with AWSAccelerating DevOps Pipelines with AWS
Accelerating DevOps Pipelines with AWSAmazon Web Services
 
DevOps, Continuous Integration and Deployment on AWS
DevOps, Continuous Integration and Deployment on AWSDevOps, Continuous Integration and Deployment on AWS
DevOps, Continuous Integration and Deployment on AWSAmazon Web Services
 
Transporting Data at Warp Speed: How to Connect Spring Boot Apps Quickly, Pow...
Transporting Data at Warp Speed: How to Connect Spring Boot Apps Quickly, Pow...Transporting Data at Warp Speed: How to Connect Spring Boot Apps Quickly, Pow...
Transporting Data at Warp Speed: How to Connect Spring Boot Apps Quickly, Pow...VMware Tanzu
 
Practical Patterns for Developing a Cross-product Cross-version App
Practical Patterns for Developing a Cross-product Cross-version AppPractical Patterns for Developing a Cross-product Cross-version App
Practical Patterns for Developing a Cross-product Cross-version AppAtlassian
 
How Atlassian Scales Bitbucket Data Center on AWS
How Atlassian Scales Bitbucket Data Center on AWSHow Atlassian Scales Bitbucket Data Center on AWS
How Atlassian Scales Bitbucket Data Center on AWSAtlassian
 

La actualidad más candente (20)

Server Add-ons for Front-end Developers
Server Add-ons for Front-end DevelopersServer Add-ons for Front-end Developers
Server Add-ons for Front-end Developers
 
Integration Testing on Steroids: Run Your Tests on the Real Things
Integration Testing on Steroids: Run Your Tests on the Real ThingsIntegration Testing on Steroids: Run Your Tests on the Real Things
Integration Testing on Steroids: Run Your Tests on the Real Things
 
Enterprise Ready - What's New in Data Center
Enterprise Ready - What's New in Data CenterEnterprise Ready - What's New in Data Center
Enterprise Ready - What's New in Data Center
 
Unleashing Docker with Pipelines in Bitbucket Cloud
Unleashing Docker with Pipelines in Bitbucket CloudUnleashing Docker with Pipelines in Bitbucket Cloud
Unleashing Docker with Pipelines in Bitbucket Cloud
 
Software Delivery at Warp Speed: Five Essential Techniques
Software Delivery at Warp Speed: Five Essential TechniquesSoftware Delivery at Warp Speed: Five Essential Techniques
Software Delivery at Warp Speed: Five Essential Techniques
 
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
 
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
 
AWS CodeDeploy
AWS CodeDeployAWS CodeDeploy
AWS CodeDeploy
 
5 Essential Techniques for Building Fault-tolerant Systems
5 Essential Techniques for Building Fault-tolerant Systems5 Essential Techniques for Building Fault-tolerant Systems
5 Essential Techniques for Building Fault-tolerant Systems
 
DevOps on AWS
DevOps on AWSDevOps on AWS
DevOps on AWS
 
DevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver FasterDevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver Faster
 
Building Faster With Your Team's UI Kit
Building Faster With Your Team's UI KitBuilding Faster With Your Team's UI Kit
Building Faster With Your Team's UI Kit
 
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
 
Integrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software CloudIntegrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software Cloud
 
An Exploration of Cross-product App Experiences
An Exploration of Cross-product App ExperiencesAn Exploration of Cross-product App Experiences
An Exploration of Cross-product App Experiences
 
Accelerating DevOps Pipelines with AWS
Accelerating DevOps Pipelines with AWSAccelerating DevOps Pipelines with AWS
Accelerating DevOps Pipelines with AWS
 
DevOps, Continuous Integration and Deployment on AWS
DevOps, Continuous Integration and Deployment on AWSDevOps, Continuous Integration and Deployment on AWS
DevOps, Continuous Integration and Deployment on AWS
 
Transporting Data at Warp Speed: How to Connect Spring Boot Apps Quickly, Pow...
Transporting Data at Warp Speed: How to Connect Spring Boot Apps Quickly, Pow...Transporting Data at Warp Speed: How to Connect Spring Boot Apps Quickly, Pow...
Transporting Data at Warp Speed: How to Connect Spring Boot Apps Quickly, Pow...
 
Practical Patterns for Developing a Cross-product Cross-version App
Practical Patterns for Developing a Cross-product Cross-version AppPractical Patterns for Developing a Cross-product Cross-version App
Practical Patterns for Developing a Cross-product Cross-version App
 
How Atlassian Scales Bitbucket Data Center on AWS
How Atlassian Scales Bitbucket Data Center on AWSHow Atlassian Scales Bitbucket Data Center on AWS
How Atlassian Scales Bitbucket Data Center on AWS
 

Destacado

How Bitbucket Pipelines Loads Connect UI Assets Super-fast
How Bitbucket Pipelines Loads Connect UI Assets Super-fastHow Bitbucket Pipelines Loads Connect UI Assets Super-fast
How Bitbucket Pipelines Loads Connect UI Assets Super-fastAtlassian
 
Building Search for Bitbucket Cloud
Building Search for Bitbucket CloudBuilding Search for Bitbucket Cloud
Building Search for Bitbucket CloudAtlassian
 
Securing Your Atlassian Connect Add-on With JWT
Securing Your Atlassian Connect Add-on With JWTSecuring Your Atlassian Connect Add-on With JWT
Securing Your Atlassian Connect Add-on With JWTAtlassian
 
How to Plan and Execute a Go-to-market Campaign for an Atlassian Add-on
How to Plan and Execute a Go-to-market Campaign for an Atlassian Add-onHow to Plan and Execute a Go-to-market Campaign for an Atlassian Add-on
How to Plan and Execute a Go-to-market Campaign for an Atlassian Add-onAtlassian
 
Adventures in Customization with Atlassian Add-ons and Integrations Using JIR...
Adventures in Customization with Atlassian Add-ons and Integrations Using JIR...Adventures in Customization with Atlassian Add-ons and Integrations Using JIR...
Adventures in Customization with Atlassian Add-ons and Integrations Using JIR...Atlassian
 
How to Make Customer Support Your Product's Greatest Feature
How to Make Customer Support Your Product's Greatest FeatureHow to Make Customer Support Your Product's Greatest Feature
How to Make Customer Support Your Product's Greatest FeatureAtlassian
 
Building for the Future: Design Your Add-on with Tomorrow in Mind
Building for the Future: Design Your Add-on with Tomorrow in MindBuilding for the Future: Design Your Add-on with Tomorrow in Mind
Building for the Future: Design Your Add-on with Tomorrow in MindAtlassian
 
Marketplace Listings: How to Make Yours a Success
Marketplace Listings: How to Make Yours a SuccessMarketplace Listings: How to Make Yours a Success
Marketplace Listings: How to Make Yours a SuccessAtlassian
 
Launch into New Markets with JIRA Service Desk
Launch into New Markets with JIRA Service DeskLaunch into New Markets with JIRA Service Desk
Launch into New Markets with JIRA Service DeskAtlassian
 
How to Build a Better JIRA Add-on
How to Build a Better JIRA Add-onHow to Build a Better JIRA Add-on
How to Build a Better JIRA Add-onAtlassian
 
Connect First, Ask Confluence Questions Later
Connect First, Ask Confluence Questions LaterConnect First, Ask Confluence Questions Later
Connect First, Ask Confluence Questions LaterAtlassian
 
Creating Your Own Server Add-on that Customizes Confluence or JIRA
Creating Your Own Server Add-on that Customizes Confluence or JIRACreating Your Own Server Add-on that Customizes Confluence or JIRA
Creating Your Own Server Add-on that Customizes Confluence or JIRAAtlassian
 
Know Thy Product: Tips from a Tester
Know Thy Product: Tips from a TesterKnow Thy Product: Tips from a Tester
Know Thy Product: Tips from a TesterAtlassian
 
Closing the Deal: How Atlassian Partners Help Grow Your User Base
Closing the Deal: How Atlassian Partners Help Grow Your User BaseClosing the Deal: How Atlassian Partners Help Grow Your User Base
Closing the Deal: How Atlassian Partners Help Grow Your User BaseAtlassian
 
Designing Add-ons for Atlassian Products, the Do’s & Don’ts
Designing Add-ons for Atlassian Products, the Do’s & Don’tsDesigning Add-ons for Atlassian Products, the Do’s & Don’ts
Designing Add-ons for Atlassian Products, the Do’s & Don’tsAtlassian
 
Beyond Agile and DevOps: From Concepts to Products in Weeks, Not Months
Beyond Agile and DevOps: From Concepts to Products in Weeks, Not MonthsBeyond Agile and DevOps: From Concepts to Products in Weeks, Not Months
Beyond Agile and DevOps: From Concepts to Products in Weeks, Not MonthsAtlassian
 

Destacado (16)

How Bitbucket Pipelines Loads Connect UI Assets Super-fast
How Bitbucket Pipelines Loads Connect UI Assets Super-fastHow Bitbucket Pipelines Loads Connect UI Assets Super-fast
How Bitbucket Pipelines Loads Connect UI Assets Super-fast
 
Building Search for Bitbucket Cloud
Building Search for Bitbucket CloudBuilding Search for Bitbucket Cloud
Building Search for Bitbucket Cloud
 
Securing Your Atlassian Connect Add-on With JWT
Securing Your Atlassian Connect Add-on With JWTSecuring Your Atlassian Connect Add-on With JWT
Securing Your Atlassian Connect Add-on With JWT
 
How to Plan and Execute a Go-to-market Campaign for an Atlassian Add-on
How to Plan and Execute a Go-to-market Campaign for an Atlassian Add-onHow to Plan and Execute a Go-to-market Campaign for an Atlassian Add-on
How to Plan and Execute a Go-to-market Campaign for an Atlassian Add-on
 
Adventures in Customization with Atlassian Add-ons and Integrations Using JIR...
Adventures in Customization with Atlassian Add-ons and Integrations Using JIR...Adventures in Customization with Atlassian Add-ons and Integrations Using JIR...
Adventures in Customization with Atlassian Add-ons and Integrations Using JIR...
 
How to Make Customer Support Your Product's Greatest Feature
How to Make Customer Support Your Product's Greatest FeatureHow to Make Customer Support Your Product's Greatest Feature
How to Make Customer Support Your Product's Greatest Feature
 
Building for the Future: Design Your Add-on with Tomorrow in Mind
Building for the Future: Design Your Add-on with Tomorrow in MindBuilding for the Future: Design Your Add-on with Tomorrow in Mind
Building for the Future: Design Your Add-on with Tomorrow in Mind
 
Marketplace Listings: How to Make Yours a Success
Marketplace Listings: How to Make Yours a SuccessMarketplace Listings: How to Make Yours a Success
Marketplace Listings: How to Make Yours a Success
 
Launch into New Markets with JIRA Service Desk
Launch into New Markets with JIRA Service DeskLaunch into New Markets with JIRA Service Desk
Launch into New Markets with JIRA Service Desk
 
How to Build a Better JIRA Add-on
How to Build a Better JIRA Add-onHow to Build a Better JIRA Add-on
How to Build a Better JIRA Add-on
 
Connect First, Ask Confluence Questions Later
Connect First, Ask Confluence Questions LaterConnect First, Ask Confluence Questions Later
Connect First, Ask Confluence Questions Later
 
Creating Your Own Server Add-on that Customizes Confluence or JIRA
Creating Your Own Server Add-on that Customizes Confluence or JIRACreating Your Own Server Add-on that Customizes Confluence or JIRA
Creating Your Own Server Add-on that Customizes Confluence or JIRA
 
Know Thy Product: Tips from a Tester
Know Thy Product: Tips from a TesterKnow Thy Product: Tips from a Tester
Know Thy Product: Tips from a Tester
 
Closing the Deal: How Atlassian Partners Help Grow Your User Base
Closing the Deal: How Atlassian Partners Help Grow Your User BaseClosing the Deal: How Atlassian Partners Help Grow Your User Base
Closing the Deal: How Atlassian Partners Help Grow Your User Base
 
Designing Add-ons for Atlassian Products, the Do’s & Don’ts
Designing Add-ons for Atlassian Products, the Do’s & Don’tsDesigning Add-ons for Atlassian Products, the Do’s & Don’ts
Designing Add-ons for Atlassian Products, the Do’s & Don’ts
 
Beyond Agile and DevOps: From Concepts to Products in Weeks, Not Months
Beyond Agile and DevOps: From Concepts to Products in Weeks, Not MonthsBeyond Agile and DevOps: From Concepts to Products in Weeks, Not Months
Beyond Agile and DevOps: From Concepts to Products in Weeks, Not Months
 

Similar a Bringing Server Add-ons to the Cloud and Back Again

Karim Fanadka
Karim FanadkaKarim Fanadka
Karim FanadkaCodeFest
 
Best of Microsoft Dev Camp 2015
Best of Microsoft Dev Camp 2015Best of Microsoft Dev Camp 2015
Best of Microsoft Dev Camp 2015Bluegrass Digital
 
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020Matt Raible
 
Gradle(the innovation continues)
Gradle(the innovation continues)Gradle(the innovation continues)
Gradle(the innovation continues)Sejong Park
 
Spring Mvc,Java, Spring
Spring Mvc,Java, SpringSpring Mvc,Java, Spring
Spring Mvc,Java, Springifnu bima
 
Agile integration workshop Seattle
Agile integration workshop SeattleAgile integration workshop Seattle
Agile integration workshop SeattleJudy Breedlove
 
Wso2 product release webinar introducing jaggery
Wso2 product release webinar   introducing jaggeryWso2 product release webinar   introducing jaggery
Wso2 product release webinar introducing jaggeryWSO2
 
Cloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
Cloud-powered Continuous Integration and Deployment architectures - Jinesh VariaCloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
Cloud-powered Continuous Integration and Deployment architectures - Jinesh VariaAmazon Web Services
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Emerson Eduardo Rodrigues Von Staffen
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...Amazon Web Services
 
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.Otávio Santana
 
Keynote - Oleg Barenboim - ManageIQ Design Summit 2016
Keynote - Oleg Barenboim - ManageIQ Design Summit 2016Keynote - Oleg Barenboim - ManageIQ Design Summit 2016
Keynote - Oleg Barenboim - ManageIQ Design Summit 2016ManageIQ
 
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...Amazon Web Services
 
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel PartnersCraeg Strong
 
DevOps at Amazon: A Look at Our Tools and Processes
DevOps at Amazon: A Look at Our Tools and ProcessesDevOps at Amazon: A Look at Our Tools and Processes
DevOps at Amazon: A Look at Our Tools and ProcessesAmazon Web Services
 

Similar a Bringing Server Add-ons to the Cloud and Back Again (20)

Karim Fanadka
Karim FanadkaKarim Fanadka
Karim Fanadka
 
Best of Microsoft Dev Camp 2015
Best of Microsoft Dev Camp 2015Best of Microsoft Dev Camp 2015
Best of Microsoft Dev Camp 2015
 
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
 
Function as a Service
Function as a ServiceFunction as a Service
Function as a Service
 
Gradle(the innovation continues)
Gradle(the innovation continues)Gradle(the innovation continues)
Gradle(the innovation continues)
 
Spring Mvc,Java, Spring
Spring Mvc,Java, SpringSpring Mvc,Java, Spring
Spring Mvc,Java, Spring
 
Agile integration workshop Seattle
Agile integration workshop SeattleAgile integration workshop Seattle
Agile integration workshop Seattle
 
The Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian CockcroftThe Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian Cockcroft
 
Wso2 product release webinar introducing jaggery
Wso2 product release webinar   introducing jaggeryWso2 product release webinar   introducing jaggery
Wso2 product release webinar introducing jaggery
 
Cloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
Cloud-powered Continuous Integration and Deployment architectures - Jinesh VariaCloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
Cloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
 
Startup Best Practices on AWS
Startup Best Practices on AWSStartup Best Practices on AWS
Startup Best Practices on AWS
 
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
 
Keynote - Oleg Barenboim - ManageIQ Design Summit 2016
Keynote - Oleg Barenboim - ManageIQ Design Summit 2016Keynote - Oleg Barenboim - ManageIQ Design Summit 2016
Keynote - Oleg Barenboim - ManageIQ Design Summit 2016
 
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
 
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
 
Managing Your Cloud Assets
Managing Your Cloud AssetsManaging Your Cloud Assets
Managing Your Cloud Assets
 
DevOps at Amazon: A Look at Our Tools and Processes
DevOps at Amazon: A Look at Our Tools and ProcessesDevOps at Amazon: A Look at Our Tools and Processes
DevOps at Amazon: A Look at Our Tools and Processes
 
Continuous Testing
Continuous TestingContinuous Testing
Continuous Testing
 

Más de Atlassian

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020Atlassian
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020Atlassian
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App ShowcaseAtlassian
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UIAtlassian
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge RuntimeAtlassian
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceAtlassian
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge TriggersAtlassian
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeAtlassian
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelAtlassian
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemAtlassian
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the HoodAtlassian
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAtlassian
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginAtlassian
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingAtlassian
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterAtlassian
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindAtlassian
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Atlassian
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsAtlassian
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamAtlassian
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in MindAtlassian
 

Más de Atlassian (20)

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App Showcase
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UI
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge Runtime
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User Experience
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge Triggers
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in Forge
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy Model
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI System
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the Hood
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIs
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the Building
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that Matter
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in Mind
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced Teams
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in Mind
 

Último

KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 

Último (20)

KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 

Bringing Server Add-ons to the Cloud and Back Again

  • 1. Bringing Server Add-ons to the Cloud And Back again - our story of ScriptRunner for JIRA Cloud ADAM MARKHAM | JON MORT | ADAPTAVIST | @ADAPTAVIST
  • 3. DEVELOPMENT TIMELINE ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 4. Write plugins without writing a plugin using Groovy SCRIPTRUNNER
  • 5. Automate and Extend Enhance Workflows Dynamic Content Event Handlers Customise UI Advanced Queries REST Endpoints Scheduled Tasks
  • 6. JQL Bundled JQL Functions - issueFunction Powerful reporting Built in Scripts Bulk Fix Resolutions, Copy Project, Synchronise Versions between projects, Manage watchers Workflow JQL Conditions, Simple Validators, Send Email, Fast Track Transition, Create Sub-task, Clone
  • 7. Bundled Macros Include Version, CQL Search, Markdown, Currency Converter Built in Scripts Copy Space, Bulk Delete Attachments/Comments, Rename Labels, Change Author Content Management Add a comment to outdated pages, Prune Pages
  • 8. Merge Checks Require Approvers, Enforce JIRA Issue Key, Restrict Target Branch, Block Out of Date PRs Hooks Protect Refs, Standards Enforcement, Trusted Authors, Restrict File Size, Send Mail, Messages Administrative Mirror Bitbucket Cloud or Github, Clone Repository, Naming Standards Enforcement, Auto Add Tasks, Withdraw Approvals on Change
  • 9. Take (allthethings) from ScriptRunner Server to the Cloud GOAL
  • 10. DEVELOPMENT TIMELINE ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 11. DEVELOPMENT TIMELINE - AUGUST ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 12. August ShipIt Result Tech Stack Where next for ScriptRunner? Atlassian Cloud of course Which app? JIRA first But how to bring it to Cloud? Many challenges - mostly deferred
  • 13. August What did we ship? Scripted Workflow Post Functions Script Console Hacky JQL Function workaround ShipIt Result Tech Stack In a nutshell Remote code exploitation
  • 14. August The Choices Play Atlassian Connect Express (ACE) We chose to do it our way Ratpack Why not use Play or ACE? Groovy - written by users Control SR is not like anything else (or is it?) Result Tech Stack ShipIt
  • 15. RATPACK Ratpack is a set of Java libraries for building modern HTTP applications. It provides just enough for writing practical, high performance, apps. It is built on Java 8, Netty and reactive principles.
  • 16. JVM Great Groovy support. All the libraries we know. Lightweight No application server. Single executable Jar. And fast. Asynchronous Concurrent request processing. Connect is inherently async
  • 17. JVM Great Groovy support. All the libraries we know. Lightweight No application server. Single executable Jar. And fast. Asynchronous Concurrent request processing. Connect is inherently async
  • 18. JVM Great Groovy support. All the libraries we know. Lightweight No application server. Single executable Jar. And fast. Asynchronous Concurrent request processing. Connect is inherently async
  • 19. Ratpack in Java public static void main(String... args) throws Exception { RatpackServer.start(server -> server .serverConfig(ServerConfig.embedded() .publicAddress(new URI("http://company.org"))) .registryOf(registry -> registry.add("World!")) .handlers(chain -> chain .get(ctx -> ctx.render("Hello " + ctx.get(String.class))) .get(":name", ctx -> ctx.render("Hello " + ctx.getPathTokens().get("name") + "!")) ) ); }
  • 20. Ratpack in Groovy ratpack { serverConfig { it.publicAddress(new URI("http://company.org")) } bindings { add "World" } handlers { get { String world -> render "Hello ${world}!" } get(":name") { render "Hello ${pathTokens.name}!" } } }
  • 21. DEVELOPMENT TIMELINE - AUGUST ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 22. DEVELOPMENT TIMELINE - JANUARY ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 23. Port not a Fork
  • 24. Three Categories of Feature Re-implement Re-think Can’t Do Cloud is different, but similar Some extension points don’t exist on Cloud, others are different Same Concepts Good mapping from Server to Cloud so we can just re- implement using the same metaphors Very few differences There might be some differences but mostly they are the same
  • 25. Three Categories of Feature Re-implement Re-think Can’t Do No extension point There is no direct extension point. We have to re-think the feature to give a similar level of functionality Calculated Custom Fields Base need is to be able to update a field based on other values. Custom field replaced by webhook based update JQL Extensions Initially we thought we couldn’t do this. But using Aliases and Filters we can get to a similar level of functionality
  • 26. Three Categories of Feature Re-implement Re-think Can’t Do Extension Point is missing There are some things we just can’t do Synchronous workflow interaction Workflow conditions and validators are a no-go Behaviours We can’t inject Javascript onto the page
  • 27. Workaround or Fix Or just be comfortable that we can’t do it Development Cycle Running into limitations and frustrations
  • 28. Shipping Often Multiple times a day Managing multiple environments Code Sharing Very little No code is shared between Cloud and Server Continuous Delivery We are running on AWS with lots of automated tests We might be doing DevOps now?
  • 29. Shipping Often Multiple times a day Managing multiple environments Code Sharing Very little No code is shared between Cloud and Server Continuous Delivery We are running on AWS with lots of automated tests We might be doing DevOps now?
  • 30. Shipping Often Multiple times a day Managing multiple environments Code Sharing Very little No code is shared between Cloud and Server Continuous Delivery We are running on AWS with lots of automated tests We might be doing DevOps now?
  • 31. DEVELOPMENT TIMELINE - JANUARY ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 32. DEVELOPMENT TIMELINE - FEBRUARY ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 33. JQL and Custom Field Ideas Talking through with Atlassian Devs about how we can achieve feature parity and knock off some of the rough edges HipChat Spike 8hrs to a working HipChat implementation Confluence Support Perpetually coming soon. Scripted Macros Connect Week
  • 34. JQL and Custom Field Ideas Talking through with Atlassian Devs about how we can achieve feature parity and knock off some of the rough edges HipChat Spike 8hrs to a working HipChat implementation Confluence Support Perpetually coming soon. Scripted Macros Connect Week
  • 35. JQL and Custom Field Ideas Talking through with Atlassian Devs about how we can achieve feature parity and knock off some of the rough edges HipChat Spike 8hrs to a working HipChat implementation Confluence Support Perpetually coming soon Scripted Macros Connect Week
  • 36. DEVELOPMENT TIMELINE - FEBRUARY ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 37. DEVELOPMENT TIMELINE - MAY ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 39. Your a SaaS provider now Not Just A Jar Environment Operations Service not a Jar Many more things to think about Fewer versions to worry about One version to rule them all More control Customers upgrade when you want and using whatever technology you like
  • 40. Your a SaaS provider now Not Just A Jar Environment Operations Uptime 99% 99.9% 99.99% Scaling Load balancing your service Services Coping with third party outages JIRA Cloud has daily maintenance windows
  • 41. Your a SaaS provider now Not Just A Jar Environment Operations 0 downtime deployments Customers must not notice when you deploy Monitoring Logs must be centralised and correlated Metrics should be useful Dashboards should be beautiful Alerting Choosing the right metrics to alert on is hard Always be iterating on what wakes you up at night
  • 42. DEVELOPMENT TIMELINE - JUNE ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sep Present Connect Week February AtlasCamp May
  • 43. DEVELOPMENT TIMELINE - LAUNCH ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sep Present Connect Week February AtlasCamp May
  • 45. Running the Service is a little scary Real Customers Need support Have good ideas Invalid expectations Post Launch
  • 46. We learned a lot! Reporting Marketplace has good tools for cloud reporting. Conversion rates, renewals, churn. Customer Feedback Changed our priorities. 
 JQL is needed. Evaluations Paying customers after 30 days? Nope Promotions Can we give it away or cheap for the first 3 months?
  • 48. You don’t get this on Server Jars don’t just stop working Logs are important Lifeline in diagnosing what went wrong across many different systems Iterate Operations Alerting needed improving. Increase tolerance of failure December First outage
  • 49. You don’t get this on Server Jars don’t just stop working Logs are important Lifeline in diagnosing what went wrong across many different systems Iterate Operations Alerting needed improving. Increase tolerance of failure December First outage
  • 50. You don’t get this on Server Jars don’t just stop working Logs are important Lifeline in diagnosing what went wrong across many different systems Iterate Operations Alerting needed improving. Increase tolerance to failure December First outage
  • 52. issueFunction in hasComments(3) numberOfComments = 3 issueFunction in commented("jmort") commentedBy = "jmort" issueFunction in linkedIssuesOf("project = FOO") (can’t do yet) ENHANCED JQL - SERVER
  • 53. issueFunction in hasComments(3) numberOfComments = 3 issueFunction in commented("jmort") commentedBy = "jmort" issueFunction in linkedIssuesOf("project = FOO") (can’t do yet) ENHANCED JQL - CLOUD
  • 54. Launch Took planning to ensure we had capacity and we could monitor Customer Feedback Was immediate and positive Getting it right Nearly launched, pulled it and thought againJQL Aliases Launch
  • 55. Launch Took planning to ensure we had capacity and we could monitor Customer Feedback Was immediate and positive Getting it right Nearly launched, pulled it and thought againJQL Aliases Launch
  • 56. Launch Took planning to ensure we had capacity and we could monitor Customer Feedback Was immediate and positive Getting it right Nearly launched, pulled it and thought againJQL Aliases Launch
  • 57. Infrastructure Lambda, SNS, SQS, Cloud Watch, EC2, ELB. Must scale Permissions Add-on user must be able to see all issues. Issue Links No webhook for links, so we have to work it out! JRA-8505 Please!!!! Initial Sync We must crawl every issue of every instance. What makes JQL so tricky?
  • 58. JRA-8505 Please. Pretty Please. With a cherry on top.
  • 59. DEVELOPMENT TIMELINE - SEPTEMBER ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sep Present Connect Week February AtlasCamp May
  • 60. DEVELOPMENT TIMELINE - FUTURE ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sep Present Connect Week February AtlasCamp May
  • 61. To the Server Take JQL Aliases to the Server (allthethings) Support Confluence, HipChat, Bitbucket and Trello The Future
  • 62. What is the Same on Server Support Similar questions and use cases Using the API Atlassian Community AUI/ADG UI is the same libs Metaphors Same JIRA Mostly the same… Used for the same kinds of things Marketplace Same listing Reviews Reputation
  • 63. Summary Support is easier in the cloud One version, we have the logs Ship faster Features, bugs and bug fixes To everyone All at once Cloud is another world Connect has more freedom P2 is easier to get things done SaaS is a totally different ball game
  • 65. Join us in the Cloud
  • 66. Thank you! ADAM MARKHAM | JON MORT | ADAPTAVIST | @ADAPTAVIST
  • 67. All stock images sourced from https://www.pexels.com/ used under CC0 Creative Commons Zero (CC0) license