ujug 2013 architecture roundup with lucid software
DESCRIPTION
Lucid Software's lessons learned about architecture at the Utah Java User Group. 15 minute presentation by Derrick Isaacson, Director of Engineering, on sharding, session state, typed JavaScript, and ORMs.TRANSCRIPT
![Page 1: UJUG 2013 Architecture Roundup with Lucid Software](https://reader036.vdocument.in/reader036/viewer/2022081519/555b8647d8b42acd238b482d/html5/thumbnails/1.jpg)
UJUG Architecture Roundup
Derrick Isaacson, Director of Engineering
![Page 2: UJUG 2013 Architecture Roundup with Lucid Software](https://reader036.vdocument.in/reader036/viewer/2022081519/555b8647d8b42acd238b482d/html5/thumbnails/2.jpg)
Architectural History
![Page 3: UJUG 2013 Architecture Roundup with Lucid Software](https://reader036.vdocument.in/reader036/viewer/2022081519/555b8647d8b42acd238b482d/html5/thumbnails/3.jpg)
Paid
Free
TIE
North
Am
erica
Euro
peAsi
a
Oce
ania
Sout
h Am
erica
Africa
Unkno
wn
0
3000
60009000
Hours in editor by region
![Page 4: UJUG 2013 Architecture Roundup with Lucid Software](https://reader036.vdocument.in/reader036/viewer/2022081519/555b8647d8b42acd238b482d/html5/thumbnails/4.jpg)
![Page 5: UJUG 2013 Architecture Roundup with Lucid Software](https://reader036.vdocument.in/reader036/viewer/2022081519/555b8647d8b42acd238b482d/html5/thumbnails/5.jpg)
![Page 6: UJUG 2013 Architecture Roundup with Lucid Software](https://reader036.vdocument.in/reader036/viewer/2022081519/555b8647d8b42acd238b482d/html5/thumbnails/6.jpg)
Client State
![Page 7: UJUG 2013 Architecture Roundup with Lucid Software](https://reader036.vdocument.in/reader036/viewer/2022081519/555b8647d8b42acd238b482d/html5/thumbnails/7.jpg)
HMACpublic static String calculateRFC2104HMAC(String
data, String key)
{
SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), “HmacSHA1”);
Mac mac = Mac.getInstance(“HmacSHA1”);
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(data.getBytes());
return Encoding.EncodeBase64(rawHmac);
}
![Page 8: UJUG 2013 Architecture Roundup with Lucid Software](https://reader036.vdocument.in/reader036/viewer/2022081519/555b8647d8b42acd238b482d/html5/thumbnails/8.jpg)
Stateless
![Page 9: UJUG 2013 Architecture Roundup with Lucid Software](https://reader036.vdocument.in/reader036/viewer/2022081519/555b8647d8b42acd238b482d/html5/thumbnails/9.jpg)
![Page 10: UJUG 2013 Architecture Roundup with Lucid Software](https://reader036.vdocument.in/reader036/viewer/2022081519/555b8647d8b42acd238b482d/html5/thumbnails/10.jpg)
Don’t DDOS Yourself
• Use RESTful principles for correct status codes (5xx vs 4xx) so clients know when to rety.• Use correct headers:• Retry-After: 120
![Page 11: UJUG 2013 Architecture Roundup with Lucid Software](https://reader036.vdocument.in/reader036/viewer/2022081519/555b8647d8b42acd238b482d/html5/thumbnails/11.jpg)
Actors
![Page 12: UJUG 2013 Architecture Roundup with Lucid Software](https://reader036.vdocument.in/reader036/viewer/2022081519/555b8647d8b42acd238b482d/html5/thumbnails/12.jpg)
Typed (JavaScript) Code Pays Off
• Static type checking• Unused value detection• Dead code removal• Syntax validation• Style warnings• JS pitfalls detection
![Page 13: UJUG 2013 Architecture Roundup with Lucid Software](https://reader036.vdocument.in/reader036/viewer/2022081519/555b8647d8b42acd238b482d/html5/thumbnails/13.jpg)
Beware ORMs
Anorm
What does a framework really need?• Paremeterized queries• Simpler API than JDBC• Control over your queries
is Not an Object Relational Mapper
![Page 14: UJUG 2013 Architecture Roundup with Lucid Software](https://reader036.vdocument.in/reader036/viewer/2022081519/555b8647d8b42acd238b482d/html5/thumbnails/14.jpg)
Beware of Coddling Frameworks
![Page 15: UJUG 2013 Architecture Roundup with Lucid Software](https://reader036.vdocument.in/reader036/viewer/2022081519/555b8647d8b42acd238b482d/html5/thumbnails/15.jpg)
![Page 16: UJUG 2013 Architecture Roundup with Lucid Software](https://reader036.vdocument.in/reader036/viewer/2022081519/555b8647d8b42acd238b482d/html5/thumbnails/16.jpg)
Q & A
http://www.lucidchart.com/jobs