-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdropwizard-to-spring.html
More file actions
113 lines (107 loc) · 4.3 KB
/
Copy pathdropwizard-to-spring.html
File metadata and controls
113 lines (107 loc) · 4.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>reveal.js</title>
<link rel="stylesheet" href="css/reveal.css">
<link rel="stylesheet" href="css/theme/league.css">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="lib/css/zenburn.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<div class="reveal">
<div class="slides">
<section>
<h1>Case Study:</h1>
<h2>Replacing Dropwizard with Spring</h2>
</section>
<section>
<h2>What's a Dropwizard?</h2>
<ul>
<li>
<a href="https://dropwizard.io">Dropwizard</a> is "a java
framework for developing ops-friendly high performance
RESTful web services."
</li>
<li>
<a href="https://spring.io">Spring</a> Framework "provides
a comprehensive programming and configuration model for
modern java-based enterprise applications."
</li>
<li>
<a href="https://camel.apache.org">Apache Camel</a> is a
"versatile open-source integration framework based on
known Enterprise Integration Patterns."
</li>
</ul>
</section>
<section>
<h2>Why leave Dropwizard?</h2>
<ul>
<li>We weren't really writing RESTful webservices</li>
<li>We were already using Camel JMS, which is built on Spring
JMS</li>
<li>Springs support for termination protection is stronger</li>
<li>more future proof</li>
<li>
Spring is an industry standard (Helps with Recruiting,
Stack Overflow Searches)
</li>
</ul>
</section>
<section>
<h2>Hurdles we faced?</h2>
<ul>
<li>Configuration moved a YAML format into a different YAML or .properties file</a>
<li><a href="https://github.com/spscomerce/sps-java-shared">sps-java-shared</a>
SSM support is Dropwizard specific. Needed new SSM support.</li>
<li>Weblogic Connector in <a href="https://github.com/spscommerce/sps-java-shared">sps-java-shared</a>
is coupled to Dropwizard</li>
<li>DropWizard uses JDBI, but Spring uses JDBC Templates</li>
<li>Spring doesn't have native metrics, but <a href="https://micrometer.io/">micrometer</a> is almost a drop in replacement.</li>
</ul>
</section>
<section>
<h2>Continuing Hurdles</h2>
<ul>
<li>Spring Boot Autodiscovery feels like magic</li>
<li>Lack of institutional knowledge around Spring</li>
</ul>
</section>
<section>
<h2>Further reading?</h2>
<ul>
<li><a href="https://atlassian.spscommerce.com/wiki/display/TS/2019/01/23/Case+Study%3A+Replacing+Dropwizard+with+Spring">Blog post of this talk</a></li>
<li><a href="https://github.com/spscommerce/sps-spring-shared">sps-spring-shared</a></li>
<li><a href="https://github.com/spscommerce/toservice">ToService</a></li>
<li><a href="https://github.com/spscommerce/transformservice">TransformService</a></li>
</ul>
</section>
</div>
</div>
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.js"></script>
<script>
// More info about config & dependencies:
// - https://github.com/hakimel/reveal.js#configuration
// - https://github.com/hakimel/reveal.js#dependencies
Reveal.initialize({
dependencies: [
{ src: 'plugin/markdown/marked.js' },
{ src: 'plugin/markdown/markdown.js' },
{ src: 'plugin/notes/notes.js', async: true },
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
</script>
</body>
</html>