Get Lanyrd on your mobile (iPhone, Android and more) - check it out here

Polyglot platform & making big technology choices

A session at Barcamp 2 Salzburg 2011

DISCLAIMER: This talk is very opinionated.
DISCLAIMER: This talk's topic changed last night.

Node.js and Erlang are out of scope of that talk.

My colleague recently spoke on similar subject.. He called it

Adopting new sh#t

Why your technology stack matters a lot.
Why you should not be afraid to...
learn new things (languages or technology concepts)
experiment AND fail
convince people to use stuff
ask for other people's help
join OSS project
scratch your own itches
give people honest feedback
rince and repeat...

Travis-ci?
* Open Source Web application
* OSS Operations
* Being able to see what's going on in your build during the build
* Testing against multiple versions
* Amazingly evolving project
* Challenges every day
* Community contributing build boxes
* Survived several major refactorings
* Including 2 complete rewrites

Travis-CI, version 0.1
* Backbone
* Resque
* Vagrant

Travis-CI, evolving
* Backbone replaced with Sproutcore
* Vagrant replaced with direct VirtualBox API calls
* CRuby/MRI replaced with JRuby
* Resque replaced with AMQP!

For Travis-CI messaging changed the game
So it will for you...

New opportunities
* Background processing
* Scaling with ease
* Snap-in features, based on message consumption
* No more crazy APIs & ESBs (at least) for notifications
* Removing language constraints
* Making it Async!

AMQ whaa???
Advanced Message Queue Protocol

Three concepts:
* Channel - communication fiber
* Exchange - list of queue bindings & message destination
* Queue - list of queue bindings & message source

Routing is included and free!
Make sure you publish your messages, be it...
* Notification about processing
* Error/exception logging
* Finished job report

Write things from grounds up
* Interface
* Communication (fire messages)
* Backend (consume&process)

That was your first step towards Polyglot Platform!
The rest is your technology decisions...

Fact: for any project, you may not be able to make technology decisions _right_ form the day one. Sometimes you just don't know enough details.

Lufthansa project (closed-source), access control for airports
* Pure sockets (C code)
* Got replaced with LibEv (C code)
* Later - got replaced with EventMachine + FFI (Ruby code)
* Later - EventMachine got replaced with Cool.io

Making it right?
Well, so far we've been happy with choices we made, having...
What we use
* Nginx / NOT Apache
* Chef for provisioning
* ElasticSearch, instead of Solr, for full-text search
* MongoDB for back-end DB
* Google v8 on embedded ARM devices instead of pure C code
* AMQP, cross-compiled for ARM
* Clojure backend for all long-running jobs

Growing up from old pants (bigger apps)
* Can't be written in one and only language
* Different problems = different approaches
* Can't be just 1 application
* Divide et impera (divide and conquer)

There's no data that is worse than no data...
Track your app's activites
As much as you can, do it offline.

JVM is your friend
* No platform that has SO many libs
* No platform with SO many books written
* No platform SO widely adopted

JVM is your friend
* Clojure
* Scala
* JRuby
* (all that besides Java itself, of course)

Netty!

Make more friends!
* Clojure
* Noir
* Monger / CongoMongo
* Leiningen

Make more friends!
* Scala
* Play / Scalatra / Lift
* Casbah
* Akka

JodaTime <3

Don't make excuses about technologies. Most of time it is possible to convince your management.

No matter where you are: in bank, in lean startup or in insurance company.

Before you convince anyone...

So - get best of all worlds!
Learn from CoffeeScript, FP, Actors, NBIO, Node...

Invest in your future.
* MEAP (get the book before technology is outdated)
* Safaribooksonline (for always-good books)
* Buy Kindle.
* Buy an iPad! (man, it saved me lots of $$)

To read:
* Erlang Programming by Francesco Cesarini
* MEAP: AMQP in Action by Videla and Jason J.W. Williams
* Linux Programming Interface by Michael Kerrisk
* Linux Programming Interface by Michael Kerrisk
* Database Programming with JDBC & Java, Second Edition by George Reese
* Principles of Concurrent and Distributed Programming, Second Edition by M. Ben-Ari
* The Art of Multiprocessor Programming by Maurice Herlihy
* Funcional Programming for Java Developers

@ifesdjeen on twitter, ifesdjeen on Freenode, ifesdeen on github

About the speaker

This person is speaking at this event.
Alex P

Software quality freak. Ruby / Clojure / C hacker. @ClojureWerkz core team. Mostly distributed. bio from Twitter

Coverage of this session

Sign in to add slides, notes or videos to this session

Barcamp 2 Salzburg 2011

Austria Austria, Puch

28th29th October 2011

Tell your friends!

When

Time 11:10am12:10pm CET

Date Sat 29th October 2011

Short URL

lanyrd.com/skryd

Official event site

www.barcamp.at/…2011

View the schedule

Topics

See something wrong?

Report an issue with this session