Software Development's?Macro-Trend Towards Micro-Services
Last week, we crammed 60 people into our offices at Sequoia to discuss a trend that most people have never heard of: microservices. Even those familiar with the term (usually developers) debate its significance, pointing out that the idea is not new (remember “service oriented architectures”?). But to us, it’s one of a handful of major trends re-shaping software development, on par with the public cloud or open source in its likely impact.
The idea behind microservices is that, rather than building large monolithic applications, development teams instead build apps as collections of loosely coupled services which operate autonomously. That’s harder than it sounds -- it requires a completely different approach to software development. Alex Roetter, who runs engineering at Twitter where he oversaw this transition, described it as like moving from a centrally planned economy to capitalism: in other words, it’s possible but difficult and messy, and if you get it wrong, the result is anarchy. He shared the set of rules that have worked for Twitter, as they broke up their single, unreliable application (known internally as the “Mono-Rail” because it was written in Ruby) into a collection of microservices.
As Martin Fowler pointed out, none of this is free: there’s a “micro services premium” that every team must pay from the additional complexity of building applications in this way. Moving to a microservices architecture not only creates new problems that did not previously exist, it also breaks things that worked before. Staying with Twitter as an example, it was a lot easier to test the Mono-Rail than the disparate set of services which succeeded it.
So why bother? Because, as Ben Golub from Docker explained, it can make development teams massively more productive: according to his numbers, with a microservices-based approach, teams can update apps 30 times more frequently and recover from failures 50% faster. New applications become easier to change (just add a new services and leverage everything that was built before), and existing apps become easier to maintain (re-write components without any risk to the whole). Essentially, by moving to microservices, you get better software more quickly, which becomes a competitive advantage. That was the case for Google and Amazon in the 2000s, as Bill Coughran and Tom Killalea helpfully explained. And it’s increasingly true today for some of the best new companies, such as Airbnb, Dropbox and Xoom, who also shared their experiences.
The attendees at yesterday's event were mainly from companies at different stages of deploying micro services, along with a handful of forward-thinking entrepreneurs. It's early days, and some areas are much more advanced than others. For example, monitoring microservices is a universal concern; in our breakout sessions, at least 3 companies had already built internal solutions and there was a detailed discussion of design tradeoffs. By contrast, few people are yet thinking about security, where the threat model remains unclear.
For those interested in learning more , Matt Miller, who's a thought-leader at Sequoia in this area, has shared key learnings from the sessions here. We have also published an updated version of our ecosystem chart (thanks to all for the great feedback), and -- for fun -- put together this graphic of tweets from the event.
Agile Product Leader | Application and Data Security
8 年No doubt that microservices has tremendous advantages in performance and resiliency. However, it brings interesting challenges to the table such as how to secure applications running microservices. These applications may be up only for a few seconds or even micro-seconds. Therefore, it is just impossible to protect them via behavioral based security solutions as it is impossible to form a baseline that is required by behavioral based security solutions.
CFO @ SIgnal12, Inc & Partner @ Spencer Trask & Co. | C-Suite Leader Specialized in CFO, Board Director, & CEO Roles
8 年This is good.
YOU Experiences, Datacenter, Network Transformation
9 年We can spend hours n hours on Monolithic or Micro. Small steps: This what makes Mini-applications attractive proposition. So it may be cost saving or time saving either ways n so on. Microservice is rewarding. Microservice is a long term opportunity. We need more Ruby's. Technology is asset so why make it confusing. Simplification is the key. I'm canonical, I love simple delights, lightweight protocols......REST. Please do not forget me: Business has only one function "Business of making Money." - Ashish Sondhi Keep Smiling Always.
CTO@ServiceTitan. Former SVP Of Engineering, Einstein at Salesforce . MBA finance (Wharton School)
9 年What's the buzz about? Micro-services are a common evolution of a software stack when the site/product (usually web has scaled beyond a few thousand visits a day and has more than a few unique functions available. This is almost a 10 year old concept very widely used in software technology companies.. am I missing something ?
Solar Powered; Self-organization towards Regeneration
9 年Interesting indeed - regarding "not so new": I believe these "microservices" come from the inherent distributed systems architecture which you are building against, e.g. it was (is?) Dynamo - a DHT-based mgmt system that keeps the AWS infrastructure running in a nimble way. We had a similar system (which never saw commercial light*): "Resource Management Framework" (RMF), you cannot build anything monolithic against such a system - so we also developed the services for it in a very nimble way: RSP - and immediately you come up with new business models (targeting the masses) because there is nothing old/monolithic holding you back anymore ;) But the main point is: there is no point in building microservices against your old/monolithic IT infrastructure! *The only memory I could find is here: Siemens Peer-to-Peer Technologies and their Industrial Application: https://drops.dagstuhl.de/opus/volltexte/2007/845/pdf/06131_abstracts_collection.845.pdf R.I.P RSP your time has come ;)