2. CTO, CODER, ROCK CLIMBER
• current:
• Chief Technology Officer at Bidlab
• previous:
• IT Director at
InternetowyKantor.pl SA
• Software Architect / Project
Manager at Wolters Kluwer
Polska
• find out more (if you care):
• linkedin.com/in/bartoszbogacki
3. BIDLAB IS A DSP
DSP stands for Demand Side Platform
5. HOW ?
• Learn how generic solutions work
for the biggest in the industry:
• highscalability.com
• blog.twitter.com
• techblog.netflix.com
• codeascraft.com
• etc.
8. BE AWARETHAT
• There’s a lot of crappy blog posts
• There’s a lot of ugly shortcuts on Stack Overflow
• There’s a lot of poor quality comparison tests (comparing
apples and oranges, incorrectly measuring or not isolating
measured feature properly)
• Others have often different environment / data / usage
scenarios than you!
11. CHOOSE GOOD
TOOLS AND LIBRARIES
• Learn how it works …really!
• Learn what are the constraints and weak points
• Check if it is supported by active community
• Use open source or pay for support (startup
programs are for kamikaze)
12. USE CLOUD HOSTING BUT…
• Don’t get locked-in !!
• Always test machine performance (often)
• Monitor CPU steal time
• Decide what you need (IO / memory / cpu / storage)
• Be aware of roundtrip time
20. CACHE GUIDELINES
• If you deliver static content - do it from cache (like varnish)
• Use in memory database (like memcached or redis) to
cache data or subresults for your application
• Use lightweight inapp cache to lower communication cost
(like Guava Loading Cache)
• Have a strategy for feeding and invalidating of your cache at
each level
21. THINK ABOUT HA
• Have a HA plan, but do not implement, until you
really need it. Until then - do (and test) backups! :)
• Most of technologies that you would use have
recommended fault-tolerance solution, do not
invent it by yourself !
23. DON’T ASSUME !
• Use real, production data if you can!
• The real life is often more complex than you
thought at the beginning (typos, data consistency,
exceptions)
24. DO FUNCTIONAL &
PERFORMANCE TESTING
• Use great tools, don’t invent
the wheel
• xUnit
• soapui
• apache-benchmark (ab)
• jmeter
25. PROFILE EARLY & OFTEN
• Know your application from
the execution perspective
• Know your hotspots
• VisualVM !!
28. TUNE OPERATING SYSTEM
• Set sysctls for high load systems
• Set system limits for high load systems
• Don’t swap
29. TUNEYOUR GC
(IFYOU HAVE ONE ;)
• …or at least monitor it, to
know how it hits your
performance
• Monitor & tune GC of used
subsystems (Cassandra,
Tomcat, Hadoop,Apache-
Spark, etc.)
38. PUT AN EFFORTTO BUILD
AUTOMATED ENVIRONMENT
• To build your software (maven, gradle, etc.)
• To test your software (junit, soapui, jmeter, etc.)
• To deploy your software (jenkins)