DevOps poster child Netflix made a considerable move in December 2018 by adopting Pivotal’s Spring Boot. Being the most successful project with 3.4k stars on GitHub, this has raised a million questions. What is the Spring Boot? Why did Netflix invest in internal production to this extent if it had to make this move? What’s in store for the future? Doesn’t Apache Camel also fit the scene?
Then why is Pivotal better than Apache? Alternatively, is it? The list of questions is never-ending. However, we would try and answer a few of them in this article.
What is the Spring Boot?
Before we dive deeper into the article, you must understand what Spring Boot is. Spring boot helps create standalone applications that are production-ready. The whole purpose of their existence is to cut the fuss out, configure Spring libraries, and work on a no-code generation policy. To put it more formally, Spring Boot is an open-source Java framework that creates microservices.
The brainchild of the Pivotal team, Spring Boot, is a great way to ensure increased productivity, reduced development time, and ease of developing Spring applications. The main goals of Spring Boot, according to Pivotal, is to chuck out complex XML configuration, develop production-ready apps, reduce development time, run processes independently and offer more accessible ways of getting started.
Netflix before Spring Boot
In the year 2007, Netflix decided to go full cloud model. It started building its backend using Java. Here are the essential libraries and systems that came out of it:
Ribbon: It is a client inter process communication library which was essentially developed for load balancing. This library also facilitates fault tolerance, multiple protocol support (in an asynchronous model), caching, and batching. Ribbon modules include ribbon-eureka, ribbon-load balancer, ribbon-transport, ribbon-httpclient, ribbon-example, and ribbon-core. Netflix built this for load balancing, but the world used it for numerous other purposes.
Eureka: It is a REST-based service used in the AWS cloud to locate services, and that is exactly why Netflix built it. Apart from service location, it does several other crucial tasks, including Netflix Asgard (open-source service that makes cloud deployment a piece of cake), Cassandra deployment, Memcached caching services, and metadata related services. The build requires Java8.
Hystrix: Hystrix is latency and fault tolerance for distributed systems. While Ribbon provides fault tolerance, Hystrix was developed specifically for this person – and it isn’t us saying this but Taylor Wicksell, the Netflix tech guy.
Gubernator: Contrary to how it sounds like one of evil Dr. Doofenshmirtz evil – inators, it is a library that pulls everything together – Ribbon, Eureka, Hystrix and more. It basically enhances Google Guice’s performance. Built via Gradle, it was engineered for dependency injection throughout with lifetime management.
Archaius: That’s the configuration management API of Netflix. It provides dynamic properties, high throughput (i.e.more number of tasks per clock cycle) and thread-safe configuration, callback mechanism for when needed, JMX Mbean, composite configurations, Scala dynamic property wrappers and so much more! It works just like the endangered Archaius chameleons, changing configurations whenever things get unsafe.
Transitioning to Spring Boot
In 2015, it was pretty much the norm to use the Netflix developed libraries and stitch them up using Spring Boot. In fact, everyone except Netflix did this. In 2018, Netflix finally moved on and adopted the framework themselves. However, the question remains – why did they do this even after investing so much on the aforementioned tech stack?
According to Tom Cellucci, Senior Software Engineer at Netflix, “In the early 2010s, key requirements for Netflix cloud infrastructure were reliability, scalability, efficiency, and security. Lacking suitable alternatives, we created solutions in-house. Fast forward to 2018; the Spring product has evolved and expanded to meet all of these requirements, some through the usage and adaptation of Netflix’s very own software!” It means they are still using the high tech stack but are running it all on Spring Boot rather than in-house engineered frameworks. Spring Data, Spring Security, and Spring cloud AWS is what led Netflix to seal the deal.
Also, this is an official transition, which means even though Spring Boot is open source, Netflix collaborated with Pivotal to undertake this pivot. Howard Yuan and the team applauded Pivotal on its excellent response and support over GitHub, Gitter, and Slack, mentioning their will to continue the collaboration for a long time.
Netflix’s team of engineers has shown the utmost maturity in this transition, promising to contribute with great new technologies like the Netflix Adaptive Concurrency Limiters while getting rid of age-old Netflix tech and adapting popular community ones like the Spring cloud load balancer.
The effects of the transition
However, a major setback (although, is it really a setback?) to this transition was that Netflix put all of the above libraries ‘on maintenance.’ It means they would no longer release updates, fix issues actively, or collaborate to make these better. Barring these disappointing changes, the collaboration has been phenomenal, making Java exciting still.
This link started years ago outside Netflix and led to Netflix accepting it today. Before Spring Boot, Netflix was cold and trying to work hard on making this work as they do. Thankfully this Boot was the right size, and Netflix can now ease out and enjoy hot chocolate by the fireplace while developers have the time of their lives.
About the Author: