Last week I visited GOTO Amsterdam. There were some fantastic speakers talking about micro services. At Magnet.me we’re spending a lot of effort in transforming our monolithic application into micro services so we were curious to see if we were on the right track. Turns out we are, for which I’m very proud of the team. One talk in in particular stood out and gave me a new insight, which I’d like to share here.
The talk was by Fred George who presented this definition of micro services. I thought it was pretty accurate:
Principles of micro services according to @fgeorge52 #gotoams pic.twitter.com/89SvBAePXz
— Alex Nederlof (@alexnederlof) June 18, 2015
Fred told a very interesting story about rolling out new versions of micro services. He gave the example of a car rental company that had a micro service that was responsible for generating ads to show customers on the website. The system was connected via a message bus. Because the advertisement service was so small, it was easy for programmers to duplicate the micro service (literally just copy/paste it), optimize it, and then run the new version along side the older version. This sounded very wrong and horrible to me at first, because you’re duplicating code, and you’d have to “maintain” two versions of a service. But then Fred shed some light on the potentially huge benefits.
After Tweeting some of the employees GitHub, the most popular online code hosting platform allowed us to visit one of their offices in San Francisco. GitHub was launched in 2008 and is truly a unique company. It has over 170 employees of which 60% work outside the office all over the world. Employees are encouraged to travel as much as they like. They have a big interactive table (photo) that shows where the employees are on a 3D map. Besides having complete freedom with your workplace and schedule, GitHub also doesn’t have any managers. Employees are expected to pick up work themselves and form their own teams. Everything happens distributively using online tools to form discussions and to arrange votes. From hiring new employees to choosing what kind of coffee mugs should be available in the kitchen; everything is democratic. Half the company looks like a Starbucks cafe for people who don’t care for a desk.
